欢迎来到天天文库
浏览记录
ID:36713423
大小:642.31 KB
页数:19页
时间:2019-05-10
《个简单的Servlet容器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一个简单的Servlet容器贝毅君浙江大学软件学院Servlet一个简单的Servlet容器外观模式优化Servlet容器ServletServlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。public
2、voidinit(ServletConfigconfig)throwsServletException;publicvoidservice(ServletRequestrequest,ServletResponseresponse)throwsServletExcetion,IOException;publicvoiddestroy();publicvoidServletConfiggetServletConfig();publicStringgetServletInfo();上述5个是Servlet接口中声明的5个方法,其中init(),service()和d
3、estroy()方法和servlet生命周期相关。Servlet生命周期当实例化某个servlet类后,servlet会调用其init()方法将其初始化。Servlet容器只会调用该方法一次。Servlet接受任何请求之前,必须要经过争取的初始化。当servlet的一个客户端请求到达后,servlet容器会调用相应servlet的service()方法,并将servletRequest和servletResponse作为参数传入。在Servlet对象的整个生命周期里面,service()方法会被多次调用。在将Service实例从服务中移除前,servlet容器会
4、调用destroy()方法。一般当servlet容器关闭或servlet容器要释放内存时,才会将servlet实例移除。Servlet生命周期Servlet实例PrimitiveServletpublicclassPrimitiveServletimplementsServlet{publicvoidinit(ServletConfigconfig)throwsServletException{System.out.println(“init”);}publicvoidservice(ServletRequestrequest,ServletResponsere
5、sponse)throwsServletException,IOException{System.out.println(“fromservice”);PrintWriterout=response.getWriter();out.println(“Hello.Rosesarered.”);out.print(“Violetsareblue.”);}publicvoiddestroy(){System.out.println(“destroy”);}publicvoidStringgetServletInfo(){returnnull;}publicvoidSe
6、rvletConfiggetServletConfig(){returnnull;}}Servlet示例demoPrimitiveServlet在每个方法内部增加后台打印,利用打印的后台信息可以跟踪servlet的生命周期调用。本章实现的servlet容器仅仅用到了service()方法,验证生命周期的输出推荐使用完整的tomcat运行。一个简单的servlet容器改造HttpServer仅仅需要改造HttpServer中await()方法response.sendStaticResource();替换为下述代码:if(request.getUri().star
7、tsWith("/servlet/")){ServletProcessor1processor=newServletProcessor1();processor.process(request,response);}else{StaticResourceProcessorprocessor=newStaticResourceProcessor();processor.process(request,response);}Url类型为http://XXX/servlet/xxx为访问servlet,不带/servelt/路径访问静态资源因为servlet的serv
8、ice方法会从servl
此文档下载收益归作者所有