过滤器的使用----中文乱码过滤器与登录访问过滤器
什么是过滤器?
过滤器用于拦截传入的请求和传出的响应,以便见识修改或已某种方式处理正在客户端和服务器之间交换的数据流。过滤器在请求被servlet引擎处理之前访问请求,并且可以在请求得到处理之后访问响应。
由中文乱码过滤器为例:
@WebFilter(filterName="characterFilter",urlPatterns="/*") //servlet3.0注解配置 public class CharacterFilter implements Filter { //继承Filter接口,实现方法 @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("---乱码过滤器----"); request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); response.setCharacterEncoding("UTF-8"); chain.doFilter(request, response); //处理乱码问题后放行 } @Override public void init(FilterConfig filterConfig) throws ServletException { } }
登录访问过滤器(过滤无session状态下直接访问页面)
/** * 登录访问过滤器 * @author Administrator *下午3:27:56 */ @WebFilter(filterName="sessionFilter",urlPatterns="/jsp/*") //在jsp页面下的文件未经登录无法直接访问 public class SessionFilter implements Filter{ @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse res = (HttpServletResponse)response; Object obj = req.getSession().getAttribute("user"); if(obj == null){ //是否未登录 //未登录状态 跳转登录页面 res.sendRedirect("../login.jsp"); }else{ chain.doFilter(req, res); //通过 } } @Override public void init(FilterConfig filterConfig) throws ServletException { } }
长路漫漫,键盘作伴~