高手速成 | 过滤器、监听器的创建与配置

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

 

高手速成 | 过滤器、监听器的创建与配置

 本节讲解过滤器、监听器的创建以及监听事件配置示例。

01、过滤器的创建与配置

【例1】创建过滤器及配置过滤规则。

(1) 在Eclipse中新建一个Web项目,取名为Chapt_09。在src目录下,新建一个名为com.test.filter的包。选中该包并按Ctrl+N组合键,在弹出的菜单中选择Web→Filter。选择创建过滤器,如图1所示,单击Next按钮。

高手速成 | 过滤器、监听器的创建与配置

■ 图1 选择创建过滤器

(2) 为创建的过滤器命名,如图2所示。在弹出的Create Filter对话框的Class name的文本框内输入TestFilter后,单击Next按钮。

高手速成 | 过滤器、监听器的创建与配置

■ 图2 为创建的过滤器命名

(3) 为过滤器添加过滤规则,如图3所示。在Filter mapping设置部分,单击Add按钮,在弹出的对话框中选中URL pattern单选框,并在Pattern下的文本框中填写/TestServlet,单击OK按钮,返回到Create Filter选项卡中并单击Finish按钮,即完成了对过滤器的设置。

高手速成 | 过滤器、监听器的创建与配置

 (4) 根据以上配置,TestFilter.java源文件自动生成的代码如下:

package com. test. filter;
import java. io. IOException;
import javax. servlet. Filter;
import javax. servlet. FilterChain;
import javax. servlet. FilterConfig;
import javax. servlet. ServletException;
import javax. servlet. ServletRequest;
import javax. servlet. ServletResponse;
import javax. servlet. annotation. WebFilter;
@WebFilter( {" /TestServlet" J)
public class TestFilter implements Filter {
public TestFilter() {
]
public void destroy() {
}
public void doFilter (ServletRequest request,
ServletResponse response, FilterChain chain) throws
chain. doFilter (request, response);
public void init(FilterConfig fConfig) throws ServletExcept{
             }
}

以上操作步骤是对一个过滤器的创建和过滤规则的配置,即TestFilter过滤器对访问路径为/TestServlet的访问资源进行过滤。

(5) 在TestFilter类中的各方法中填写代码如下:

public TestFilter() {
System.out.print 1n("过滤器构造器两数运行");
public void destroy() {
System.out.print 1n("过滤器消亡两数运行");

public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain)
throws I0Exception, ServletException {
System,out. printin(“对请求进行过滤处理”);
chain, doFilter (request, response);
System.out. println(”执行 chain. dorilter 方法后面的代码”);
}
public void init( FilterConf ig fConf ig ) throws ServletExcept ion {
System. out. print 1n("过滤器初始化两数运行”);

 (6) 在src目录下新建一个名为com.test.servlet的包,在该包下新建一个名为TestServlet的Servlet,匹配URL为/TestServlet,然后编写代码如下:

@WebServlet (" /TestServlet")
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public TestServlet () {
System. out.print1n("servlet 构造两数运行”);
)
protected void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletExcept ion, IOException {
Systen. out. Drint In( "servlet 请求处理”);

protected void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet (request, response);
}

(7) 验证当访问/TestServlet时,过滤器TestFilter是否对其进行过滤。

首先启动Tomcat,运行项目Chapt_09,在浏览器中输入http://localhost:8080/Chapt_09。Tomcat服务器启动后的后台输出显示如图4所示。此时控制台输出了过滤器构造函数与初始函数中的输出语句,说明当Web容器启动时,先初始化过滤器TestFilter。

高手速成 | 过滤器、监听器的创建与配置

■ 图4 Tomcat服务器启动后的后台输出显示

其次,再访问TestServlet,在浏览器中输入http://localhost:8080/Chapt_09/TestServlet,此时匹配过滤规则,因此过滤器对该Servlet请求进行了过滤。进行过滤后的Tomcat服务器控制台输出如图5所示。

高手速成 | 过滤器、监听器的创建与配置

■ 图5 进行过滤后的Tomcat服务器控制台输出

通过以上结果可以得出以下结论。

(1) 过滤器在服务器启动时也随之初始化。

(2) 当符合过滤规则的URL请求访问时,首先调用Filter的doFilter()函数,对请求进行过滤,过滤完毕后,过滤器执行chain.doFilter(request, response)语句,将请求提交给过滤链中的下一个过滤器。

(3) 当所有过滤器都执行完对请求的过滤后,服务器执行Servlet处理请求的doGet()函数。

(4) 执行完Servlet的代码后,再执行chain.doFilter语句的后续代码。

注意,在上面的例子中,TestFilter类使用了以下注解语句:

@ WebFilter(["/TestServlet"})

 该注解表示对访问URL为/TestServlet的请求进行过滤。和Servlet配置一样,也可以在web.xml文件中对Filter进行过滤规则的配置。上面的注解等价于在web.xml中编写下面的配置语句:

< filter >
< filter - name > TestFilter </filter - name›
< filter - class > com. test. filter. TestFilter </filter - class>
</filter>
< filter - mapping >
< filter - name > TestFilter </filter - name >
< url - pattern >/TestServlet </url - pattern>
</filter - mapping ›

注意,在标签体内部还可以通过和两个标签来设置初始化参数,也可以通过上面创建Filter的第(3)步中的选项卡里的initialization parameters来设置。

事实上,在url-pattern过滤规则中可以非常灵活地指定需要过滤的资源,一般有以下3种。

(1) 过滤一个或多个Servlet或者JSP文件。

① 注解的形式如下:

@WebFilter(! "path/Serwlet1","path/Serwlet2"
"path/xxx. jsp"...})

 ② 在web.xml中编写语句如下:

<filter >
< filter - name >过滤器多称</filter - name >
< filter - class >过滤器的类名</filter - class ></filter >
< filter - mapping >
< filter - name >过滤器名称</filter - name >< url - pattern >/ path/Servlet1 </url - pattern ></filter - mapping >
<filter - mapping >
<filter - name >过滤器名称</filter - name >
< url - pattern >/ path/Servlet2 </url - pattern >/filter - mapping >
<filter - mapping >
<filter - name >过滤器名称</filter - name ><url - pattern >/ path/xxX. jsp </url - pattern >
</filter - mapping >

 

该方式一般针对特定的Servlet或者JSP文件进行过滤处理。

(2) 过滤一个或者多个目录下的资源。

① 注解的形式如下:

@WebFilter({ "path/ *"})

 ② 在web.xml中编写语句如下:

<filter >
< filter - name >过滤器名称</filter - name >
< filter - class >过滤器的类名</filter - class ></filter >
< filter - mapping >
< filter - name>过滤器名称</filter - name ><url - pattern >/ path/ x </url - pattern ></filter - mapping >

 

注意,此时使用了通配符*,表示路径下的所有文件。

(3) 过滤所有文件。

① 注解的形式如下:

@WebFilter({"/*})

 ② 在web.xml中编写语句如下:

< filter >
< filter - name>过滤器名称</filter - name>
< filter - class >过滤器的类名</filter - class ></filter >
<filter - mapping >
< filter - name >过滤器名称</filter - name><url - pattern >/ * </url - pattern ></filter - mapping >

 

注意,url-pattern内部以“/”开头,“/”表示的是应用系统的根目录。

另外,在内部还可以通过标签更加细化地指定过滤的URL的请求方式,该元素的值有以下4种。

(1) request:直接由客户端输入对应URL的访问请求。

(2) forward:通过request转发中的forward方式跳转的访问请求。

(3) include:通过request转发中的include方式跳转的访问请求。

(4) error:通过跳转的访问请求。

请求方式的配置也可以在图9-4中的Select dispatchers部分进行设置,设置后会直接在注解中生成对应的配置语句。如果没有在配置文件中指定标签元素,也没有在注解中指定,就默认只过滤request方式。

02、监听器的创建与配置

【例2】监听器的创建以及监听事件配置。

(1) 在src目录下创建一个名为com.test.listener的包,选中该包并按Ctrl+N组合键,在弹出的对话框中选择Web→Listener。选择创建监听器,如图6所示,然后单击Next按钮。

高手速成 | 过滤器、监听器的创建与配置

■ 图6 选择创建监听器

(2) 在弹出的Create Listerner对话框中对监听器进行命名,如图7所示。在Class name文本框内输入TestListener,单击Next按钮。

高手速成 | 过滤器、监听器的创建与配置

 

■ 图7在Create Listerner对话框中对监听器进行命名

(3) 在监听对象事件选项中,选中需要监听的对象事件,如图8所示。此处选择监听HttpSession对象,以及其属性的改变,然后单击Next按钮。

高手速成 | 过滤器、监听器的创建与配置

■ 图9 选中要监听的事件

(4) 确定监听器对象要实现的接口,如图10所示。单击Finish按钮即可完成对监听器的创建。

高手速成 | 过滤器、监听器的创建与配置

■ 图10 确定监听器要实现的接口

此时,IDE自动生成了TestListener.java需要实现的接口方法名称,代码如下:

import javax. servlet. annotation. WebListener;
import javax. servlet. http. HttpSessionAttributeListener;
import javax. servlet. http. HttpSessionBindingEvent;
import javax. servlet. http. HttpSessionEvent;
import javax. servlet. http. HttpSessionListener;
@WebListener
public class TestListener implements HttpSessionListener,
HttpSessionAttributeListener {
public TestListener ( ) |
public void sessionCreated (HttpSessionEvent se) {
}
}
public void sessionDestroyed(HttpSessionEvent se) {
public void attributeAdded (HttpSessionBindingEvent se){
public void attributeRemoved(HttpSessionBindingEvent se) {
public void attributeReplaced(HttpSessionBindingEvent se) {
}
}

 注意,在TestListener类的上面一行出现了@WebListener的注解语句,表明这是一个Web监听器。这条注解等价于在web.xml中编写了如下配置。

< listener >
<listener - class > com.test,listener,Testlistener </listener - class>
</listener >

如果想实现具体的监听功能,就必须实现接口中定义的相关方法。 

03、文末送书

高手速成 | 过滤器、监听器的创建与配置

 高手速成 | 过滤器、监听器的创建与配置

 高手速成 | 过滤器、监听器的创建与配置

 高手速成 | 过滤器、监听器的创建与配置

 高手速成 | 过滤器、监听器的创建与配置

 高手速成 | 过滤器、监听器的创建与配置

 高手速成 | 过滤器、监听器的创建与配置

 送书活动参与方式:

文章三连并评论:“人生苦短,我爱Java”,48小时后程序自动抽奖,送出6本技术图书【如上图】,版本可选(例如选卷1或卷2),欢迎大家积极参与,早点中奖!

再次感谢机械工业出版社对本次活动的大力支持!文章来源地址https://www.toymoban.com/news/detail-464192.html

到了这里,关于高手速成 | 过滤器、监听器的创建与配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring中最简单的过滤器和监听器

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

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

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

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

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

    2024年02月13日
    浏览(36)
  • 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日
    浏览(35)
  • JavaWEB学习笔记(二)------HTTP、Servlet、会话、过滤器、监听器、Ajax、前端工程化

    目录 HTTP HTTP1.1 请求和响应的报文格式 请求报文 响应报文 常见状态响应码 Servlet  静态资源和动态资源 ​编辑  Servlet简介  Servlet开发流程 导入和响应头问题 url-pattern不同写法 url-pattern工作方式 Servlet注解方式配置 Servlet生命周期  Servlet继承结构 Servlet接口 GenerisServlet类 Ht

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

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

    2024年02月11日
    浏览(29)
  • Java高手速成 | 图说重定向与转发

     我们先回顾一下Servlet的工作原理,Servlet的工作原理跟小猪同学食堂就餐的过程很类似。小猪同学点了烤鸡腿(要奥尔良风味的),食堂窗口的服务员记下了菜单,想了想后厨的所有厨师,然后将菜单和餐盘交给专门制作烤鸡腿的厨师,这位大厨根据菜单制作出奥尔良烤鸡腿

    2024年02月09日
    浏览(34)
  • Spring高手之路7——事件机制与监听器的全面探索

      观察者模式是一种行为设计模式,它定义了对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在这个模式中,改变状态的对象被称为主题,依赖的对象被称为观察者。 举个实际的例子: 事件源(Event Source) :可以视

    2024年02月11日
    浏览(31)
  • Spring高手之路15——掌握Spring事件监听器的内部逻辑与实现

    在阅读本文之前需要你已经对事件监听器有了简单的了解,或去阅读前面的文章《 Spring高手之路7——事件机制与监听器的全面探索 》   在 Spring 中, ApplicationContext 可以形成一个层次结构,通常由主容器和多个子容器组成。一个常见的疑问是:当一个事件在其中一个容器

    2024年02月06日
    浏览(36)
  • jQuery选择器(二)(基本过滤器,内容过滤器,可见过滤器)

    写在前面 jQuery是一个快速、简洁的 JavaScript 框架,是继Prototype之后又一个优秀的 JavaScript 代码库。jQuery的设计宗旨是“WriteLess,DoMore”,即倡导写更少的代码,做 更多的事情。jQuery封装了 JavaScript 常用的功能代码,提供一种简便的 JavaScript 设计模式,优化HTML文档操作、事件

    2024年02月02日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包