jsp_过滤器

//把浏览器上用户信息的cookie清除
Cookie[] cookies = request.getCookies();
String[] names = new String[] {"email", "password", "remember"};
for(Cookie cookie : cookies) {
    String name = cookie.getName();
    //判断是否在names数组中匹配到值 
    if(Arrays.binarySearch(names, name) >= 0) {
        cookie.setMaxAge(0);
        //添加
        response.addCookie(cookie);
    }
}
1: 过滤器(Filter)
    1): 过滤器是什么
        过滤器(Filter)是javaWeb中三大组件之一,三大组件(Servlet, Filter, Listener)
    2): Filter的作用
        对于web应用来说,过滤器就是驻留在服务器的web组件,它的作用则是截取(拦截)浏览器客户端与请求资源之间的请求与响应信息
        并且对这些信息进行筛选过滤
    3): 使用Filter
        a): 创建一个类实现Filter接口
        b): 在web.xml中添加配置
            <!-- 注册Filter -->
            <filter>
                <!-- Filter名 -->
                <filter-name>HelloFilter</filter-name>
                <!-- Filter的一个全类名 -->
                <filter-class>com.tz.srevlet.filter.HelloFilter</filter-class>
            </filter>
            <!-- 映射Filter -->
            <filter-mapping>
                <!-- Filter名 ,和上面一样 -->
                <filter-name>HelloFilter</filter-name>
                <!-- 指定要拦截的资源的url  -->
                <url-pattern>/helloServlet</url-pattern>
            </filter-mapping>
        c): 也可以使用注解配置一个Filter
            如: @WebFilter("/helloServlet")
    4): 一个Filter过滤的过程
        a): 在web容器接收一个请求时, 它则会判断是否有过滤器与这个请求的资源关联
        b): 如果有关联则会把这个请求交给过滤器来处理,在过滤器里则可以操作请求信息(比如对请求信息的改变,或者判断跳转等等)
        c): 当需要给浏览器一个响应时,同样也会先把响应信息转发给过滤器,执行Filter中放行后没有执行完的代码,在这里则可以对响应信息进行操作
        d): 最后再把响应发送给浏览器
    5): Filter接口的方法(生命周期)
        a): init(FilterConfig filterConfig) 
            在容器启动时,则会启用Filter的构造方法和init方法(只调用一次)
        b): doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
            每次在拦截请求时都会调用这个doFilter方法,逻辑代码则会写在这个doFilter方法中
        c): destroy() 
            在Filter被销毁前则会调用destroy方法,如关闭容器时(只会调用一次)
    6): FilterConfig 
            getFilterName()                         获取Filter的名字
            getInitParameter(java.lang.String name) 获取Filter的初始化参数值
            在@WebFilter配置
                如: @WebFilter(
                        urlPatterns = "/helloServlet",
                        initParams = {
                            @WebInitParam(name="user", value="小红妹妹"),
                            @WebInitParam(name="password", value="123")
                        }
                    )
            在web.xml中
                <filter>
                    <filter-name>HelloFilter</filter-name>
                    <filter-class>com.tz.srevlet.filter.HelloFilter</filter-class>
                    <!-- 配置初始化参数 -->
                    <init-param>
                        <param-name>user</param-name>
                        <param-value>小红妹妹</param-value>
                    </init-param>
                    <init-param>
                        <param-name>password</param-name>
                        <param-value>123</param-value>
                    </init-param>
                </filter>
            getInitParameterNames()                 获取Filter所有的初始名
            getServletContext()                     获取到一个ServletContext

    7): FilterChain的接口方法(只有一个doFilter方法)
            doFilter(ServletRequest request, ServletResponse response)
            "放行", 表示调用Filter链中的下一个Filter, 如果调用的Filter是Filter链中的最后一个Filter, 则会导致调用链末端的资源被调用

    8): Filter链

    9): Filter的执行的顺序
        Filter的执行顺序 与filter-mapping配置的顺序有关

    10):Filter的四种过滤方式 
        error    //当资源是通过异常处理机制来调用访问时,才会进入到Filter
        forward  //当以转发形式访问资源时,才会进入到Filter
        include  //当以包含访问资源时,才会进入到Filter
        request  //当直接访问资源时,才会进入到Filter
        在@WebFilter中配置
        如: @WebFilter(
                urlPatterns = "/jsp/*",
                //dispatcherTypes = DispatcherType.FORWARD
                //dispatcherTypes = DispatcherType.INCLUDE
                //dispatcherTypes = DispatcherType.ERROR
                //dispatcherTypes = DispatcherType.REQUEST
                dispatcherTypes = {  //配置多种过滤的方式
                    DispatcherType.REQUEST,
                    DispatcherType.INCLUDE,
                    DispatcherType.FORWARD
                }
            )
        在web.xml中配置
        如:  <filter-mapping>
                <filter-name>CFilter</filter-name>
                <url-pattern>/jsp/*</url-pattern>
                <dispatcher>ERROR</dispatcher>
                <dispatcher>FORWARD</dispatcher>
                <dispatcher>INCLUDE</dispatcher>
                <dispatcher>REQUEST</dispatcher>
            </filter-mapping>

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值