过滤器:filter
开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。
新建过滤器:
1、新建过滤器关联的Java类,实现Filter接口
2、引入几个方法。init destroy dofileter
3、在web.xml注册
1、新建过滤器关联的Java类,实现Filter接口
2、引入几个方法。init destroy dofileter
package com.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;
public class CharacterEncodingFilter implements Filter {
private FilterConfig filterConfig;
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
String encoding = filterConfig.getInitParameter("encoding");
// 获取filter初始化的参数值
if (encoding != null && !encoding.equals("")) {
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
response.setContentType("text/html;charset=" + encoding);
}
// 把请求和响应带给下一个filter,如果没有下一个filter,则进入servlet
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
this.filterConfig = config;
}
}
3、在web.xml注册
<!-- 处理请求编码的过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.filter.CharacterEncodingFilter</filter-class>
<!-- 配置初始化参数 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<!-- /*对所有servlet作用,/hello===只对hello下起作用 -->
<url-pattern>/*</url-pattern>
</filter-mapping>