您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > 第3章 Servlet编程技术
第3章Servlet编程技术1.Web应用的体系结构1.1模型11.纯粹使用JSP2.使用JSP和JavaBeans1.2模型21.3MVC模型Web应用的体系结构构造一个Web应用包括:静态HTML页面、动态的JSP页面、Servlet、JavaBeans等,及相互之间的交互关系Web应用特点:功能完善、易于实现和易于维护,易于扩展Web应用软件设计可分解为:表示层和行为层Web应用模型可分为:模型1、模型2和MVC模型1.1模型11.纯粹使用JSP1.1模型12.使用JSP和JavaBeans1.2模型2由于模型2的实现相对模型1来说复杂了很多,因此,对于简单应用,除非特殊需要,应考虑使用模型11.3MVC模型Model-View-Controller模型,简称MVC模型M,V,C的划分目的和实现,以一辆汽车为例JSP模型2其实就是一种基本MVC体系结构MVC比较复杂,Struts是目前使用最广泛的MVC框架之一Servlet简介Servlet是服务器端的Java小程序。用于响应客户机的请求。在默认情况下,Servlet采用一种无状态的请求-响应处理方式。Servlet代码的主要作用是为了增强Java服务器端功能。Servlet基础Servlet工作原理:Servlet运行在Web服务器上的Web容器里。Web容器负责管理Servlet。它装入并初始化Servlet,管理Servlet的多个实例,并充当请求调度器,将客户端的请求传递到Servlet,并将Servlet的响应返回给客户端。Web容器在Servlet的使用期限结束时终结该Servlet。服务器关闭时,Web容器会从内存中卸载和除去ServletServlet基础Servlet基本工作流程(1)客户机将请求发送到服务器。(2)服务器上的Web容器实例化(装入)Servlet(3)Web容器将请求信息发送到Servlet。(4)Servlet创建一个响应,并将其返回到Web容器。(5)Web容器将响应发回客户机。(6)服务器关闭或Servlet空闲时间超过一定限度时,调用destory()方法退出。Servlet基础多个请求的处理:为每个请求创建一个新的线程来处理客户端的请求Web容器Servlet实例线程A线程A客户A客户BWeb服务器图3-1Servlet对多个请求的处理必须注意线程的同步问题!!!Servlet编程接口Servlet基础HttpServletHttpServletRequestHttpServletResponse请求响应配置信息运行环境信息ServletExceptionHttpSessionRequestDispatcher意外情况会话管理协作ServletConfigServletContextServlet的生命周期Servlet运行机制和Applet类似,Servlet是载服务器端运行的,但是Applet是在客户端运行的。Servlet是javax.servlet包中HttpServlet类的子类,由服务器完成该子类的创建和初始化。Servlet的生命周期主要由3个过程组成。1、init()方法:服务器初始化Servlet。2、service()方法:初始化完毕,Servlet对象调用该方法相应客户的请求。3、destroy()方法:调用该方法消灭Servlet对象。其中,init()方法只在Servlet第一次被请求加载的时候被调用一次,当有客户再请求Servlet服务时,Web服务器将启动一个新的线程,在该线程中,调用service方法相应客户的请求。Servlet的生命周期1.init方法该方法是HttpServlet的方法,可以在Servlet中重写这个方法。方法的描述为:publicvoidinit(ServletConfigconfig)throwsServletException当Servlet被第一次加载的时候,服务器初始化一个Servlet,即创建一个Servlet对象,这个对象调用init方法完成必要的初始化工作。2service方法该方法是HttpServlet的方法,可以在Servlet中直接继承该方法或重写这个方法。方法的描述为:publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwServletException,IOExceptionServlet引擎将两个参数传递给该方法,其中一个参数对象是HttpServletRequest类型的对象,该对象封装了用户的请求信息;另外一个参数是HttpServletResponse类型的对象,该对象用来响应用户的请求。和init()方法不同的是,init方法只被调用一次,而service方法可能被多次调用,每次用户请求都导致service方法被调用执行,调用过程运行在不同的进程中,互不干扰。Servlet的生命周期3destroy方法该方法是HttpServlet的方法,可以在Servlet中直接继承该方法,一般不需要重写,方法的描述为:publicdestroy()当Servlet引擎终止服务时,比如关闭服务器等,destroy()方法会被执行,销毁Servlet对象。Servlet编译运行过程使用Eclipse+MyEclipse环境可以方便的编写Servlet代码,并运行。基本步骤和前面JSP工程的建立步骤一致。首先创建一个MyEclipse的J2EEWeb工程,然后右击工程中的src目录,新建一个Servlet文件。Servlet文件框架一个简单的Servlet中包含一个init方法和service方法,如程序j3_01.java所示。数字不能作为Java文件名的第一个字母,且中划线不能用在文件名中,因此Java文件名都在前面加个J,并将中划线改为下划线案例名称:简单的Serveletpackagecom;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassj3_01extendsHttpServlet{publicj3_01(){super();}publicvoiddestroy(){super.destroy();//Justputsdestroystringinlog}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType(text/html);PrintWriterout=response.getWriter();out.println(HTML);out.println(HEADTITLEAServlet/TITLE/HEAD);out.println(BODY);out.print(Thisis);out.print(this.getClass());out.println(,usingtheGETmethod);out.println(/BODY);out.println(/HTML);out.flush();out.close();}案例名称:简单的ServeletpublicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType(text/html);PrintWriterout=response.getWriter();out.println(HTML);out.println(HEADTITLEAServlet/TITLE/HEAD);out.println(BODY);out.print(Thisis);out.print(this.getClass());out.println(,usingthePOSTmethod);out.println(/BODY);out.println(/HTML);out.flush();out.close();}publicvoidinit()throwsServletException{}}Servlet的配置文件在创建一个Web工程的时候,就会在页面目录下的WEB-INF中创建web.xml文件,该文件是整个工程的Web配置文件。Servlet的配置信息就在该文件中。刚才工程中的web.xml文件为?xmlversion=1.0encoding=UTF-8?web-appversion=2.4xmlns=xmlns:xsi=xsi:schemaLocation=servletdescriptionThisisthedescriptionofmyJ2EEcomponent/descriptiondisplay-nameThisisthedisplaynameofmyJ2EEcomponent/display-nameservlet-namej3_01/servlet-nameservlet-classcom.j3_01/servlet-class/servletservlet-mappingservlet-namej3_01/servlet-nameurl-pattern/servlet/j3_01/url-pattern/servlet-mapping/web-appServlet体系结构Servlet是创建Web应用程序的基本模块。Servlet提供了一种通用的程序设计模块。ServletAPI包含两个包:javax.servlet和javax.servlet.http包。其中javax.servlet包有两个子包用于JSP页面(javax.servlet.jsp)和JSP定制标记(javax.servlet.jsp.tagext)。JavaServletAPI概述ServletAPI在两个Java扩展包中定义:javax.servlet和javax.servlet.http包。这两个包中,javax.servlet包中定义的类和接口是独立于协议的;而javax.servlet.http中包含了具体于HTTP协议的类和接口。javax.servlet.http包中的某些类或接口继承了某些javax.servlet包中的类或接口。表3-1ServletAPI接口目的类、接口Servlet实现javax.servlet.Servlet,javax.servlet.SingleThreadModeljavax.servlet.GenericServlet,javax.s
本文标题:第3章 Servlet编程技术
链接地址:https://www.777doc.com/doc-4898840 .html