目录
- 注册过滤器
过滤器
过滤器就是用来帮助程序员较少代码量的,可以使用过滤器统一规定数据的编码和登录权限过滤:
- Servlet过滤器是在Java Servlet规范2.3中定义的,它可以拦截指定页面或指定的Servlet对其进行过滤,满足条件则放行。
- Servlet过滤器本身并不产生请求和响应对象,它只能提供过滤作用,但Servlet过滤器可以向下转型,可以获取数据来修改数据。
HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse;
- 过滤器,就相当于一本护照,没有护照你不能出国。
- 在version 3.0及以上时,可以直接在过滤器类的上面直接写@WebFilter(“/过滤对象“),不需要去web.xml里面配置,同理,Servlet也可以使用@webServlet("/Servlet的地址")。
过滤器的使用
实现过滤未登录用户访问其他页面
未登录用户过滤实现:
@WebFilter("/LoginPrivilegesFilter ") public class LoginPrivilegesFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)servletRequest; HttpServletResponse response = (HttpServletResponse)servletResponse; User user = (User) request.getSession().getAttribute(Constants.USERCODE); //用户为空表示,session内不存在值 if(user==null){ response.sendRedirect(request.getContextPath()+"/error.jsp"); }else{ filterChain.doFilter(servletRequest,servletResponse); } } @Override public void destroy() { } }