Filter过滤器(自动登陆、通用的字符集编码的过滤【处理不同请求的乱码问题】、。。。)

Filter过滤器:可以过滤(拦截)从客户端向服务器发送的请求。

过滤器的作用:

  进行ip的过滤,脏话敏感词语的过滤,自动登陆,响应压缩。。。

过滤器的使用:

  1.编写类实现Filter接口。

    destroy()销毁
    doFilter(servletRequest request,ServletResponse response,FilterChain chain)拦截过滤
      eg:chain.doFilter(request,response);//执行此代码表示放行到下一个过滤器中,如果没有下一个过滤器那么到达目标资源。
    init(FilterConfig filterConfig)初始化
  2.配置过滤器

1 <filter>
2       <filter-name></filter-name>
3       <filter-class></filter-class>
4 </filter>
5 <filter-mapping>
6       <filter-name></filter-name>
7       <url-pattern>/*</url-pattern>   //需要拦截的路径,路径编写同servlet
8 </filter-mapping>

过滤器的生命周期:

  创建:服务器启动的时候就会创建
  销毁:服务器关闭的时候

FilterConfig 过滤器的配置对象

  获取该Filter的初始化参数【参数在web.xml中<filter>标签中设置】 

  String getFilterName()
  String getInitParameter(String name)
  Enumeration getInitParameterNames()
  ServletContext getServletContext()

FilterChain 过滤器链对象

  当多个过滤器对同一个请求进行过滤拦截的时候就会形成一个过滤器链。(chain.doFilter()后的代码也会执行)
  过滤器链中的过滤器的执行顺序与<filter-mapping>的配置顺序有关。

filter-mapping相关配置

<url-pattern>的配置:(亦可以拦截servlet)
  完全路径匹配: 以/开始
  目录匹配: 以/开始 以*结束
  扩展名匹配: 不能以/开始,以*开始。
<servlet-name>的配置:根据serlet的名称拦截servlet(专门拦截servlet)
<dispatcher>的配置:(该配置如有需求可以配置多个,实现拦截所有请求)
  REQUEST:请求(默认值)
  FORWARD:转发(拦截服务器端的请求转发)
  INCLUDE:包含(拦截页面进包含别的页面)
  ERROR:错误页面跳转(全局错误页面)
     eg:<dispatcher>FORWARD</dispatcher>

使用过滤器实现两个案例:

1.自动登陆

2.通用的字符集编码的过滤器(处理乱码)
  增强request中的getParamter方法
    继承;实则传来的时httpservletrequest这个接口的一个实现类,这个类tomcat内部自动实现的我们不知道,所以继承pass,这里无法使用;
    装饰着模式;增强的类和被增强类实现相同的接口,增强的类中获得到被增强类的引用。可以使用。但是有个缺点,接口中方法太多,只需要增强一个方法,但是所有方法都要实现。
      (servlet规范里面给我们已经提供了一个模板类HttpServletRequestWrapper,这个类用于增强httpservletrequest。我们只需要继承这个类,增强自己需要增强的方法即可,其他方法不用管。)
    动态代理;被增强的类实现接口即可,可以使用。

原文地址:https://www.cnblogs.com/laodang/p/9534753.html

时间: 2024-10-11 02:19:03

Filter过滤器(自动登陆、通用的字符集编码的过滤【处理不同请求的乱码问题】、。。。)的相关文章

estore商城案例(三)------Filter过滤器:自动登录&amp;权限管理

前面写好了用户登录\注册\添加商品的功能模块.下面写一下对于这些功能模块的相关过滤器---自动登录与权限管理: 一.自动登录: 业务逻辑是这样的:jsp登录页面有个“自动登录选项”,如果登录这勾选了,那么在serlvet程序中则会额外的生成一个保存用户名和密码的cookie,然后每次用户向服务器发送请求时,Filter过滤器都会先判断用户的登录状态(session),如果已经登录那么无需做出受任何操作直接放行,如果没有登录(无session),那么这时体现自动登录功能作用的时候到了,先获取自动登

Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)

一.登录MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,显示如下:+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8 || character_set_connectio

如何配置Filter过滤器处理JSP中文乱码

参考Tomcat服务器目录webapps的examples示例 简单配置步骤:1.在项目web.xml文件添加过滤器标记<filter>和<filter-mapping>:2.实现过滤器代码:3.对Tomcat服务器conf目录里的Server.xml文件配置URIEncoding:4.前台页面设置contentType的charset值与web.xml里设置的值一致. 详细配置步骤:1.配置web.xm文件,在web-app标签内添加过滤器的配置<filter>和&l

英文字母和中文汉字在不同字符集编码下的字节数

英文字母和中文汉字在不同字符集编码下的字节数 英文字母: 字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030 字节数 : 1;编码:ISO-8859-1 字节数 : 1;编码:UTF-8 字节数 : 4;编码:UTF-16 字节数 : 2;编码:UTF-16BE 字节数 : 2;编码:UTF-16LE 中文汉字: 字节数 : 2;编码:GB2312 字节数 : 2;编码:GBK 字节数 : 2;编码:GB18030 字节数 : 1;编码:ISO

javaweb学习总结(四十六)——Filter(过滤器)常见应用

一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题 1 package me.gacl.web.filter; 2 3 import java.io.IOException; 4 import javax.servlet.Filter; 5 import javax.servlet.FilterChain; 6 import javax.servlet.FilterConfig; 7 import javax.servlet.Serv

Filter 过滤器

Filter 过滤器 原文链接:http://tianweili.github.io/blog/2015/01/26/java-filter/ 1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. 它主要用于对用户请求进行预处

Filter(过滤器)常见应用

孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(四十六)——Filter(过滤器)常见应用 一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题 1 package me.gacl.web.filter; 2 3 import java.io.IOException; 4 import javax.servlet.Filter; 5 import javax.servlet.FilterChain; 6 import

day56 Filter(过滤器)常见应用

一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题 1 package me.gacl.web.filter; 2 3 import java.io.IOException; 4 import javax.servlet.Filter; 5 import javax.servlet.FilterChain; 6 import javax.servlet.FilterConfig; 7 import javax.servlet.Serv

教你用Java安全有效的实现两星期内自动登陆功能-Session

现在很多网站都有为用户保存登陆信息(即保存Cookie)的功能,当用户下一次进入网站时,可以帮助用户自动登陆,使网站显得更加友好.笔者通过研究ACEGI项目的自动登陆源码,编写了一个安全有效的实现两星期自动登陆功能的JAVA工具类,.下面是具体的实现流程和实现代码. 先说一下流程: 1.保存用户信息阶段: 当用户登陆网站时,在登陆页面填写完用户名和密码后,如果用户在提交时还选择了"两星期内自动登陆"复选框,那么在后台程序中验证用户名和密码全都正确后,还要为用户保存这些信息,以便用户下一