首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

How tomcat work连载2:简易的Servlet容器

2012-09-06 
How tomcat work连载二:简易的Servlet容器? ? ? ?以下代码是仿照《How tomcat work》第二章:如何创建一个简

How tomcat work连载二:简易的Servlet容器

? ? ? ?以下代码是仿照《How tomcat work》第二章:如何创建一个简易的Servlet容器,当然会是在上一篇文章http://bestchenwu.iteye.com/blog/1513984的基础上创建的。

?

? ? ? ?代码示例如下:

? ? ? ?先创建一个简易的Servlet,如下所示:

? ? ? ?package ex02.pyrmont;

?

? ? ? ?这里我引入了一个自己编写的日期操作类的静态方法,代码如下所示:

? ? ??package util;

?

?

? ? ? 看到与之前的HttpServer的区别没?这里的HttpServer尝试去判断uri是否是去请求一个servlet,我们假定所有的Servlet请求都是以/servlet/Servelt类名来结尾的。

? ? ? 接下来是Request、Response,这次Request改为实现ServletRequest、ServletResponse,当然很多方法我们都是仅提供默认实现或者空实现。

? ? ? Request代码如下所示:

? ? ??package ex02.pyrmont;

?

? ? ? ?动态文件的处理类如下所示:

?

? ? ? ?至此,一个简易的 Servlet容器创建完毕,先启动HttpServer,然后在浏览器里输入:

? ? ? ?http://127.0.0.1:8773/servlet/ex02.pyrmont.PrimeServlet

? ? ? ?http://127.0.0.1:8773/pages/index.html

? ? ? ?看下是不是可以看到我们的响应输出

?

? ? ? ?当然这里所述的文件寻址目录都位于工程下的webRoot一级目录,所以你需要确保所有的静态文件、servlet在运行期间都会存在于该目录下,比较简单的方法就是把静态文件也放到src目录下,为它们创建一个单独的目录,比如pages

?

? ? ? ? 这个容器还有个小问题,就是我们的servlet去服务的时候,传入的参数还是Request、Response类型,这里我们可以创建一个适配所有ServletRequest 、ServletResponse的接口,让我们的servlet的服务方法传入的参数是这个适配接口,就像下面这样:

? ? ? ??import java.io.BufferedReader;

            Class<Servlet> servletClass = (Class<Servlet>) loader.loadClass(servletClassName);            Servlet servlet = (Servlet) servletClass.newInstance();            /** 初始化Servlet **/            servlet.init(null);            /** 执行它的服务方法 **/            RequestFacade requestFacade = new RequestFacade(request);            ResponseFacade responseFacade = new ResponseFacade(response);            servlet.service(requestFacade, responseFacade);            /** 销毁Servlet **/            servlet.destroy();

?

? ? ? ? ? 再次启动HttpServer,看下修改后是否能通过。

?

?

?

?

热点排行