简单的http服务器java

来源:互联网 发布:高洛峰php在线视频教程 编辑:程序博客网 时间:2024/06/06 04:12
package jiankongLinux;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class server2 {  public static void main(String[] args) {    try {      ServerSocket ss=new ServerSocket(8888);      while(true){        Socket socket=ss.accept();        BufferedReader bd=new BufferedReader(new InputStreamReader(socket.getInputStream()));                /**         * 接受HTTP请求         */        String requestHeader;        int contentLength=0;        while((requestHeader=bd.readLine())!=null&&!requestHeader.isEmpty()){          System.out.println(requestHeader);          /**           * 获得GET参数           */          if(requestHeader.startsWith("GET")){            int begin = requestHeader.indexOf("/?")+3;            int end = requestHeader.indexOf("HTTP/");            String condition=requestHeader.substring(begin, end);            System.out.println("GET参数是:"+condition);          }          /**           * 获得POST参数           * 1.获取请求内容长度           */          if(requestHeader.startsWith("Content-Length")){            int begin=requestHeader.indexOf("Content-Lengh:")+"Content-Length:".length();            String postParamterLength=requestHeader.substring(begin+1).trim();            contentLength=Integer.parseInt(postParamterLength);            System.out.println("POST参数长度是:"+Integer.parseInt(postParamterLength));          }        }        StringBuffer sb=new StringBuffer();        if(contentLength>0){          for (int i = 0; i < contentLength; i++) {            sb.append((char)bd.read());          }          System.out.println("POST参数是:"+sb.toString());        }        //发送回执        PrintWriter pw=new PrintWriter(socket.getOutputStream());                pw.println("HTTP/1.1 200 OK");        pw.println("Content-type:text/html");        pw.println();        pw.println("<h1>访问成功!</h1>");                pw.flush();        socket.close();      }    } catch (IOException e) {      e.printStackTrace();    }  }}
其中将String condition=requestHeader.substring(begin, end);中的condition截取出来,可以实现不同uri访问功能;
例如
uri=condition;if(uri.trim().equals("/config")){               PrintWriter pw=new PrintWriter(socket.getOutputStream());                pw.println("HTTP/1.1 200 OK");        pw.println("Content-type:text/plain");        pw.println();        pw.println(“config”);                pw.flush();                }if(uri.trim().equals("/vlan")){               PrintWriter pw=new PrintWriter(socket.getOutputStream());                pw.println("HTTP/1.1 200 OK");        pw.println("Content-type:text/plain");        pw.println();        pw.println(“vlan”);                pw.flush();                }
此时可以实现输入localhost:8888/vlan时返回vlan这个字符串,输入localhost:8888/config时会返回config这个字符串




0 0
原创粉丝点击