filterlistener

2017-08-21  本文已影响0人  无聊新生

什么是过滤器

概念:过滤器是javaweb三大组件之一,它的本质是一个接口

作用:可以拦截用户每次的请求与响应

特点:
1、每次请求与响应都拦截
2、可以拦截请求,转发,重定向

Filter入门

1、创建类,实现filter接口

public class AFilter implements Filter{}

2、实现init、doFilter、destory方法

   public void init(FilterConfig filterConfig) throws ServletException {}
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
            ServletException {
        chain.doFilter(request, response);//只有过滤器的时候相当于放行
    }
    public void destroy() {}

3、配置web.xml

1.png

Filter过滤原理

  1. 服务器启动,调用init()方法创建filter实例对象

  2. 用户每次请求会响应都会调用doFilter()方法

  3. 调用chain.doFilter(request, response),如果只有一个过滤器,相当于放行,如果有多个过滤器,根据web.xml文件配置的顺序依次过滤

  4. 当服务器关闭后,调用destory()方法

拦截级别

在web.xml中可以配置过滤器拦截的级别,常用的级别如下:

<!-- 拦截转发 -->
<dispatcher>FORWARD</dispatcher>
<!-- 拦截请求 -->
<dispatcher>REQUEST</dispatcher>
<!-- 拦截包含 -->
<dispatcher>INCLUDE</dispatcher>

Filter的应用

        //强转为子类,因为有更多的方法可以使用
        HttpServletRequest req=(HttpServletRequest)request;
        HttpServletResponse resp=(HttpServletResponse)response;
        //获取请求方式
        String method = req.getMethod();
        if("post".equalsIgnoreCase(method)){//如果是post请求
            req.setCharacterEncoding("utf-8");//进行编码
        }
        resp.setContentType("text/html;charset=utf-8");//所有的响应进行utf-8编码
        chain.doFilter(req, resp);//放行所有编码后的请求和响应
        HttpServletRequest req=(HttpServletRequest)request;
        HttpServletResponse resp=(HttpServletResponse)response;
        String path=req.getRequestURI();//获取请求地址
        //放过loginservlet和login.jsp
        String op =req.getParameter("op");
        if(path.endsWith("login.jsp")||"login".equals(op)){
            chain.doFilter(request, response);
            return;
        }
        //判断session是否有user对象
        User user=(User)req.getSession().getAttribute("user");
        if(user!=null){
            chain.doFilter(request, response);//如果有就放行
        }else{
            resp.sendRedirect("login.jsp");//如果没有就会登录页面
        }

监听器

监听器种类

2.png

Listener入门

1、创建类,实现接口

2、重写方法

3、web.xml配置

3.png
上一篇下一篇

猜你喜欢

热点阅读