




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Servlet过滤器 Servlet过滤器工作原理 Servlet过滤器配置 Servlet过滤器典型应用 1 Servlet过滤器工作原理 Servlet过滤器介于与之相关的Servlet或JSP页面与客户端之间 工作原理 当某个资源与Servlet过滤器关联后 对该资源的所有请求都会经过Servlet过滤器 Servlet过滤器在Servlet被调用之前会检查请求对象 Request对象 并决定是将请求转发给过滤器链中的下一个资源还是中止该请求并响应用户 2 3 Servlet过滤器的特点 Servlet过滤器可以检查和修改ServletRequest和ServletResponse对象 Servlet过滤器可以被指定和特定的URL关联 只有当客户请求访问该URL时 才会触发过滤器 Servlet过滤器可以被串联在一起 形成管道效应 协同修改请求和响应对象 4 Servlet过滤器的适用场合 Servlet过滤器是Servlet的一种特殊用法 主要用来完成一些通用的操作 比如编码的过滤 判断用户的登陆状态等等 Servlet过滤器的适用场合 5 实现servlet过滤器 6 Servlet过滤器接口 创建过滤器须实现javax servlet Filter接口 该接口内定义了3个方法 init FilterConfigconfig 用于初始化过滤器 并获取web xml文件中配置的过滤器初始化参数 doFilter ServletRequestreg ServletResponseres FilterChainchain 用于进行过滤操作 该方法的第一个参数为ServletRequest对象 此对象给过滤器提供了对进入的信息 包括表单数据 Cookie和HTTP请求头 的完全访问 第二个参数为ServletResponse 用于响应使用ServletRequest对象访问的信息 通常在简单的过滤器中忽略此参数 最后一个参数为FilterChain 该参数用来调用过滤器链中的下一个资源 FilterChain参数用于访问后续过滤器destroy Servlet容器在销毁过滤器实例前调用该方法 这个方法中可以释放Servlet过滤器占用的资源 性质等同与servlet的destory 方法 7 Servlet过滤器的创建步骤 A 实现javax servlet Filter接口的servlet类B 实现init方法 读取过滤器的初始化参数C 实现doFilter方法 完成对请求或响应的过滤D 调用FilterChain接口对象的doFilter方法 向后续的过滤器传递请求或响应F 在web xml中配置Filter 8 Servlet过滤器配置 1 配置Servlet过滤器包括下面两个步骤 1 命名Servlet过滤器和指定Servlet过滤器相应的实现类 并且可选择指定传递至Servlet过滤器的初始化参数 配置代码如下 FilterNamepackage classNameParamName1ParamValue1ParamName1ParamValue1 9 Servlet过滤器配置 2 2 将Servlet过滤器映射至URL或Servlet 这是通过元素来实现的 将Servlet过滤器映射至URL的配置代码如下 FilterName path 元素和元素的子元素一致 元素指定了过滤器的映射路径 Servlet过滤器还可映射至Servlet FilterNameServletName 元素指定过滤器映射的Servlet的名称 10 Servlet过滤器典型应用 使用过滤器处理中文乱码问题 当用用户登陆页面输入帐号时 如果输入是中文 后台servlet再次输出这个内容时 可能就会是乱码 这是因为serlvet中默认是以ISO 8859 1格式编码的 如果后台有多个Servlet 我们可以通过一个过滤器统一解决 使后台的输出输出都支持中文 将ISO 8859 1转码为GBK的那段代码 11 GET提交方式的中文乱码 首先配置tomcat下server xml的Connector节点增加useBodyEncodingForURI true 属性配置 然后在JSP页面中加入所设置的编码格式进行编码 1 Tomcat中server xml配置如下 12 13 Servlet过滤器典型应用 使用过滤器认证用户 2 创建过滤器实例 1 创建Servlet过滤器 IPFilter java 它可以过滤用户的IP地址 以进行访问控制 该过滤器IPFilter的关键代码如下 publicclassIPFilterimplementsFilter protectedFilterConfigfilterConfig protectedStringfilterIP 需要过滤的IP地址 初始化过滤器 publicvoidinit FilterConfigconfig throwsServletException this filterConfig config filterIP config getInitParameter filterIP 获取被过滤的IP地址if filterIP null filterIP 14 Servlet过滤器典型应用 3 过滤操作 publicvoiddoFilter ServletRequestreg ServletResponseres FilterChainchain throwsIOException ServletException RequestDispatcherreqDispatcher reg getRequestDispatcher error jsp StringremoteIP reg getRemoteAddr 获取本地IP地址if remoteIP equals filterIP 如果该IP地址被过滤 将转向错误页面reqDispatcher forward reg res else 否则将请求转发给过滤器链中的其他资源chain doFilter reg res 销毁过滤器 publicvoiddestroy this filterConfig null 15 2020 1 3 16 Servlet过滤器典型应用 4 2 在web xml文件中配置IPFilter过滤器 在配置文件中定义了一个名为filterIP的参数 它的值为192 168 70 82 表示IP地址为192 168 70 82的用户将被拒绝访问 在web xml文件中配置过滤器如下 IPFiltersunyang IPFilterfilterIP192 168 70 82IPFilter 17 Servlet过滤器典型应用 5 3 建立测试IPFilter过滤器的JSP页面 success jsp 和 error jsp 欢迎页面欢迎访问吉林省三扬科技咨询有限公司 拒绝访问对不起 您的IP地址禁止访问该网站 success jsp error jsp 18 Servlet过滤器典型应用 6 4 运行结果 当IP地址非192 168 70 82的用户访问success jsp时 运行结果如图1所示 当IP地址非192 168 70 82的用户访问success jsp时 运行结果如图2所示 图1 图2 19 Servlet监听器 Servlet监听器工作原理 Servlet监听器类型 Servlet监听器典型应用 20 Servlet监听器工作原理 Servlet监听器是Web应用程序事件模型的一部分 当Web应用中的某些状态发生改变时 Servlet容器就会产生相应的事件 比如创建ServletContext对象时触发ServletContextEvent事件 创建HttpSession对象时触发HttpSessionEvent事件 Servlet监听器可接收这些事件 并可以在事件发生前 发生后可以做一些必要的处理 21 Servlet监听器类型 1 根据监听对象的不同 Servlet2 4规范将Servlet监听器划分为以下3种 ServletContext事件监听器 用于监听应用程序环境对象 HttpSession事件监听器 用于监听用户会话对象 ServletRequest事件监听器 用于监听请求消息对象 1 ServletContext事件监听器 对ServletContext对象进行监听的接口有ServletContextAttributeListener和ServletContextListener 其中ServletContextAttributeListener用于监听ServletContext对象中属性的改变 包括增加属性 删除属性和修改属性 ServletContextListener用于监听ServletContext对象本身的改变 例如ServletContext对象的创建和销毁 22 Servlet监听器类型 2 ServletContext事件监听器中的接口和方法如表所示 23 Servlet监听器类型 3 2 HttpSession事件监听器 对会话对象进行监听的接口有HttpSessionAttributeListener HttpSessionListener HttpSessionActivationListener和HttpSessionBindingListener 其中HttpSessionAttributeListener用于监听HttpSession对象中属性的改变 例如属性的增加 删除和修改 HttpSessionListener用于监听HttpSession对象的改变 例如HttpSession对象的创建与销毁 HttpSessionActivationListener用于监听HttpSession对象的状态 例如HttpSession对象是被激活还是被钝化 HttpSessionBindingListener用于监听HttpSession对象的绑定状态 例如添加对象和移除对象 24 Servlet监听器类型 4 HttpSession事件监听器中的接口和方法如表所示 25 26 27 Servlet监听器类型 5 3 ServletRequest事件监听器 对请求消息对象进行监听的接口有ServletRequestListener和ServletRequestAttributeListener 其中ServletRequestListener用于监听ServletRequest对象的变化 例如ServletRequest对象的创建和销毁 ServletRequestAttributeListener用于监听ServletRequest对象中属性的变化 例如属性的增加 删除和修改 ServletRequest事件监听器的接口和方法如表所示 28 Servlet监听器典型应用 统计网站在线人数 1 1 创建Servlet监听器OnlineListener OnlineListener监听器用于监听网站的在线人数 代码如下 publicclassOnlineListenerimplementsHttpSessionListener privateintonlineCount 定义一个代表在线人数的变量publicOnlineListener onlineCount 0 publicvoidsessionCreated HttpSessionEventsessionEvent 会话创建时的处理onlineCount sessionEvent getSession getServletContext setAttribute online newInteger onlineCount publicvoidsessionDestroyed HttpSessionEventsessionEvent 会话销毁时的处理onlineCount se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度房产抵押贷款三方借款合同
- 2025年厨房设备租赁与改造工程合同
- 2025版高空作业平台外架工程班组劳务承包合同
- 2025版汽车4S店专用汽车运输服务合同
- 2025版智慧城市建设投资借款合同
- 2025版水电工程设计与施工及维护保养协议
- 2025版土建资料承包项目施工组织设计与进度控制合同
- 2025年度港口码头施工总价合同模板
- 2025版智慧城市建设土地测绘与规划合同协议
- 2025第一部生物科技药物研发与生产合同协议书
- 景区拥挤踩踏知识培训课件
- 2025云南文山州融资担保有限责任公司人员招聘6人笔试参考题库附答案解析
- 2025-2026学年济南版(2024)初中生物八年级上册教学计划及进度表
- 2025山西运城市临猗县招聘社区工作者32人(一)考试备考试题及答案解析
- 2025年鞍山市铁西区教育局面向师范类院校应届毕业生校园招聘45人笔试参考题库附答案解析
- 空调与制冷操作考试试题(含答案)
- (2025年)河南省信阳市辅警协警笔试笔试真题(含答案)
- 网络直播带货讲解
- 2025江西九江都昌县公安局招聘警务辅助人员14人笔试备考题库及答案解析
- 2025年教科版新教材科学三年级上册教学计划(含进度表)
- 肿瘤药物配制注意事项
评论
0/150
提交评论