问答详情
源自:3-4 完善用户登陆之服务器响应客户端

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

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

提问者:And_leafy 2017-10-26 10:21

个回答

  • 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

    坐等大神