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服务器设计与实现" 本文主要介绍了简单Web服务器的设计与实现,涵盖了WWW的工作原理、HTTP协议、Java语言、Web服务器的设计与实现等方面的知识点。 WWW的工作原理基于客户机/服务器计算模型,由Web浏览器...
在本资源中,我们主要探讨的是使用C#编程语言实现的一个简单Web服务器。这个Web服务器是初学者了解网络编程和HTTP协议的绝佳实践项目。通过分析和运行提供的源代码,你可以深入理解Web服务器的工作原理,并学习如何...
本文将详细介绍如何简单搭建一个WEB服务器,包括基础概念、所需工具及步骤,旨在帮助初学者快速入门。 一、Web服务器的基础概念 1. HTTP:HTTP是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本...
这个压缩包"Python项目源码7_简单的Web服务器.rar"显然包含了使用Python编写的一个简单Web服务器的源代码。让我们深入探讨一下这个主题。 首先,我们要理解Web服务器的基本概念。Web服务器是一种软件,它接收HTTP...
本项目是用C++实现的一个简单Web服务器,它能够处理GET请求,是学习多线程技术和网络编程的典型实例。 首先,让我们详细探讨“多线程”这一概念。在计算机程序设计中,多线程允许一个应用程序同时执行多个不同的...
本实例将带你走进Web服务器编程的世界,通过一个简单的实例来理解其工作原理。 首先,我们要了解Web服务器的基本概念。Web服务器主要任务是接收来自客户端(如浏览器)的HTTP请求,解析请求中的信息,如URL、HTTP...
总的来说,【守望简单Web服务器】为个人和小团队提供了一个快速上手的Web服务解决方案,方便进行网站开发和测试。用户在使用过程中应遵循安全最佳实践,并结合其他资源进行学习,提升自己的Web技术能力。
这个“简单的web服务器”项目旨在通过Java实现一个基础版的Web服务器,类似于流行的Tomcat服务器,它能够处理静态资源的请求。 【描述】:此项目的核心目标是提供一个基础的环境,使开发者能够快速地测试和部署静态...
总的来说,通过学习和实践这个C#简单Web服务器开发实例,你可以了解到如何利用`HttpListener`构建基本的Web服务,这将有助于理解HTTP协议、网络编程以及.NET Framework的网络功能。随着对Web服务器原理和`...
在这个场景中,我们关注的是一个使用C#编程语言实现的简单Web服务器。C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows平台上的应用程序开发,包括Web服务。 1. **C#与Web服务器**: C#提供了丰富的...
本项目“简单JAVA WEB服务器”旨在提供一个基础的平台,帮助学习者理解Java Web服务器的工作原理,特别是静态网页服务和JSP(Java Server Pages)的执行,以及Cookie的解析。 1. **多线程技术**:Java Web服务器...
一个用java实现的简单web服务器的程序,用eclipse开发的
本篇文章将深入探讨一个被称为"超级简单的Web服务器"的概念,特别是针对那些希望快速分享本地文件而无需复杂配置的用户。 "超级简单的Web服务器"通常指的是那些轻量级、易于使用且快速部署的Web服务解决方案。它们...
下面是一个简单的基于 Java 的 Web 服务器示例代码片段,用于接收 GET 请求并返回一个简单的 HTML 页面: ```java import java.io.*; import java.net.*; public class SimpleWebServer { public static void ...
【标题】"易语言简易WEB服务器源码.rar" 指的是一款基于易语言开发的简单Web服务器的源代码资源。易语言是中国本土设计的一种编程语言,它以其独特的汉字编程方式,降低了编程的门槛,使得非计算机专业人员也能快速...
这个压缩包“一个支持servlet的web服务器.rar”很可能包含了实现这一功能的源代码、配置文件或者是一个预编译好的服务器软件,允许开发者在本地环境中运行和测试Servlet应用。下面我们将深入探讨Servlet以及如何在...
IIS、Apache、Tomcat、Weblogic、WebSphere 都是不同的服务器, Apache 是纯粹的 Web 服务器,Tomcat 是一个 Servlet 和 JSP 容器,可以作为轻量级应用服务器,IIS 是一个兼具应用服务器功能的 Web 服务器,Weblogic...
总的来说,"Linux- 用C语言实现的简单Web服务器源代码"为学习者提供了一个宝贵的实践平台,帮助他们从零开始理解Web服务器的运作方式。通过分析和修改源代码,不仅可以提高C语言编程技能,还能增强对网络协议和...
6. **ASP.NET Core**:虽然题目描述的是一个简单的C# Web服务器,但现代的C#开发往往使用ASP.NET Core框架,它提供了一套完整的Web开发工具和库,可以更高效地构建高性能的Web应用。不过,基础的Web服务器实现可以...
描述中提到的“为了方便大家学习做了一个简单的教程”表明这是一个教学性质的项目,旨在帮助初学者理解Web服务器的工作原理。 在Python中,我们可以利用内置的`BaseHTTPServer`模块创建一个简单的Web服务器。`...