jsp程序设计入门 沈泽刚、秦玉平 主编的java web 第二版 第02章 Servlet技术模型

上传人:101****457 文档编号:53779847 上传时间:2018-09-05 格式:PPT 页数:106 大小:1MB
返回 下载 相关 举报
jsp程序设计入门 沈泽刚、秦玉平 主编的java web 第二版 第02章 Servlet技术模型_第1页
第1页 / 共106页
jsp程序设计入门 沈泽刚、秦玉平 主编的java web 第二版 第02章 Servlet技术模型_第2页
第2页 / 共106页
jsp程序设计入门 沈泽刚、秦玉平 主编的java web 第二版 第02章 Servlet技术模型_第3页
第3页 / 共106页
jsp程序设计入门 沈泽刚、秦玉平 主编的java web 第二版 第02章 Servlet技术模型_第4页
第4页 / 共106页
jsp程序设计入门 沈泽刚、秦玉平 主编的java web 第二版 第02章 Servlet技术模型_第5页
第5页 / 共106页
点击查看更多>>
资源描述

《jsp程序设计入门 沈泽刚、秦玉平 主编的java web 第二版 第02章 Servlet技术模型》由会员分享,可在线阅读,更多相关《jsp程序设计入门 沈泽刚、秦玉平 主编的java web 第二版 第02章 Servlet技术模型(106页珍藏版)》请在金锄头文库上搜索。

1、第2章,Servlet技术模型,此文档下载自官网,除本页,其余未修改,可直接删除本页,本章内容,2.1 Servlet AP 2.2 Servlet生命周期 2.3 分析请求 2.4 发送响应 2.5 Web应用程序及结构 2.6 部署描述文件 2.7 WebServlet和WebInitParam注解 2.8 ServletConfig接口,Servlet是Java Web应用开发的基础,Servlet API定义了若干接口和类。 Servlet规范提供了一个标准的,平台独立的框架实现在Servlet和容器之间的通信。该框架是由一组Java接口和类组成的,它们称为Servlet API。,2

2、.1 Servlet API,2.1 Servlet API,Servlet 3.0 API由下面4个包组成: javax.servlet包,定义了开发独立于协议的服务器小程序的接口和类。 javax.servlet.http包,定义了开发采用HTTP协议通信的服务器小程序的接口和类。 javax.servlet.annotation包,定义9个注解类型和2个枚举类型。 javax.servlet.descriptor包,定义了访问Web应用程序配置信息的类型。,2.1.1 javax.servlet包,2.1.1 javax.servlet包,1. Servlet接口,Servlet接口是S

3、ervlet API中的核心接口,每个Servlet必须直接或间接实现该接口。该接口定义了如下5个方法。 public void init(ServletConfig config) public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException public ServletConfig getServletConfig() public String getServletInfo() public void destroy(),2. ServletConfig接

4、口,ServletConfig接口为用户提供了有关Servlet配置信息。 Servlet配置包括Servlet名称、Servlet上下文对象、Servlet初始化参数等。,3. GenericServlet类,GenericServlet抽象类实现了Servlet接口和ServletConfig接口,提供了Servlet接口中除了service()方法外的所有方法的实现,同时增加了几个支持日志的方法。可以扩展该类并实现service()方法来创建任何类型的Servlet。,4. ServletRequest接口,ServletRequest接口是独立于任何协议的请求对象,定义了获取客户请求信

5、息的方法,如getParameter()、getProtocol()、getRemoteHost()等。,5. ServletResponse接口,ServletResponse接口是独立于任何协议的响应对象,定义了向客户发送响应的方法,如setContentType()方法、sendRedirect()方法、getWriter()方法等。,该包提供创建使用HTTP协议的Servlet所需要的接口和类。 该包共定义8个接口和7个类,其中某些接口和类扩展了javax.servlet包中对应的接口和类来实现对HTTP协议的支持。,2.1.2 javax.servlet.http包,2.1.2 ja

6、vax.servlet.http包,2.1.2 javax.servlet.http包,Servlet API的层次结构,1. HttpServlet类,HttpServlet抽象类用来实现针对HTTP协议的Servlet,它扩展了GenericServlet类。 在HttpServlet类中增加了一新的service()方法,格式如下:protected void service (HttpServletRequest, HttpServletResponse)throws ServletException, IOException 是Servlet向客户提供服务的一个方法,我们编写的Ser

7、vlet可以覆盖该方法。,1. HttpServlet类,此外,在HttpServlet中针对不同的HTTP请求方法定义了不同的处理方法,如处理GET请求的doGet()方法格式如下:protected void doGet(HttpServletRequest, HttpServletResponse)throws ServletException,IOException 通常,我们编写的Servlet覆盖doGet()方法或doPost()方法。,2. HttpServletRequest接口,HttpServletRequest接口扩展了ServletRequest接口并提供了针对HTT

8、P请求操作方法,如定义了从请求对象中获取HTTP请求头、Cookie等信息的方法。,3. HttpServletResponse接口,HttpServletResponse接口扩展了ServletResponse接口并提供了针对HTTP的发送响应的方法。它定义了为响应设置如HTTP头、Cookie信息的方法。,2.2 Servlet生命周期,Servlet作为一种在容器中运行的组件,有一个从创建到销毁的过程,这个过程被称为Servlet生命周期。 Servlet生命周期包括以下几个阶段: 加载和实例化Servlet类, 调用init()方法初始化Servlet实例, 一旦初始化完成,容器从客户

9、收到请求时就将调用它的service()方法, 最后容器在Servlet实例上调用destroy()方法使它进入销毁状态。,2.2 Servlet生命周期,2.2.1 加载和实例化Servlet,对一个Servlet,可能在Web容器启动时或第一次被访问时加载到容器中。对每个Servlet,容器使用Class.forName()方法对其加载并实例化。 容器创建了Servlet实例后就进入生命周期阶段,Servlet生命周期方法包括 init()方法 service()方法 destroy()方法,2.2.2 初始化Servlet,容器创建Servlet实例后,将调用init(ServletCo

10、nfig)方法初始化Servlet。 调用init(ServletConfig)方法后,容器将调用无参数的init()方法,之后Servlet就完成初始化。在Servlet生命周期中init()方法仅被调用一次。,2.2.3 为客户提供服务,在Servlet实例初始化后,它就准备为客户提供服务。 当容器接收到对Servlet的请求时,容器根据请求中的URL找到正确的Servlet,首先创建两个对象(请求和响应),然后创建一个新的线程,在该线程中调用service()方法,同时将请求对象和响应对象作为参数传递给该方法。,Servlet使用响应对象(response)获得输出流对象,调用有关方法将

11、响应发送给客户浏览器。 之后,线程将被销毁或者返回到容器管理的线程池。请求和响应对象已经离开其作用域,也将被销毁。最后客户得到响应。,2.2.3 为客户提供服务,2.2.4 销毁和卸载Servlet,当容器决定不再需要Servlet实例时,它将在Servlet实例上调用destroy()方法,Servlet在该方法中释放资源,如它在init()方法中获得的数据库连接。一旦该方法被调用,Servlet实例不能再提供服务。 一旦Servlet实例被销毁,它将作为垃圾被回收。如果Web容器关闭,Servlet也将被销毁和卸载。,2.3 分析请求,HTTP消息是客户向服务器的请求或者服务器向客户的响应

12、。 HTTP消息的各部分,2.3.1 HTTP请求结构,2.3.1 HTTP请求结构,由客户向服务器发出的消息叫做HTTP请求。 1. 请求行 HTTP的请求行由三部分组成:方法名、请求资源的URI和HTTP版本。这三部分由空格分隔。 2. 请求头 请求行之后的内容称为请求头(request header),它可以指定请求使用的浏览器信息、字符编码信息及客户能处理的页面类型等。,接下来是一个空行。 空行的后面是请求的数据。 3. HTTP的请求方法 请求行中的方法名指定了客户请求服务器完成的动作。,2.3.1 HTTP请求结构,4. GET方法和POST方法,在所有的HTTP请求方法中,GET

13、方法和POST方法是两种最常用的方法。 GET方法用来检索资源。它的含义是“获得(get)由该URI标识的资源”。 POST方法用来向服务器发送需要处理的数据,它的含义是“将数据发送(post)到由该URI标识的主动资源”。,GET和POST方法的比较,2.3.2 发送HTTP请求,在客户端如果发生下面的事件,浏览器就向Web服务器发送一个HTTP请求。 用户在浏览器的地址栏中输入URL并按回车键。 用户点击了HTML页面中的超链接。 用户在HTML页面中添写一个表单并提交。,2.3.3 处理HTTP请求,在HttpServlet类中,除定义了service()方法为客户提供服务外,还针对每个

14、HTTP方法定义了相应的doXxx()方法,一般格式如下: protected void doXxx (HttpServletRequest,HttpServletResponse) throws ServletException, IOException;,2.3.4 分析请求,客户发送给服务器的请求信息被封装在HttpServletRequest对象中,其中包含了由浏览器发送给服务器的数据,这些数据包括请求参数、客户端有关信息等。,1. 检索请求参数,请求参数是随请求一起发送到服务器的数据,它是以名/值对的形式发送的。可以使用ServletRequest接口中定义的方法检索由客户发送的参数

15、 public String getParameter(String name) 返回由name指定的请求参数值,如果指 的参数不存在,则返回null值。使用该方 必须确信指定的参数只有一个值。,1. 检索请求参数,public String getParameterValues(String name):返回指定参数name所包含的所有值,返回值是一个String数组。如果指定的参数不存在,则返回null值。,1. 检索请求参数,public Enumeration getParameterNames():返回一个Enumeration对象,它包含请求中所有的请求参数名,元素是String类

16、型的。如果没有请求参数,则返回一个空的Enumeration对象。 public Map getParameterMap():返回一个包含所有请求参数的Map对象,该对象以参数名作为键、以参数值作为值。,请求参数传递的方法,(1)通过表单指定请求参数,每个表单域可以传递一个请求参数,这种方法适用于GET请求和POST请求。 (2)通过查询串指定请求参数,将参数名和值附加在请求的URL后面,这种方法只适用于GET请求。 程序2.1 login.jsp 程序2.2 LoginServlet.java,2. 检索客户端有关信息,在HttpServletRequest接口中还定义了下面常用的方法用来检

17、索客户端有关信息:public String getMethod()public String getRemoteHost()public String getRemoteAddr() public int getRemotePort(),public String getProtocol() public String getRequestURI()public String getQueryString() public String getContentType() public String getCharacterEncoding() 程序2.3 ClientInfoServlet.java,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号