自己动手写Web容器之TomJetty之二:开启服务器
来源:互联网 发布:公司网络屏蔽视频 编辑:程序博客网 时间:2024/06/05 14:29
传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229
上一节我们对于实现TomJetty服务器做了一些与Web有关的知识铺垫和回顾。那么从本节正式开始实现TomJetty服务器的“山寨”之旅。要想实现一个服务器,第一步要把服务器建立起来,并且能够正常运行,才能等待来自客户端的请求。考虑到这一点,我们本节就来处理TomJetty服务器的创建和启动工作。
1服务器建立
(1)新建一个名为TomJetty的Java工程
(2)在工程根目录下新建一个tomjetty.config文件,用于提供服务器配置参数
tomjetty.port=9527tomjetty.requestheader.class=cn.lynn.tomjetty.RequestHeaderParserImpl
(3)编写一个工具类TomJettyUtil,用于程序读取服务器配置参数值
package cn.lynn.tomjetty;import java.io.IOException;import java.io.FileInputStream;import java.util.Properties;public class TomJettyUtil { private static Properties props = new Properties(); static { try { props.load(new FileInputStream(".//tomjetty.config")); } catch (IOException e) { e.printStackTrace(); System.exit(0); } } public static String getValue(String key) { return props.getProperty(key); }}
(4)编写一个TomJetty类继承于Thread类,用于封装服务器对象
public class TomJetty extends Thread { private static ServerSocket server; private Socket socket; public TomJetty(Socket socket) { this.socket = socket; } ...}
(5)为TomJetty类提供openServer()和closeServer()方法,用于封装打开和关闭服务器的细节操作
public static void openServer() throws Exception { server = new ServerSocket(Integer.parseInt(TomJettyUtil.getValue("tomjetty.port"))); while (true) { new TomJetty(server.accept()).start(); } }public static void closeServer() throws Exception { if (server != null) { if (!server.isClosed()) { server.close(); } }}
到这里为止,TomJetty服务器已经建立完毕,并且提供了openServer()和closeServer()方法,供外部程序调用,以执行打开和关闭服务器的操作。
2服务器启动
编写一个服务器启动类StartTomJetty。
package cn.lynn.tomjetty;public class StartTomJetty { public static void main(String[] args) { try { TomJetty.openServer(); } catch (Exception e) { try { TomJetty.closeServer(); } catch (Exception e1) { e1.printStackTrace(); } } }}
这样一来,TomJetty服务器就能正常启动了,控制台无任何异常出现出现^_^。当然,它什么也不会做。因为在run()方法中没有进行任何操作^_^。好了,现在服务器的创建和启动工作都已完成,可以等待来自客户端的请求。但是当真的有请求来到时,目前的TomJetty服务器会感到“束手无策”,不知道请求到底要做什么、需要什么东西。这还谈什么交互呢?因此在下一节里我们将掀开HTTP请求头的神秘面纱,让TomJetty服务能够认识它,明白它的意图!
- 自己动手写Web容器之TomJetty之二:开启服务器
- 自己动手写Web容器之TomJetty之一:服务内功经脉
- 自己动手写Web容器之TomJetty之三:掀起请求盖头来
- 自己动手写Web容器之TomJetty之四:静态页面起步
- 自己动手写Web容器之TomJetty之五:包装请求参数
- 自己动手写Web容器之TomJetty之六:动态页面引入
- 学习笔记之自己动手写WEB服务器
- 自己动手写web服务器之虚拟端口支持
- <自己动手写cpu>之二总结
- 自己动手写web服务器二(处理get请求)
- 自己动手写一个简单的Shell之二:运行程序
- 《自己动手写Docker》书摘之二---Linux Cgroups介绍
- 自己动手写的Web服务器<一>
- 《自己动手写操作系统》之ReadSector
- 自己动手写操作系统 之 连接器
- 自己动手写编译器之序
- 自己动手写操作系统之参考资料
- 自己动手开发一个 Web 服务器(二)
- checking for XML::Parser... configure: error: XML::Parser perl module is required for intltool
- 蟑螂
- JSP常用代码
- hdu 1394
- 从这个月起,点亮恒!
- 自己动手写Web容器之TomJetty之二:开启服务器
- 交流技巧
- java 仿qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源
- flexigrid singleSelect
- acm
- 从源码编译安装GWGET
- 产品标签在BMEcat中的应用
- Win8 32位安装PyLucence
- c++ study