1.什么是servlet过滤器
Servlet 过滤器(Servlet Filter)是 Java Web 应用中一种常见的组件,可以截取请求和响应,对它们进行修改或者扩展功能。过滤器拦截客户端请求,对请求进行处理,并把响应返回给客户端。过滤> 器可以对请求参数、请求头、请求内容以及响应内容进行操作,还可以重定向到其它页面以及控制缓存等。
过滤器是在 Servlet 容器中实现的,所有经过该容器的请求都会被过滤器拦截并进行处理。过滤器的配置可以通过 web.xml 文件进行管理。在 web.xml 配置文件中,我们可以指定一个过滤器的名称、> > URL 模式、过滤器类名和初始化参数等信息,使得过滤器能够正确的与 Web 应用程序集成。
说白了过滤器就是一种集中处理的方式。例如字符转换,以前我们都得对每一个request得到的请求用getBytes来转换编码方式,让java能认识中文字符。
现在有了过滤器以后,可以对编码问题进行集中处理。
2.具体操作
其实整个操作主要分为两步。
第一步是在filter包下面创建一个ChatsetFilter类,作用就是将请求的字符编码设置为UTF-8
package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CharsetFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
这段代码直接复制网站上的。
第二步修改xml文件,在其中添加如下代码
<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>filter.CharsetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
运行效果
需要注意的是,每次修改xml文件都得重启tomcat。