版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章Servlet容器模型,教学目标 掌握ServletContext对象的主要方法、生命周期及其相关的侦听器。 了解过滤器的基本概念与使用。,3.1 ServletContext对象 3.1.1 Web应用程序的初始参数 每个Web应用程序有一个ServletContext对象。为该应用中所有的Servlet共享。 1设置Web应用程序上下文初始化参数 在web.xml中,利用标记来定义Web应用上下文参数,它包含两个子元素: 。定义上下文参数的名称。 。定义上下文参数的值。,2存取上下文初始化参数 (1)调用Servlet对象的getServletConfig()方法获得容器传递给Ser
2、vlet的ServletConfig对象的引用,然后通过ServletConfig对象的getServletContext对象的引用: ServletConfig config=getServletConfig(); ServletContext context=config.getServletContext();,(2)直接使用HttpServlet对象的getServletContext()方法获得对ServletContext对象的引用: ServletContext sc=getServletContext();,ServletContext对象共提供了两个读取上下文参数的方法: p
3、ublic String getInitParameter(String name)。返回由name指定的上下文初始化参数的数值,例如:String copyright=context.getInitParameter(copyright); public java.util.Enumeration getInitParameterNames()。本方法返回在web.xml中定义的所有上下文初始化参数的名字组成的枚举表。当我们不知道上下文参数的名称时可以使用本方法。,3.1.2 ServletContext对象的方法和属性 ServletContext代表web应用所在的环境。因此通过Serv
4、letContext就可以获得如下信息: 1服务器相关信息 2上下文初始设置参数 3上下文属性 4本地资源 5日志,3.2 与ServletContext对象相关的侦听器和事件 Servlet容器对ServletContext对象的操作,如初始化或销毁ServletContext对象,都会触发事件。如果Web应用程序需要监视上下文环境的变更,那么就需要编写一个实现ServletContextListener接口的Java类;如果需要监视绑定到ServletContext对象上的属性的变化,那么就需要编写一个实现ServletContextAttributeListener接口的Java类,然后
5、在Servlet容器中注册它。,ServletContextListener监听器,实现ServletContextListener接口: 实现两个方法: public void contextInitialized(ServletContextEvent sce); public void contextDestroyed(ServletContextEvent sce); Servlet容器分别在Web应用程序启动和关闭的时候调用这两个方法。,部署监听者: listener.ContextListener ,见图34 例子:ContextListener.java 在服务器的日志文件中看到
6、结果。 说明:在web.xml中的子节中有JavaWeb,是用来标识Web应用程序的名字的。,3.2.3 ServletContextAttributeListener ServletContextListener接口定义了如下方法: public void attributeAdded(ServletContextAttributeEvent scab)。当Web应用程序通过调用ServletContext对象的setAttribute()方法将某个属性绑定到ServletContext对象时,容器会调用侦听器的这个方法。 public void attributeRemoved(Servl
7、etContextAttributeEvent scab)。当Web应用程序通过调用ServletContext对象的removeAttribute()方法将某个属性从ServletContext对象中删除时,容器会调用侦听器的这个方法。 public void attributeReplaced(ServletContextAttributeEvent scab)。当Web应用程序通过调用ServletContext对象的setAttribute()方法改变已经绑定到ServletContext对象的某个属性的值的时候,容器会调用侦听器的这个方法。,3.3 过滤器 过滤器作为一种Web应用程
8、序组件,可以传输或者修改用户请求与Servlet响应。它可以在用户请求到达Servlet之前对请求进行处理,也可以在响应离开Servlet之后修改响应信息。 注:Filter不是独立的组件,无法独立部署并执行,必须附加在JSP或Servlet组件上才能正确执行。,过滤器要做的事情: 请求过滤器可以: 完成安全检查 重新格式化请求首部或体 建立请求审计或日志,响应过滤器可以: 压缩响应流 追加或修改响应流 创建一个完全不同的响应,3.3.2 应用过滤器 创建过滤器,必须遵循以下步骤: (1)实现javax.servlet.Filter接口。 (2)实现Filter接口中定义的方法。 (3)在we
9、b.xml文件中部署过滤器。,过滤器的生命周期: public void init(FilterConfig filterConfig)。Web容器调用本方法,说明过滤器正被嵌入到Web容器中去。容器只在实例化过滤器时才会调用该方法一次。容器为这个方法传递一个FilterConfig对象,其中包含着与Filter相关的配置信息。,public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)。每当请求和响应经过过滤器链时,容器都要调用一次该方法。 FilterChain对象代表了多个过滤器形成的过滤器链。见图37。,destory()方法将在容器决定销毁过滤器之前被调用一次,调用的目的只是释放过滤器占用的资源。 例子:日志处理过滤器LogFilter.java,部署过滤器 首先是声明过滤器,它只是将一个过滤器的名字和对应的实现类进行映射: LogFilter filters.LogFilter ,使用filter-mapping标记将过滤器映
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年货物运输合同规定运输方式与责任
- 2025年度历史建筑保护拆墙工程合作协议4篇
- 2024猪场租赁承包合同
- 2024节能减排协议书
- 《中枢性高热患者的护理与治疗》课件
- 2025年度新媒体运营与公关合作服务合同范本4篇
- 2024年05月云南广发银行昆明分行招考笔试历年参考题库附带答案详解
- 2025年度大数据分析服务合同样本8篇
- 2025变频器代理商销售合同:市场拓展与品牌推广合作3篇
- 二零二五年度高端酒店集团食材供应与服务合同3篇
- 常见老年慢性病防治与护理课件整理
- 履约情况证明(共6篇)
- 云南省迪庆藏族自治州各县区乡镇行政村村庄村名居民村民委员会明细
- 设备机房出入登记表
- 六年级语文-文言文阅读训练题50篇-含答案
- 医用冰箱温度登记表
- 零售学(第二版)第01章零售导论
- 大学植物生理学经典05植物光合作用
- 口袋妖怪白金光图文攻略2周目
- 光伏发电站集中监控系统通信及数据标准
- 三年级下册生字组词(带拼音)
评论
0/150
提交评论