第06章Servlet核心技术

上传人:E**** 文档编号:91543249 上传时间:2019-06-29 格式:PPT 页数:41 大小:808KB
返回 下载 相关 举报
第06章Servlet核心技术_第1页
第1页 / 共41页
第06章Servlet核心技术_第2页
第2页 / 共41页
第06章Servlet核心技术_第3页
第3页 / 共41页
第06章Servlet核心技术_第4页
第4页 / 共41页
第06章Servlet核心技术_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《第06章Servlet核心技术》由会员分享,可在线阅读,更多相关《第06章Servlet核心技术(41页珍藏版)》请在金锄头文库上搜索。

1、第6章 Servlet核心技术,本章内容,学习内容 Servlet的概念与生命周期 Servlet类的定义与使用 应用Servlet解决问题 过滤器与监听器 目标与重点 目标是能够在Java Web应用程序中熟练运用Servlet 重点: 理解Servlet生命周期 掌握Servletr的创建与应用 理解与运用过滤器与监听器,6.1 Servlet基础,Servlet是1997年由Sun和其它的几个公司提出的一项技术,使用该技术能将HTTP请求和响应封装在标准Java类中来实现各种Web应用方案。 Servlet是使用Java语言编写的服务器端程序,它能够接受客户端的请求并产生响应。 与常规的

2、CGI程序相比,Servlet具有更好的可移植性和安全性、以及更强大的功能等特点。,Servlet是对支持Java的服务器的一般扩充,即:每当请求到达服务器时,Servlet负责对请求做出相应的响应。Servlet最常见的功能包括以下几种:,Servlet技术功能,基于客户端的响应,给客户端生成并返回一个包含动态内容的HTML页面。 可生成一个HTML片段,并能将其嵌入到现有HTML页面中。 能够在其内部调用其它的Java资源并与多种数据库进行交互。 可同时与多个客户机进行连接,包括接收多个客户机的输入以及并将结果返回给多个客户机。 在不同的情况下,可将服务器与Applet的连接保持在不同的状

3、态。 对特殊的处理采用MIME类型过滤数据。 将定制的处理提供给所有服务器的标准例行程序。例如,Servlet可以修改如何认证用户。,Servlet特征,高效性 方便性 功能强大 跨平台 成本低 可扩展性,6.2 Servlet生命周期,Servlet的生命周期如图所示:,Servlet生命周期由Servlet容器(如Tomcat)管理,Servlet容器调用Servlet类的3个方法,加载并初始化Servlet,Servlet加载和实例化是由容器来负责完成的。加载和实例化Servlet其实指的是将Servlet类载入JVM中并初始化。将Servlet类载入JVM中的时机存在一下3种可能:,当

4、服务器启动时。 浏览器第一次接收请求时。 根据管理员要求。,当服务器启动时,首先容器会定位Servlet类,然后加载它,容器加载Servle类以后,就会实例化该类的一个或者可能多个实例,Servlet被实例化后,容器会在客户端请求以前首先初始化它,其方式就是调用它的init()方法,并传递实现ServletConfig接口的对象。执行完init()方法后,Servlet就会处于“已初始化”状态。,在初始化阶段,Servlet实例可能会抛出ServletException异常或UnavailableException异常。,处理客户端请求,Servlet初始化完毕以后,就可以用来处理客户端的请求

5、了。当客户端发来请求时,容器会首先为请求创建一个ServletRequest对象和ServletResponse对象,其中ServletRequest代表请求对象,ServletResponse代表响应对象。然后会调用service()方法,并把请求和响应对象作为参数传递,从而把请求委托给Servlet。在每次请求中,ServletRequest对象负责接受请求,ServletResponse对象负责响应请求。,在HTTP请求的情况下,容器会调用与HTTP请求的方法相应的doXXX()方法,例如,若HTTP请求的方式为GET,容器会调用doGet()方法,若HTTP请求的方式为POST,容器会

6、调用doPost()方法。,Servlet在处理客户端请求的时候有可能会抛出ServletException异常或者UnavailableException异常。,卸载Servlet,Servlet的卸载是由容器定义和实现的,因为资源回收或其他原因,当Servlet需要销毁时,容器会在所有Servlet的service()线程完成之后(或在容器规定时间后)调用Servlet的destroy()方法,以此来释放系统资源,比如数据库的连接等等。 在destroy()方法调用之后,容器会释放Servlet实例,该实例随后会被Java的垃圾收集器所回收。如果再次需要这个Servlet处理请求,Serv

7、let容器会创建一个新的Servlet实例。,6.3 使用Servlet,在应用程序中,所有的Servlet都必须直接或者间接地实现javax.servlet.Servlet接口。 开发过程中最常使用的则是扩展javax.servlet.Servlet接口的实现类javax.servlet.GenericServlet和其子类javax.servlet.http.HttpServlet。,认识第一个Servlet,普通Servlet只需扩展javax.servlet.GenericServlet。 GenericServlet类定义了一个普通的、协议无关的Servlet,使用GenericSe

8、rvlet类可使编写Servlet变得简单。 例如,创建一个简单的Servlet,主要代码如下:,public class ServletSample extends GenericServlet public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException /代码省略 ,完整代码见:CH06ServletDemo的app.servlet.ServletSample,认识第一个Servlet,配置web.xml文件,元素用来定义servlet,

9、元素用来为Servlet配置映射路径。, ServletSample app.servlet.ServletSample ServletSample /servletsample ,使用HttpServlet,创建用于Web的Servlet,需要扩展 javax.servlet.http.HttpServlet。 HttpServlet可用于处理HTTP请求.,public class HttpServletSample extends HttpServlet protected void doGet(HttpServletRequest req, HttpServletResponse re

10、sp) throws ServletException, IOException / protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException this.doGet(req, resp); ,使用HttpServlet,配置web.xml文件, HttpServletSample app.servlet.http.HttpServletSample HttpServletSample /httpservlet ,HttpServlet使

11、用总结,定义Servlet类继承HttpServlet抽象类。 覆盖父类中适当的响应请求的方法,如:doGet() 或doPost()。 如果有HTTP请求信息的话,获取该信息。通过HttpServletRequest对象。 生成HTTP响应。HttpServletResponse类对象生成响应,并将它返回到发出请求的客户机上。 在web.xml中配置Servlet,HttpServlet使用总结,的含义是标记容器何时加载这个servlet。 当值为0或者大于0时,表示容器在应用启动时就加载这个servlet; 当值为负数时或者没有指定时,则指示容器在该servlet被选择时才加载。 正数的值

12、越小,启动该servlet的优先级越高。,标记完整内容,6.4 获取运行环境信息,例:读取Servlet的信息,CH06ServletDemoServletInfo.java 例:获取服务器端信息, CH06ServletDemoServerInfo.java 例:获取客户端信息, CH06ServletDemoClientInfo.java,通过例题学习在Servlet中获取运行环境信息,包括:Servlet信息、服务器端信息和客户端信息,6.5 Servlet中会话设置,1.获取HttpSession对象,当需要为客户端建立session时,Servlet容器会给每一个用户建立一个Http

13、Session对象。获取HttpSession对象的方式是通过调用HttpServletRequest接口提供的以下两个方法:,public HttpSession getSession() public HttpSession getSession(Boolean create),使用无参数的getSession()方法会获取一个HttpSession对象,而对于带参数的getSession()方法,如果当前请求不属于任何会话,而且参数create值为true,则创建一个新会话,否则返回null,此后所有来自同一个的请求都属于这个会话。,6.5 Servlet中会话设置,获取到HttpSes

14、sion对象后,通过HttpSession对象的setAttribute()方法通过绑定一对名字/值数据,可将相关数据保存到当前会话中,如果会话中已经存在该名字则替换它,setAttribute()方法的语法格式如下:,public void setAttribute(String name,Object value),参数name是绑定到会话中的属性名称,参数value是属性的值。,2.在HttpSession对象中保存数据,6.5 Servlet中会话设置,HttpSession提供的getAttribute()方法可读取存储在会话中的对象,该方法的语法格式如下:,public Objec

15、t getAttribute(String name),参数name的值为setAttribute(String name,Object value)方法中设置的name的值。,3.在HttpSession对象中读取数据,6.5 Servlet中会话设置,Servlet的session应用实例:简单购物车 CH06SimpleCart,6.6 Servlet中异常设置,在Servlet中,可使用两种处理异常的方式:,在try/catch语句的catch语句块中直接生成并输出异常信息的页面,或者将异常转发到异常处理的Servlet或JSP页面中。 在web.xml文件中通过元素指定异常处理。,第

16、一种方式和普通的Java类中处理异常的方式类似. 第二种方式则是由Servle规范提出的,其优点就是这种处理方式属于整个Web程序的异常处理,它使得Web程序以一种统一的方式在不同的服务器中显示异常信息。,例:CH06ExceptionDemo,6.6 Servlet中异常设置,(1)创建两个JSP页面,名称分别为“exception.jsp”和“notFind.jsp”,其中exception.jsp用来处理数组下标越界的异常,notFind.jsp用来处理404错误代码 。, 数组下标越界异常页面 请求中出现数组下标越界异常 , 404错误处理页面 当前请求的页面不存在 ,notFind.jsp,exception.jsp,6.6 Servlet中异常设置,(2)创建Servlet类ExceptionServlet.ava,该类可产生一个数组下标越界异常,代码如下:,public class ExceptionServlet extends HttpServlet protected void doGet(HttpSer

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

当前位置:首页 > 高等教育 > 大学课件

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