JavaWeb17(过滤器&监听器)

这篇具有很好参考价值的文章主要介绍了JavaWeb17(过滤器&监听器)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.过滤器/拦截器-Filter.

1.1过滤器介绍.

1.2过滤器使用步骤.

1.2.1创建过滤器.

1.2.2映射配置.

1.3案例1-编码设置.

1.4案例2-登陆状态验证.

1.4过滤链-略带.

2.监听器-Listener.

2.1监听器介绍.

2.2案例演示1-统计在线人数.

2.3案例演示2-统计历史在线人数.


1.过滤器/拦截器-Filter.

1.1过滤器介绍.

  • 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。

  • S2阶段使用过滤器主要进行页面编码设置和登录状态验证。


1.2过滤器使用步骤.

1.2.1创建过滤器.

  • 创建过滤器包filter,创建普通java类并实现Filter接口;

  • 重写destroy(销毁)doFilter(执行/处理)init(初始化),作用如下:

    1. init方法,初始化Filter,Filter在服务器启动阶段被实例化。并且调用init方法,init方法只执行一次,因为Filter只被实例化一次。

    2. destory方法,销毁Filter,释放内存,在web服务正常停止时调用此方法。或者项目重新部署,或者服务器重新启动的时候,会销毁所有的Filter对象,销毁之前会先调用Filter对象的destroy方法,完成销毁前的准备工作,也是只执行一次。

    3. doFilter方法里面编写过滤器要执行的逻辑代码(重点)。

  • 如下所示:

JavaWeb17(过滤器&监听器)


1.2.2映射配置.

  • web.xml方式:

JavaWeb17(过滤器&监听器)

  • 注解方式:

    1. @WebFilter("/*");

    2. @WebFilter("/home/*");

    3. @WebFilter("*.do");


1.3案例1-编码设置.

  • 代码如下:

JavaWeb17(过滤器&监听器)


1.4案例2-登陆状态验证.

  • 效果:没有登陆则不能访问项目的某些页面,比如:购物车页面、订单页面、所有servlet文件等。

  • 哪些页面不需要被登陆就可以访问?登陆前后端jsp页面以及对应的servlet文件;

  • 实现代码:

JavaWeb17(过滤器&监听器)

  • 注,getWrite()方法如果执行两次及以上程序会报500错,当过滤资源过多的时候,过滤器里面的代码会被执行多次,所以不建议在过滤器里面调用 getWrite()方法获取 PrintWriter对象。因此在过滤器里面跳转到登陆页面通过:response.sendRedirect(request.getContextPath()+"/admin/login.jsp");

  • 思考,如果在同一个过滤器里面实现前端的登陆状态验证,该如何处理?


1.4过滤链-略带.

  • 在一个Web应用程序中,可以部署多个过滤器进行拦截,这些过滤器组成了一个过滤器链。过滤器链中的每个过滤器负责特定的操作和任务,客户端的请求在这些过滤器之间传递。具体执行流程如下:

JavaWeb17(过滤器&监听器)


2.监听器-Listener.

2.1监听器介绍.

  • 一个实现特定接口的普通java程序,而这个java程序专门用于监听另一个java对象的方法调用或属性的改变,当被监听对象发生上述事件后,监听的某个方法将立即被执行。常用于监听Web应用中某些对象的创建、销毁、增加、修改、删除等动作的发生,然后作出相应的响应处理。当监听范围的对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计网站在线人数、系统加载时进行信息初始化、统计网站的访问量等等。

  • 监听器分类:按照监听的对象不同可分为HttpRequest域,HttpSession域和ServletContext域。如:

    1. ServletContextListener监听器,此监听器主要用来监听ServletContextListener的创建与销毁即服务器的创建与销毁;

    2. HttpSessioinListener监听器,此监听器用来监听Session的创建与销毁;

    3. HttpSessionAttributeListener 是SessionAttribute的监听,当在会话对象中加入属性、移除属性或替换属性时,就会调用HttpSessionAttributeListener监听器。

    4. ServletRequestListener监听器,此监听器用来监听每一次请求调用请求创建时的方法,当请求结束时,调用销毁的方法。


2.2案例演示1-统计在线人数.

  • 思路分析:

    • 每当有一个访问连接到服务器时,服务器就会创建一个 session来管理会话;

    • 那么就可以通过统计 session的数量来获得当前在线人数。所以这里用到的监听器是 HttpSessionListener

  • 创建 Java类 OnLineCountListener 实现 HttpSessionListner接口,并添加监听器注解:@WebListener。代码如下:

JavaWeb17(过滤器&监听器)

  • jsp页面:<h1>在线人数:${sessionCount} </h1>

  • 注,

    1. 因为同一类型浏览器不管打开多少个会话,都是共享一个sessoin(无痕模式和非无痕模式不共享)。所以要打开不同类型浏览器访问项目(google/IE/Edge)进行测试。

    2. 关闭浏览器人数不会减少,必须以注销 session的方式退出才能实现人数减少。

  • 注销功能:

退出按钮:

<a href="loginOut.jsp">

    <h2>退出</h2>

</a>

loginOut.jsp:

<%session.invalidate();%>

<h3>您已退出本系统</h3>


2.3案例演示2-统计历史在线人数.

  • 该功能的实现思路:在用户退出的时候不减少人数。其实就是注释掉统计在线人数案例里面销毁方法-sessionDestroyed的代码。文章来源地址https://www.toymoban.com/news/detail-472080.html


到了这里,关于JavaWeb17(过滤器&监听器)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot中使用拦截器、过滤器、监听器

    Javaweb三大组件:servlet、Filter(过滤器)、 Listener(监听器) SpringBoot特有组件:Interceptor(拦截器) 过滤器、拦截器、监听器、AOP(后续文章介绍)、全局异常处理器(后续文章介绍)是搭建系统框架时,经常用到的部分,全局异常处理器的作用很明显,就是处理接口执行

    2024年02月03日
    浏览(42)
  • Spring中最简单的过滤器和监听器

            Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息

    2024年02月14日
    浏览(42)
  • SpringBoot2.0(过滤器,监听器,拦截器)

    使用Servlet3.0的注解进行配置 启动类里面增加 @ServletComponentScan ,进行扫描 新建一个Filter类,implements Filter ,并实现对应接口 @WebFilter 标记一个类为Filter,被spring进行扫描 urlPatterns:拦截规则,支持正则 控制chain.doFilter的方法的调用,来实现是否通过放行, 不放行的话,web应用

    2024年02月07日
    浏览(42)
  • springbboot拦截器,过滤器,监听器及执行流程

    过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前 请求按照上图进入conteoller后执行完再返回 过滤器是Servlet规范中定义的一种组件,可以用于在请求进入Web应用程序之前或响应离开Web应用程序之前对请

    2024年02月13日
    浏览(43)
  • 033-安全开发-JavaEE应用&SQL预编译&Filter过滤器&Listener监听器&访问控制

    1、JavaEE-JDBC-SQL预编译 2、JavaEE-HTTP-Filter过滤器 3、JavaEE-对象域-Listen监听器 演示案例: ➢JavaEE-预编译-SQL ➢JavaEE-过滤器-Filter ➢JavaEE-监听器-Listen 提前编译好执行逻辑,你注入的语句不会改变原有逻辑! 预编译写法: safesql 是一个预编译的 SQL 查询语句,其中 ? 是一个占位符

    2024年02月22日
    浏览(51)
  • web3j的基础用法-6合约的监听器事件Event和过滤器EthFilter,以及NullPointed,调用失败导致的bug解决

    本篇以Uniswap为例(https://uniswap.org/) 合约地址 :0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 (Uni) 监听合约Tranfer事件 调用代码 核心代码实现在这里 之前实验全量区块,导致请求多次失败,是由于个人RPC节点的请求和数据有限,为了测试出结果,从13763721L block到当前,结果毫秒级返

    2024年02月11日
    浏览(50)
  • 【JavaWeb】9—监听器

    ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 如果文章对你有所帮助,可以点赞👍收藏⭐支持一下博主~😆 可见Java设计模式中的观察者模式。 观察者:监控『被观察者』

    2023年04月09日
    浏览(48)
  • javaweb监听器和juery技术

    为其添加过滤器 最终到达的页面

    2024年02月13日
    浏览(35)
  • Javaweb | 过滤器、配置、过滤器链、优先级

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 概念 过滤器(Filter)是处于客户端与服务器目标资源之间的一道过滤技术 用户的请求和响应都需要经过过滤器 过滤器作用 执行地位在Servlet之前,客户端发送请求是,会先经过Filter,再到达目标Servlet中;响应时,会根

    2023年04月17日
    浏览(54)
  • JavaWeb 中 Filter过滤器

    @ 目录 Filter过滤器 每博一文案 1. Filter 过滤器的概述 2. Filter 过滤器的编写 3. Filter 过滤器的执行过程解析 3.1 Filter 过滤结合 Servlet 的使用 4. Filter 过滤器的拦截路径: 4.1 精确匹配路径 4.2 目录匹配 4.3 前后缀名路径匹配 4.4 所有路径匹配 5. 设置 Filter 执行顺序 6. Filter 过滤器中

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包