有没有大神会做简单的web server,用java来实现的

来源:3-4 完善用户登陆之服务器响应客户端

And_leafy

2017-10-26 10:21

我们老师布置的课程设计,已经做了两天了,还是做不出来。//img2.mukewang.com/59f146250001c1b210801920.jpg做了两天

写回答 关注

2回答

  • And_leafy
    2017-10-30 20:23:29
    哪位美丽帅气高端大气的资深大神可以帮忙用图像化界面来实现下面的代码吗?-此致,敬礼!


    package com.tomcat;  


    import java.io.File;  

    import java.io.IOException;  

    import java.io.InputStream;  

    import java.io.OutputStream;  

    import java.net.InetAddress;  

    import java.net.ServerSocket;  

    import java.net.Socket;  

     

    public class HttpServer {  

        public static final String  WEB_ROOT=System.getProperty("user.dir") + File.separatorChar + "webRoot";  

        private static final String SHUTDOWN_COMMAND = "/SHUTDOWN";  

        private boolean shutdown = false;  

        public static void main(String []args){  

            HttpServer server = new HttpServer();  

            server.await();  

        }  

        public void await(){  

            ServerSocket serverSocket = null;  

            int port = 8080;  

            try{  

                serverSocket = new ServerSocket(port,1,InetAddress.getByName("127.0.0.1"));  

            }catch(Exception e){  

                e.printStackTrace();  

                System.exit(1);  

            }  

            while(!shutdown){  

                Socket socket = null;  

                InputStream in = null;  

                OutputStream out = null;  

                try {  

                    socket = serverSocket.accept();  

                    in = socket.getInputStream();  

                    out = socket.getOutputStream();  

                    Request request = new Request(in);  

                    request.parse();  

                    Response response = new Response(out);  

                    response.setRequest(request);  

                    response.sendStaticResource();  

                    socket.close();  

                    shutdown = request.getUri().equals("SHUTDOWN_COMMAND");  

                } catch (IOException e) {  

                    e.printStackTrace();  

                    continue;  

                }  

            }  

        }  

    }  

    ----------------------------------------------------------------------------------------------------

    package com.tomcat;  

      

    import java.io.IOException;  

    import java.io.InputStream;  

      

    public class Request {  

        private InputStream input;  

        private String uri;  

        public Request(InputStream input){  

            this.input = input;  

        }  

        public void parse(){  

            StringBuffer request = new StringBuffer(2048);  

            int i;  

            byte [] buffer = new byte[2048];  

            try{  

                i = input.read(buffer);  

            }catch(IOException e){  

                e.printStackTrace();  

                i = -1;  

            }  

            for(int j=0;j<i;j++){  

                request.append((char)buffer[j]);  

            }  

            System.out.println(request.toString());  

            uri = parseUri(request.toString());  

        }  

        

        private String parseUri(String requestString){  

            int index1,index2;  

            index1 = requestString.indexOf(' ');  

            if(index1 != -1){  

                index2 = requestString.indexOf(' ', index1+1);  

                if(index2 > index1){  

                    return requestString.substring(index1+1,index2);  

                }  

            }  

            return null;  

        }  

        public String getUri(){  

            return uri;  

        }  

    }  

    ----------------------------------------------------------------------------

    package com.tomcat;  

      

    import java.io.File;  

    import java.io.FileInputStream;  

    import java.io.IOException;  

    import java.io.OutputStream;  

      

    public class Response {  

        private static final int BUFFER_SIZE=1024;  

        Request request;  

        OutputStream out;  

        public Response(OutputStream out){  

            this.out = out;  

        }  

        public void setRequest(Request request){  

            this.request = request;  

        }  

        public void sendStaticResource() throws IOException{  

            byte []bytes = new byte[BUFFER_SIZE];  

            FileInputStream fis = null;  

            try{  

                File file = new File(HttpServer.WEB_ROOT,request.getUri());  

                if(file.exists()){  

                    fis = new FileInputStream(file);  

                    int ch = fis.read(bytes, 0, BUFFER_SIZE);  

                    while(ch != -1){  

                        out.write(bytes,0,ch);  

                        ch = fis.read(bytes,0,BUFFER_SIZE);  

                    }  

                }else{  

                    String errorMessage = "HTTP/1.1 404 File Not Found\n" +   

                        "Content-Type:text/html\n" +  

                        "Content-Length:23\n" +  

                        "\n" +   

                        "<h1>File not Found</h1>";  

                    out.write(errorMessage.getBytes());  

                }   

            }catch(Exception e){  

                System.out.println(e.toString());  

            }finally{  

                if(fis != null)  

                    fis.close();  

            }  

        }  

    }  


  • 少时诵诗书aa
    2017-10-28 20:01:10

    坐等大神

Java Socket应用---通信是这样练成的

分享的是 Java 中的网络编程,使用Socket实现网络聊天通信

125013 学习 · 590 问题

查看课程

相似问题