过滤器
过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。
Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
它主要用于对用户请求进行预处理,也可以对HttpServletResponse 进行后处理。使用Filter 的完整流程:Filter 对用户请求进行预处理,接着将请求交给Servlet 进行处理并生成响应,最后Filter 再对服务器响应进行后处理。
建立Filter
CharsetEncodingFilter.java
package com.drp.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;
/**采用filter统一处理filter
* @author Danny
*
*/
public class CharsetEncodingFilter implements Filter {
@Override
public void destroy() {}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("CharsetEncodingFilter---->>>>Filter开始");
request.setCharacterEncoding("utf-8"); //设置字符集
chain.doFilter(request, response); //继续执行
System.out.println("CharsetEncodingFilter---->>>>Filter结束");
}
@Override
public void init(FilterConfig config) throws ServletException {}
}
此过滤器CharsetEncodingFilter实现了javax.servlet.Filter接口(任何filter过滤器也必须实现这个接口);在服务器创建此filter并进行初始化执行init方法时,读取配置文件并存入FilterConfigure的对象中;实现doFilter方法,在请求到达jsp之前将字符集编码设置为utf-8,chain.doFiler()方法的作用是在对request对象进行处理之后,跳转到被拦截的servlet继续执行,执行完之后还要回到此处,chain.doFilter()下面还可以对response对象进行处理。
尚学堂立志解决中国教育不公平和低效率问题,帮助千千万万被传统教育方式耽误的人,传授实用、前沿的知识,成就学员个人理想,为爱你的人和你爱的人创造美好的生活。尚学堂12大精英团队+各类实战项目,真正实现1+1>10的目标效果。帮助学员迅速成长,持久腾飞,成就学员“高富帅”人生。
閱讀更多 小菜鳥學Java 的文章