filterlistener

什么是过滤器

概念:过滤器是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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,256评论 19 139
  • 本文包括:1、Filter简介2、Filter是如何实现拦截的?3、Filter开发入门4、Filter的生命周期...
    廖少少阅读 7,386评论 3 56
  • Filters是Java组件,它们在从请求到资源及从资源到响应上允许有效负荷与头部信息的传递。 本章描述了Java...
    Lucky_Micky阅读 874评论 0 0
  • 1.过滤器简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filte...
    胖先森阅读 1,164评论 0 16
  • 1 仙儿哥最近很忙,可以说,忙,是他的生活常态。 其实他们的工作,忙是很正常的,各种琐事,不做还不行,想想都烦。 ...
    孙晓丽阅读 356评论 0 1