Servlet核心技术.ppt
《Servlet核心技术.ppt》由会员分享,可在线阅读,更多相关《Servlet核心技术.ppt(52页珍藏版)》请在三一办公上搜索。
1、第6章 Servlet核心技术,6.1 Servlet基础,6.2 Servlet生命周期,6.3 使用Servlet,6.4 获取运行环境信息,6.5 Servlet中会话设置,6.6 Servlet中异常设置,6.7 Servlet过滤器,6.8 Servlet监听器,6.1 Servlet基础,6.1.1 Servlet技术功能,Servlet特征,Servlet是1997年由Sun和其它的几个公司提出的一项技术,使用该技术能将HTTP请求和响应封装在标准Java类中来实现各种Web应用方案。Servlet是使用Java语言编写的服务器端程序,它能够接受客户端的请求并产生响应。与常规的C
2、GI程序相比,Servlet具有更好的可移植性和安全性、以及更强大的功能等特点。,返回,Servlet是对支持Java的服务器的一般扩充,它最常见的用途就是扩展Web服务器,即:每当请求到达服务器时,Servlet负责对请求做出相应的响应。Servlet最常见的功能包括以下几种:,Servlet技术功能,基于客户端的响应,给客户端生成并返回一个包含动态内容的HTML 页面。可生成一个HTML片段,并能将其嵌入到现有HTML页面中。能够在其内部调用其它的Java资源并与多种数据库进行交互。可同时与多个客户机进行连接,包括接收多个客户机的输入以及并将 结果返回给多个客户机。在不同的情况下,可将服务
3、器与Applet的连接保持在不同的状态。对特殊的处理采用MIME类型过滤数据。将定制的处理提供给所有服务器的标准例行程序。例如,Servlet可以 修改如何认证用户。,返回,Servlet是传统CGI的替代品,它能够动态的生成Web页面,与其他的动态网页编程技术相比,Servlet具有以下几点非常明显的特征:,Servlet特征(1),高效性传统CGI中,对每个请求都要启动一个新的进程,启动进程所需要的开销在有些情况下就可能很大,而Servlet在服务器上仅有一个Java虚拟机在运行,每个Servlet请求都作为持久性进程中的一个单独线程得以执行,相对于传统CGI而言,显然效率要高得多。方便性
4、Servlet提供了大量的实用工具例程。例如,自动解析和编码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话等等。功能强大许多传统CGI程序很难完成的工作使用Servlet就可轻松完成。例如Serlet能够直接和Web服务器交互,而普通的CGI程序则不能。Servlet还能够在各个应用程序之间共享数据,使得数据库连接池之类的功能很容易实现。,Servlet特征(2),跨平台性Servlet采用Java语言编写,在有Java运行环境的任何操作系统上都可运行。成本低许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,即使它不支持Servlet,要加上这部
5、分功能也往往是免费的(或只需要极少的投资)。可扩展性Servlet采用Java语言编写,而且得到了广泛的支持,因此基于Servlet的应用具有很好的扩展性。,返回,6.2 Servlet生命周期,6.2.1 加载并初始化Servlet,6.2.2 处理客户端请求,6.2.3 卸载Servlet,Servlet的生命周期如图所示:,返回,加载并初始化Servlet,Servlet加载和实例化是由容器来负责完成的。加载和实例化Servlet其实指的是将Servlet类载入JVM(Java虚拟机)中并初始化。将Servlet类载入JVM中的时机存在一下3种可能:,当服务器启动时。浏览器第一次接收请求
6、时。根据管理员要求。,当服务器启动时,首先容器会定位Servlet类,然后加载它,容器加载Servle类以后,就会实例化该类的一个或者可能多个实例,Servlet被实例化后,容器会在客户端请求以前首先初始化它,其方式就是调用它的init()方法,并传递实现ServletConfig接口的对象。执行完init()方法后,Servlet就会处于“已初始化”状态。,在初始化阶段,Servlet实例可能会抛出ServletException异常或UnavailableException异常。,返回,处理客户端请求,Servlet初始化完毕以后,就可以用来处理客户端的请求了。当客户端发来请求时,容器会首
7、先为请求创建一个ServletRequest对象和ServletResponse对象,其中ServletRequest代表请求对象,ServletResponse代表响应对象。然后会调用service()方法,并把请求和响应对象作为参数传递,从而把请求委托给Servlet。在每次请求中,ServletRequest对象负责接受请求,ServletResponse对象负责响应请求。,在HTTP请求的情况下,容器会调用与HTTP请求的方法相应的doXXX()方法,例如,若HTTP请求的方式为GET,容器会调用doGet()方法,若HTTP请求的方式为POST,容器会调用doPost()方法。,Se
8、rvlet在处理客户端请求的时候有可能会抛出ServletException异常或者UnavailableException异常。,返回,卸载Servlet,Servlet的卸载是由容器定义和实现的,因为资源回收或其他原因,当Servlet需要销毁时,容器会在所有Servlet的service()线程完成之后(或在容器规定时间后)调用Servlet的destroy()方法,以此来释放系统资源,比如数据库的连接等等。在destroy()方法调用之后,容器会释放Servlet实例,该实例随后会被Java的垃圾收集器所回收。如果再次需要这个Servlet处理请求,Servlet容器会创建一个新的Se
9、rvlet实例。,返回,6.3 使用Servlet,6.3.1 认识第一个Servlet,6.3.2 使用HttpServlet,在应用程序中,所有的Servlet都必须直接或者间接地实现javax.servlet.Servlet接口,而我们在开发过程中最常使用的则是扩展javax.servlet.Servlet接口的实现类javax.servlet.GenericServlet和其子类javax.servlet.http.HttpServlet。,返回,认识第一个Servlet(1),一个普通的Servlet只需扩展javax.servlet.GenericServlet即可,Generic
10、Servlet类定义了一个普通的、协议无关的Servlet,使用GenericServlet类可使编写Servlet变得简单。例如,创建一个简单的Servlet,主要代码如下:,public class ServletSample extends GenericServletpublic void service(ServletRequest request,ServletResponse response)throws ServletException,IOException response.setCharacterEncoding(GBK);/设置响应的编码类型为GBKPrintWrit
11、er out=response.getWriter();/获取输出对象 out.println();out.println(这是第一个Servlet的例子);out.println();out.close();/关闭输出对象,认识第一个Servlet(2),配置web.xml文件,通过元素和元素实现,其中元素用来定义,元素用来为Servlet配置映射路径。,ServletSample sunyang.ServletSample ServletSample/servlet,程序的运行结果如图所示:,返回,使用HttpServlet(1),创建用于Web的Servlet,需要扩展javax.ser
12、vlet.http.HttpServlet。HttpServlet可用于处理HTTP请求,例如,创建用于Web的Servlet:,使用HttpServlet(2),配置web.xml文件,ServletSample sunyang.HttpServletSample ServletSample/httpServlet,程序的运行结果如图所示:,返回,6.4 获取运行环境信息,6.4.1 获取Servlet信息,6.4.2 获取服务器端信息,6.4.3 获取客户端信息,运行环境信息包括Servlet信息、服务器端信息和客户端信息。,返回,获取Servlet信息(1),Servlet信息包括Ser
13、vlet的初始化参数、Servlet的初始化参数名和Servlet名称,这些信息通常都是配置在web.xml中的,可通过javax.servlet.ServletConfig接口中定义的方法来获取。,1.获取Servlet的初始化参数,在Web.xml文件中,元素的相关配置代表Servlet的初始化参数,在Servlet中这些参数的获取是通过ServletConfig接口的getInitParameter()方法来完成的,getInitParameter()方法的语法格式如下:,public String getInitParameter(String name),语句中,参数name为元素的
14、值。getInitParameter()方法的返回值为元素的值。,获取Servlet信息(2),2获取Servlet初始化参数名,在web.xml文件中,元素的值即为Servlet初始化参数名。获取Servlet初始化参数名通过ServletConfig接口的getInitParameterNames()方法来完成,该方法的语法格式如下:,public Enumeration getInitParameterNames(),getInitParameterNames()方法的返回值为一个枚举对象(Enumeration),和getInitParameter()方法一样,该方法也可在Generi
15、cServlet的子类中直接调用。,获取Servlet信息(3),3获取Servlet名称,可通过ServletConfig接口的getServletName()方法来获取Servlet在web.xml文件中的注册名称,该方法的语法格式如下:,public String getServletName(),getServletName()方法的返回值为元素的值,若Servlet未注册,则返回类名。,返回,获取服务器端信息(1),服务器端信息包括服务器名、服务器端口号、服务器的属性信息等,Servlet通过ServletContext和ServletRequest接口提供的相关方法可获取这些服务器
16、端信息,这些方法的名称及其作用如表所示:,获取服务器端信息(2),应用举例:Servlet主要代码如下:,获取服务器端信息(3),在XML文件中配置之后,运行结果如图所示:,返回,获取客户端信息(1),客户端信息包括客户端主机名、客户端IP地址、客户端端口号、客户端的请求参数等,Servlet通过ServletRequest接口或其子接口HttpServletRequest提供的相关方法可获取客户端信息,这些方法的名称及其作用如表所示:,获取客户端信息(2),实例:Servlet主要代码如下:,获取客户端信息(3),配置Web.xml文件,运行结果如图所示:,返回,6.5 Servlet中会话
17、设置,6.5.1 获取HttpSession对象,6.5.2 在HttpSession对象中保存数据,6.5.3 在HttpSession对象中读取数据,返回,获取HttpSession对象,当需要为客户端建立session时,Servlet容器会给每一个用户建立一个HttpSession对象。获取HttpSession对象的方式是通过调用HttpServletRequest 接口提供的以下两个方法:,public HttpSession getSession()public HttpSession getSession(Boolean create),使用无参数的getSession()方法
18、会获取一个HttpSession对象,而对于带参数的getSession()方法,如果当前请求不属于任何会话,而且参数create值为true,则创建一个新会话,否则返回null,此后所有来自同一个的请求都属于这个会话。,返回,在HttpSession对象中保存数据,获取到HttpSession对象后,通过HttpSession对象的setAttribute()方法通过绑定一对名字/值数据,可将相关数据保存到当前会话中,如果会话中已经存在该名字则替换它,setAttribute()方法的语法格式如下:,public void setAttribute(String name,Object va
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Servlet 核心技术

链接地址:https://www.31ppt.com/p-5576155.html