day82 过滤器 监听器

本文介绍了如何在JavaWeb应用中使用过滤器进行资源路径保护,包括手动配置、注解方式及拦截器顺序。同时讲解了监听器的功能,如监听ServletContext、HttpSession和HttpSessionAttribute状态变化。重点提及了登录过滤器的实现以及监听器的典型用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过滤器

监听器

一 过滤器

        手动在web.xml配置过滤器

        url-pattern设置过滤器要保护的资源的路径

         每当我打开一次index.jsp页面或者第一个jsp.jsp页面,都会在控制台输出:-------------   

        表示先走过一次过滤器

 添加注解的方式配置过滤器:

           value值代表要保护的资源路径,多个资源路径用花括号和逗号拼接

 多个过滤器对同一个资源路径的执行顺序

        虽然添加注解的方式比较方便,但触发过滤器先后执行顺序依据web.xml文件的先后顺序为准,因为web.xml配置文件最先被解析执行。

        所以想要决定执行顺序,尽量在xml文件中配置过滤器。

        或者每个过滤器起名一样,在名字后加123数字来决定先后顺序

 过滤器的拦截目标

        默认拦截重定向的访问,转发请求可以直接绕过过滤器直接访问资源路径

需要设置 dispatcher标签对其他访问方式进行拦截

 

 对控制器所有以.do结尾设置请求数据和响应数据编码集为"utf-8"

        这样就不用在控制器中写请求数据的编码集格式了

         response.setContentType设置的是jsp界面文本的输出格式

 实现一个用户登录过滤请求


                    login.jsp  ,login.do  -->登录
                    index.jsp  (超链接: 登录 ,我的购物车,我的订单,商品列表)
                    car.jsp,car.do   -->购物车
                    orders.jsp,order.do  -->订单
                    goodsList.jsp,goodsList.do  -->商品列表
                    要求: 购物车,订单必须登录后可访问 ,未登录则跳转到登录页面
                2.1) 目录结构
                        1 需要登录后可访问 资源 都统一设置到/admin目录下
                        2 直接访问的资源 ,不放到此目录

 二 监听器

        可以监听WEB应用程序中request,session,application作用域 对象的状态。
        这些对象的状态的改变监听器都能捕获。
        当对象的状态产生了改变就自动被监听器捕获,并调用相应的方法。

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebListener
public class Listener implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener {

    public Listener() {
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        /* This method is called when the servlet context is initialized(when the Web application is deployed). */
        System.out.println("-----------application创建");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        /* This method is called when the servlet Context is undeployed or Application Server shuts down. */
        System.out.println("------------application销毁");
    }

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        /* Session is created. */
        System.out.println("-------------session建立");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        /* Session is destroyed. */
        System.out.println("------------session销毁");
    }

    @Override
    public void attributeAdded(HttpSessionBindingEvent sbe) {
        /* This method is called when an attribute is added to a session. */
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent sbe) {
        /* This method is called when an attribute is removed from a session. */
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent sbe) {
        /* This method is called when an attribute is replaced in a session. */
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值