




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第详细了解java监听器和过滤器目录1、介绍:2、作用域对象:Servt规范扩展-----------过滤器接口1、介绍:2、具体作用:3、Filter接口实现类的开发步骤:三步第一步:创建一个java类实现Filter接口第二步:重写doFilter接口中的doFilter()方法第三步:在web.xml文件中将过滤器接口实现类注册到Http服务器OneServletTwoServlet4、Filter拦截地址的格式总结
1、介绍:
1)一组来自于Servlet规范下的接口,共有8个接口。在Tomcat中存在于Servlet-api.jar包
2)监听器接口需要由开发人员亲自实现,Http服务器提供的jar中并没有对应的实现类
3)监听器接口用于监控【作用域对象生命周期的变化时刻】以及【作用域对象共享数据的变化时刻】
2、作用域对象:
1)在Servlet规范中,认为在服务端内存中可以在某些条件下为两个Servlet之间提供数据共享方案的对象,被称为【作用域对象】
2)在Servlet规范下的作用域对象:
ServletContext:全局作用域对象
HttpSession:会话作用域对象
HttpServletRequest:请求作用域对象
3、监听器接口实现类开发规范:三步
1)根据监听的实际情况,选择对应的监听器接口进行实现
2)重写监听器接口中声明的【监听事件处理方法】
3)在web.xml文件中将监听器接口实现类注册到Http服务器中
4、ServletContextListener
1)作用:通过这个接口合法的检测全局作用域对象的两个时刻
被初始化时刻被销毁时刻
2)监听事件处理方法
publicvoidcontextInitialized():在全局作用域对象被Http服务器初始化是调用
publicvoidcontextDestroyed():在全局作用域对象被Http服务器销毁时调用
5、ServletContextAttributeListener接口:
1)作用:通过这个接口合法的检测全局作用域对象共享数据变化的时刻
2)监听事件处理方法:
publicvoidcontextAdded():在全局作用域对象添加共享数据时调用
publicvoidcontextReplaced():在全局作用域对象更新共享数据时调用
publicvoidcontextRemoved():在全局作用域对象删除共享数据时调用
6、全局作用域对象共享数据变化时刻
ServletContextapplication=request.getServletContext();
application.setAttribute("key1",100);//新增共享数据
application.setAttribute("key1",200);//更新共享数据
application.removeAttribute("key1");//删除共享数据
代码实现
以下就以ServletContextListener接口和ServletContextAttributeListener接口
第一步:选择ServletContextListener接口进行实现
第二步:重写监听器接口声明的【监听事件处理方法】
publicclassOneListenerimplementsServletContextListener{
@Override
publicvoidcontextInitialized(ServletContextEventsce){
System.out.println("Initialized............");
@Override
publicvoidcontextDestroyed(ServletContextEventsce){
System.out.println("Destroyed.............");
第三步:在web.xml中将监听器接口实现类注册到Http服务器中
listener
listener-classschool.xauat.listener.OneListener/listener-class
/listener
由于ServletContext【全局作用对象的生命周期】贯穿网站的整个运行期间
Servlet之间数据共享中有具体的ServletContext生命周期
因此在Tomcat服务器启动过程时,执行contextInitialize()方法
Initialized............
在Tomcat服务器准备关闭时,执行contextDestroyed()方法
Destroyed.............
第一步:选择ServletContextAttributeListener接口进行实现
第二步:重写监听器接口声明的【监听事件处理方法】
publicclassOneListenerimplementsServletContextAttributeListener{
@Override
publicvoidattributeAdded(ServletContextAttributeEventscae){
System.out.println("ServletContextAttributeisadded......");
@Override
publicvoidattributeRemoved(ServletContextAttributeEventscae){
System.out.println("ServletContextAttributeisremoved......");
@Override
publicvoidattributeReplaced(ServletContextAttributeEventscae){
System.out.println("ServletContextAttributeisreplaced......");
第三步:在web.xml文件中将监听器接口实现类注册到Tomcat服务器中
servlet
servlet-nameOneServlet/servlet-name
servlet-classschool.xauat.controller.OneServlet/servlet-class
/servlet
servlet-mapping
servlet-nameOneServlet/servlet-name
url-pattern/one/url-pattern
/servlet-mapping
listener
listener-classschool.xauat.listener.OneListener/listener-class
/listener
监听事件
publicclassOneServletextendsHttpServlet{
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//通过请求对象获取全局作用域对象
ServletContextapplication=request.getServletContext();
//向全局作用域对象中添加共享数据
application.setAttribute("key",100);
//更改全局作用域对象中的共享数据
application.setAttribute("key",500);
//删除全局作用域对象中的共享数据
application.removeAttribute("key");
运行结果
Servt规范扩展-----------过滤器接口
1、介绍:
1)来自于Servlet规范下的接口,在Tomcat中存在于servlet-api.jar包中
2)Filter接口实现类由开发人员负责提供的,Http服务器不负责提供
3)Filter接口会在Http服务器调用资源文件之前,对Http服务器进行拦截
2、具体作用:
1)拦截Http服务器,帮助Http服务器去检测当前请求的合法性
2)拦截Http服务器,对当前请求进行增强操作
3、Filter接口实现类的开发步骤:三步
1)创建一个java类实现Filter接口
2)重写Filter接口中的doFilter方法
3)在web.xml文件中将过滤器接口实现类注册到Http服务器
过滤器检测请求合法性
第一步:创建一个java类实现Filter接口
第二步:重写doFilter接口中的doFilter()方法
*http://localhost:8080/myWeb/mm.jpgage=89
publicclassOneFilterimplementsFilter{
@Override
publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{
//通过拦截的请求对象来得到请求包中的参数信息,从而得到来访用户的真实年龄
Stringage=servletRequest.getParameter("age");
//根据这个年龄帮助我们的Http服务器判断本次请求的合法性
if(Integer.valueOf(age)70){
//将拦截请求对象和相应对象交换给Tomcat,由Tomcat继续调用资源文件
filterChain.doFilter(servletRequest,servletResponse);
}else{
//过滤器代替Http服务器拒绝本次请求
servletResponse.setContentType("text/html;charset=utf-8");
PrintWriterout=servletResponse.getWriter();
out.print("centerfont不合适!!!!/font/center
第三步:在web.xml文件中将过滤器接口实现类注册到Http服务器
!--将过滤器类文件交给Tomcat--
filter
filter-nameOneFilter/filter-name
filter-classschool.xauat.filter.OneFilter/filter-class
/filter
!--通知Tomcat在调用何种资源文件是需要被当前过滤器拦截--
filter-mapping
filter-nameOneFilter/filter-name
url-pattern/mm.jpg/url-pattern
/filter-mapping
过滤器对请求对象进行增强服务
当有多个以post的请求访问服务器时,需要对每个Servlet接口实现类中doPost()方法进行以下操作,增加的开发的难度。
response.setCharacterEncoding("utf-8")
以下展示过滤器的作用:
第一步:创建java实现Filter接口
第二步:重写Filter接口下的doFilter()方法
publicclassOneFilterimplementsFilter{
@Override
publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{
servletRequest.setCharacterEncoding("utf-8");
filterChain.doFilter(servletRequest,servletResponse);
第三步:在web.xml文件中将过滤器接口实现类注册到Http服务器
servlet
servlet-nameOneServlet/servlet-name
servlet-classschool.xauat.controller.OneServlet/servlet-class
/servlet
servlet-mapping
servlet-nameOneServlet/servlet-name
url-pattern/one/url-pattern
/servlet-mapping
servlet
servlet-nameTwoServlet/servlet-name
servlet-classschool.xauat.controller.TwoServlet/servlet-class
/servlet
servlet-mapping
servlet-nameTwoServlet/servlet-name
url-pattern/two/url-pattern
/servlet-mapping
!--注册Filter类--
filter
filter-nameOneFilter/filter-name
filter-classschool.xauat.filter.OneFilter/filter-class
/filter
filter-mapping
filter-nameOneFilter/filter-name
!--通知Tomcat在调用所有资源文件之前都需要调用OneFilter进行拦截--
url-pattern/*/url-pattern
/filter-mapping
OneServlet
publicclassOneServletextendsHttpServlet{
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//通过请求对象获取请求体中的请求参数
StringuserName=request.getParameter("userName");
System.out.println("OneServlet-----"+userName);
TwoServlet
publicclassTwoServletextendsHttpServlet{
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗信息化发展新趋势电子病历与耗材管理系统的未来展望
- 医疗设备的人性化视觉设计
- 医疗设备生命周期管理与供应链优化
- 医疗咨询中的沟通艺术与策略
- 高二德育工作总结
- 感染性心内膜炎的临床护理
- 健康科技医疗信息化升级的驱动力量
- 医疗健康数据的匿名化处理与利用
- 公司办公电脑采购合同范例
- 仪器标准租赁合同范例
- 2024年7月27日内蒙古阿拉善盟直机关遴选笔试真题及解析
- 穴位埋线疗法疗法
- 老年血液透析患者特点和安全性评估方案
- a10c疣猪飞行控制器中文说明书
- (完整word版)桩位偏差验收记录表
- 电流滞环跟踪PWM(CHBPWM)控制技术的仿真
- 重介质旋流器单机检查
- 森林防火设计(武汉高德)演示
- Z3050型摇臂钻床电气控制线路主轴电动机控制原理
- 行业资料安徽消防检测公司电检报告1
- 电解加工机床的设计
评论
0/150
提交评论