HttpServer, Request, Response
package com.iteye.wely.server; 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; /** * Created by shenhongxi on 16/3/21. */ public class HttpServer { public static final String WEB_ROOT = System.getProperty("user.dir") + File.separator + "ixhong-tomcat-web/src/main/webapp"; private static final String SHUTDOWN_COMMAND = "SHUTDOWN"; private boolean shutdown = false; public static void main(String[] args) { HttpServer server = new HttpServer(); System.out.println(WEB_ROOT); server.await(); } private void await() { ServerSocket serverSocket = null; int port = 8080; try { serverSocket = new ServerSocket(port, 1, InetAddress.getByName("127.0.0.1")); System.out.println("Server started!"); } catch (IOException e) { e.printStackTrace(); System.exit(1); } while (!shutdown) { Socket socket = null; InputStream input = null; OutputStream output = null; try { socket = serverSocket.accept(); input = socket.getInputStream(); output = socket.getOutputStream(); Request request = new Request(input); request.parse(); Response response = new Response(output); response.setRequest(request); response.sendStaticResource(); socket.close(); shutdown = request.getUri().equals(SHUTDOWN_COMMAND); } catch (Exception e) { e.printStackTrace(); continue; } } } }
package com.iteye.wely.server; import java.io.IOException; import java.io.InputStream; /** * Created by shenhongxi on 16/3/21. */ public class Request { private InputStream input; private String uri; // 性能考虑,用byte[] 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 requestStr) { // GET /index.html HTTP/1.1 // Accept: text/plain; text/html // ... int index1 = requestStr.indexOf(' '); int index2; if (index1 != -1) { index2 = requestStr.indexOf(' ', index1 + 1); if (index2 > index1) { return requestStr.substring(index1 + 1, index2); } } return null; } public String getUri() { return uri; } }
package com.iteye.wely.server; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; /** * Created by shenhongxi on 16/3/21. */ public class Response { private static final int BUFFER_SIZE = 1024; Request request; OutputStream output; 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) { output.write(bytes, 0, ch); ch = fis.read(bytes, 0, BUFFER_SIZE); } } else { String errorMsg = "HTTP/1.1 404 File Not Found\r\n" + "Content-Type: text/html\r\n" + "Content-Length: 23\r\n" + "\r\n" + "<h1>File Not Found</h1>"; output.write(errorMsg.getBytes()); } } catch (Exception e) { e.printStackTrace(); } finally { if (fis != null) { fis.close(); } } } public Response(OutputStream output) { this.output = output; } public void setRequest(Request request) { this.request = request; } }
相关推荐
简单Web服务器设计与实现.doc
实现一个简单的Web服务器程序——SimpleHTTPDemo,简称SHTTPD。这个Web服务器可以实现简单的用户配置、静态网页响应等功能。
简单搭建WEB服务器 简单搭建WEB服务器 简单搭建WEB服务器
一个简单的web服务器编程实例
守望简单web服务器
一个用java实现的简单web服务器的程序,用eclipse开发的
c#简单web服务器开发实例,通过HttpListener来实现
C#编写的简单web服务器 html服务器 asp服务器 aspx服务器
一个简单的多线程JAVA WEB服务器,实现静态网页以及简单JSP访问,cookie解析等。希望对想了解JAVA WEB服务器的同学有帮助
一个支持servlet的web服务器.rar
一个Go编写的简单Web服务器
1、建立简单WEB服务器 2、用于局域网,互相点对点传送文件 3、建立临时WEB服务器,供大家临时下载文件等 【使用方法】 启动软件后,需要作一些设置: 1. 设置WEB服务器的根目录(又称:主目录)。以后所有的HTTP...
Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务。同时使用这个包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和...
一个超级简单的web服务器,绿色无需安装,共享文件太方便了
一个简单的web服务器(python)
JAVA100例之实例50 一个简单的Web服务器
超简单的web服务器,打开程序后输入你网站的根目录 回车即可。要退出程序直接关闭程序就好。纯属测试用。服务器ip为本机ip,端口号为2233
是linux网络编程 清华大学出版社 第十八节
使用java,实现了一个类似tomcat的请求静态资源的web服务器。 下载可通过 intellij idea / eclipse 直接打开,无需修改。
易语言简易WEB服务器源码.rar