- 浏览: 305360 次
- 性别:
- 来自: 江阴
文章分类
最新评论
参考书《How Tomcat Works》这本书非常好,我觉得翻译也不错。
根据第二章的例子,我写了我的第一个 web server 程序
HttpServer.java
Request.java
Response.java
然后在 webroot 目录下新建 文件 index.html
运行 HttpServer.java
然后在浏览器中访问你的第一个 web server 并且是纯 Java 版的
http://127.0.0.1:8080/index.html 注意具体的文件名称,虽然只有一个html文件
eclipse 中控制台输出如下:
GET /index.html HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
千万不要写错了,如果写错了,浏览器会提示:无法显示此页
根据第二章的例子,我写了我的第一个 web server 程序
HttpServer.java
package ex01.xiejiaohui; 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.separator + "webroot"; private static final String SHUTDOWN_COMMAND = "/SHUTDOWN"; private boolean shutdown = false; public static void main(String[] ars) { 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 (IOException e) { e.printStackTrace(); System.exit(1); } // Loop waiting for a request while (!shutdown) { Socket socket = null; InputStream input = null; OutputStream output = null; try { socket = serverSocket.accept(); input = socket.getInputStream(); output = socket.getOutputStream(); // create Request object and parse Request request = new Request(input); request.parse(); // create Response object Response response = new Response(output); response.setRequest(request); response.sendStaticResource(); // Close the socketk socket.close(); // check if the previous URI is a shutdown command shutdown = request.getUri().equals(SHUTDOWN_COMMAND); } catch (Exception e) { e.printStackTrace(); continue; } } } }
Request.java
package ex01.xiejiaohui; 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.print(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; } }
Response.java
package ex01.xiejiaohui; 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 output; public Response(OutputStream output) { this.output = output; } 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) { output.write(bytes, 0, ch); ch = fis.read(bytes, 0, BUFFER_SIZE); } } else { // file not found String errorMessage = "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(errorMessage.getBytes()); } } catch (Exception e) { // thrown if cannot instantiate a File object e.printStackTrace(); System.out.println(e.toString()); } finally { if (fis != null) { fis.close(); } } } }
然后在 webroot 目录下新建 文件 index.html
运行 HttpServer.java
然后在浏览器中访问你的第一个 web server 并且是纯 Java 版的
http://127.0.0.1:8080/index.html 注意具体的文件名称,虽然只有一个html文件
eclipse 中控制台输出如下:
GET /index.html HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
千万不要写错了,如果写错了,浏览器会提示:无法显示此页
发表评论
-
求一个四位数,这个数字乘以9以后,等于这个数的倒序
2014-01-06 15:54 2441求一个四位数,这个数字乘以9以后,等于这个数的倒序 pa ... -
java reader file & writer file
2013-12-12 19:33 1301package com.xjh.dh; import ... -
Java Puzzlers
2013-11-26 22:31 883package com.xjh.study; pub ... -
java ProcessBuidler
2013-11-23 16:10 660import java.io.File; impor ... -
java txt to excel
2013-11-16 11:40 1056package com.xiejiaohui.dc; ... -
java程序在tomcat环境下读取配置文件
2013-08-02 21:43 1684package com.xiejiaohui.core; ... -
inno setup 下载地址
2013-07-15 14:37 698经常要制作安装文件的,大部分的人是用inno setup 来制 ... -
我的第一个 Jetty 程序
2013-03-08 22:08 1241参考网上的例子 在 eclipse 中新建 java 项目 ... -
计算两个日期的相隔天数
2013-02-17 21:16 930package com.xjh.util; impo ... -
java读取文件和写入文件
2013-01-11 21:49 1221package com.xjh.util; imp ... -
读取两个文件中的行数,写入第三个文件
2013-01-11 14:44 1449有一个联行号的文件,和一个银行文件,需要读取联行号文件中的某行 ... -
我写的一个读取文件写入excel的程序
2013-01-07 21:18 1313我最近写了一个程序,这个程序的需求是这样的: 1 读取一个t ... -
比较数组中的两个账号是否相同(初学者)
2012-09-03 19:54 885Comparer.java package com.xj ... -
测试_20120818
2012-08-18 19:46 947Calculater.java package com. ... -
java加密解密
2011-11-05 14:48 659http://snowolf.iteye.com/blog/3 ... -
一个小学五年级的暑假作业
2011-08-24 11:12 770请你从字母算式里写出数字计算。 W I N ... -
java 递归删除某个目录
2010-10-11 16:02 1688import java.io.File; import ... -
Java 读文件,写文件
2010-05-31 08:20 1646package com.xjh.util; import ... -
判断一个日期字符串是否输入正确
2010-01-16 14:54 1397import java.text.ParseExcepti ... -
jsp页面中不能显示图片
2008-06-13 14:29 3758在 AIX 5.3 操作系统,WebSphere 5.1 应用 ...
相关推荐
本章将深入探讨Web服务器程序的相关知识点,让我们一起走进这个精彩的世界。 首先,我们要理解Web服务器的基本工作原理。当用户在浏览器中输入一个URL并按下回车键时,浏览器会向指定的Web服务器发送一个HTTP请求。...
在本资源中,我们主要探讨的是“计算机网络高级软件编程技术第11章 Web Server程序源代码”,这是一份深入理解Web服务器工作原理和技术实现的重要资料。Web服务器是互联网基础设施的关键组成部分,它负责接收HTTP...
- ASMX服务:使用Visual Studio创建一个新的ASP.NET Web应用程序项目,然后在项目中添加一个新的ASMX Web服务。在服务中,你可以定义公开的方法,这些方法将在Web服务接口上可用。 - WCF服务:创建一个WCF服务项目...
1. **Web框架**:web.py是一个Python的微型Web框架,它的设计理念是简洁和直接。它提供了处理HTTP请求、路由URL、模板渲染和数据库交互等功能,使得开发Web应用变得简单。 2. **Python 3.5**:这是Python的一个特定...
1. 快速部署:Baby Web Server允许用户快速启动一个本地Web服务,无需复杂的服务器配置,只需几步操作即可运行个人项目。 2. 支持多种语言:由于其通用性,它支持各种Web应用程序,包括PHP、Python、Java等常见脚本...
在"WebServer.rar"这个压缩包中,很可能包含了用于创建上述三层结构Web服务的源代码、配置文件和其他相关资源。通过对这些文件的研究和学习,开发者可以深入了解如何在Delphi环境下构建和实现webservice与WebServer...
总的来说,Personal Web Server是一个实用的Web服务器软件,尤其对于学习和测试ASP应用程序的开发者来说,它提供了便捷的本地环境。虽然现在可能不是主流选择,但其在历史上的地位和对Web开发教育的贡献不容忽视。...
本资源以"java实现web server功能"为主题,旨在教你如何使用Java编写一个简单的Web服务器,让我们一起深入探讨这个主题。 首先,理解Web服务器的基本工作原理至关重要。Web服务器接收客户端(通常是Web浏览器)发送...
数据库开发是IT行业中至关重要的一个领域,它涉及到数据的存储、管理、检索和更新...总的来说,这个压缩包文件提供了数据库开发和WebServer ASP开发的综合知识,对于想要深入这两个领域的学习者来说是一份宝贵的资源。
综上所述,Xfire的webserver案例是一个包含多个技术层面的综合项目,涵盖了网络通信、服务器架构、数据库管理和安全策略等多个IT领域的知识。了解这些知识点有助于我们理解和分析类似的应用程序设计。
在"第四讲_ASP概述.ppt"中,可能讲解了ASP(Active Server Pages)的基础知识,这是微软开发的一种服务器端脚本环境,用于生成和执行动态网页或Web应用程序。虽然标题中并未直接提及ASP,但了解这一技术可以帮助理解...
综上所述,Community Server 2008 Web安装程序是搭建一个全面的社交媒体平台的关键工具,它不仅包含了丰富的社交功能,还提供了稳定的技术基础和可扩展性,为用户和开发者提供了广泛的可能性。安装和管理这个平台...
- 第一个参数`eid`代表页面ID,第二个参数`wp`指向Web服务器上下文结构体指针,第三个参数`argc`表示传入的参数个数,第四个参数`argv`表示参数数组。 - 示例:`int aspCreateCurrentUser(int eid, webs_t * wp, int...
在本项目中,开发者利用Python的Flask框架创建了一个Web可视化服务器监控程序,该程序能够实时监测HTTP服务器和Redis服务器的状态。以下是对该项目及其组成部分的详细解析: **Flask框架** Flask是一个轻量级的Web...
1. JSP(JavaServer Pages)与Servlet技术的应用方法:JSP是一种用于开发动态网页的技术,而Servlet是一种在服务器端运行的Java小程序,用于处理客户端请求并产生响应。这两项技术是Java Web开发的基础,本书将介绍...
1. DNS解析时间:当应用程序尝试连接到web service时,首先需要将服务的URL转换为IP地址,这个过程可能涉及到域名解析(DNS查询),第一次解析可能会比较耗时。 2. SSL握手:如果web service使用HTTPS协议进行安全...
【网络程序设计】是计算机科学领域的一个重要分支,主要涉及如何...总的来说,"WEB程序设计课件第一章"为学生开启了一扇通向Web应用程序开发的大门,通过理论与实践相结合的方式,引导他们逐步掌握这一领域的核心技能。
在本教程中,我们将深入探讨Java Web程序设计的第二章内容。Java Web技术是构建分布式、动态、交互式网络应用程序的基础,广泛应用于企业级应用开发。这一章将涵盖多个关键概念和技术,帮助初学者理解Java Web开发的...
在.NET平台上进行Web程序设计,开发者通常会利用微软提供的ASP.NET框架,这是一个强大的工具集,用于构建动态网站、Web应用程序和服务。本实例代码库聚焦于.NET环境下的Web开发实践,旨在帮助初学者和有经验的开发者...
C# Web服务器是用C#语言构建的一种能够处理HTTP请求并返回响应的程序,它允许开发者创建自己的自定义Web服务,而不依赖于第三方服务器软件。 一、C# Web服务器基础 1. **HttpListener类**:在C#中,我们通常使用`...