告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发

这篇具有很好参考价值的文章主要介绍了告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编译软件:IntelliJ IDEA 2019.2.4 x64
操作系统:win10 x64 位 家庭版
服务器软件:apache-tomcat-8.5.27



一. Servlet、Filter、Listener的注解方式是什么?

Servlet、Filter和Listener都支持使用注解的方式进行配置:

  • Servlet常用的注解是@WebServlet,可以在Servlet类上添加该注解并指定Servlet的url-pattern等属性来配置Servlet。
  • Filter常用的注解是@WebFilter,可以在Filter类上添加该注解并指定要过滤的url-pattern等属性来配置Filter。
  • Listener常用的注解是@WebListener,可以在Listener类上添加该注解来声明一个Listener。

二. 为什么要使用Servlet、Filter、Listener的注解方式?

主要原因:

替代原来配置文件web.xml的写法

使用注解的好处:

  1. 使开发更加方便和快速,相比于传统的在web.xml中配置相关节点,使用注解的方式可以将配置信息直接写在对应的类上,降低了配置的复杂性,也不用手动添加大量的xml节点,减少了出错的可能性
  2. 可以提高代码的可读性和可维护性,注解可以直接放在代码中,对于开发团队来说更容易理解,而且当应用有变化时,只需要修改对应的代码就可以了,无需再去寻找web.xml文件并修改其中的配置

三. 如何使用Servlet、Filter、Listener的注解方式?

3.1 Servlet的注解方式

3.1.1 常用用法

位置:

在Servlet实现类的上方写注解

语法:

//设置当前Servlet的名称为HelloServlet,访问其路径为/hello
@WebServlet(name="HelloServlet",value="/hello"

name:相当于配置文件的servlet-name的值
value:相当于配置文件的url-pattern

可以简写:

name可以省略,如果只剩下value属性,属性名可以省略,如 @Webservlet(“/hello”)

注意:

value属性和urlPatterns属性都可以用来指定Servlet能够处理的请求路径。
如果同时指定了两个属性,则以urlPatterns属性的值为准。

例如@WebServlet(name=“HelloServlet”,value=“/hello”,urlPatterns =‘’/first"),最终以/first作为访问路径**

3.1.2 案例

案例:使用Servlet的注解代替原来的web.xml映射Servlet,演示其效果

代码示例如下:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//设置HelloServlet的访问路径 :/hello
@WebServlet(name = "HelloServlet",value = "/hello")
public class HelloServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("访问了HelloServlet.......");
    }
}

告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发

告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发

3.2 Filter的注解方式

3.2.1 常用用法

位置:

在Filter实现类的上方写注解

语法:

//声明一个Filter,指定该Filter名为HelloFilter,指定了该Filter处理请求的url-pattern为"/hello"
@WebFilter(filterName="HelloFilter",urlPatterns="/hello")

filterName:相当于web.xml中的filter-name标签的值
urlPatterns:相当于web.xml中的url-pattern标签的值

注意:

value属性和urlPatterns属性都可以用来指定Servlet能够处理的请求路径。
如果同时指定了两个属性,则以urlPatterns属性的值为准。

3.2.2 案例

案例:使用F1lter注解代替原来的web.xml映射的形式设置HelloFilter的过滤路径,演示其效果

代码示例如下:

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

//设置HelloFilter的过滤路径:/hello
@WebFilter(filterName="HelloFilter",urlPatterns="/hello")
public class HelloFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("HelloFilter放行前的代码...");
        filterChain.doFilter(servletRequest,servletResponse);//放行请求
        System.out.println("HelloFilter放行后的代码...");
    }

    @Override
    public void destroy() {

    }
}

告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发

告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发

3.3 Listener的注解方式

3.3.1 常用用法

位置:

在 Listener实现类的上方写注解

语法:

@WebListener

ps:

此注解方式一般不用写属性值,且它默认只有一个属性value(默认属性值为空字符串)

3.3.2 案例

案例:使用Listener的注解代替原来的web.xml注册监听器的形式,演示其效果

代码示例如下:

@WebListener
public class MyListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContext对象创建后执行");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContext对象销毁后执行");
    }
}

告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发文章来源地址https://www.toymoban.com/news/detail-428531.html

到了这里,关于告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring注解驱动开发之常用注解案例_告别在XML中配置Bean

    注解驱动开发就是不再使用Spring的bean.xml文件,改为纯使用注解的方式开发 @Configuration 此注解为配置类注解,相当于spring.xml文件,即配置类==配置文件 @Bean 给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id 示例 Person类(后续注解配置类中都会以此类举例),

    2024年01月21日
    浏览(51)
  • Servlet——web.xml配置

    本文主要介绍Web.xml常用配置项,包括: web首页的修改 Servlet通配符映射与初始化参数 全局参数的设置 404,500等错误码的页面设置 例如: 效果如下(默认访问到了index.html文件): 二级页面同样适用: Servlet代码层: 结果: 看一个之前的例子: xml中配置全局参数 servlet中获取

    2023年04月15日
    浏览(42)
  • Servlet 初始化参数(web.xml和@WebServlet)

     

    2024年02月06日
    浏览(61)
  • JavaBean、MVC、Filter和Listener

    JavaBean 是一种JAVA语言写成的可重用组件。 实体类(pojo)。 JavaBean有特殊的写法: 必须要有一个无参构造 属性必须私有 必须要对应的set/get方法 本质就是一个java类 一般用来和数据库字段做映射 ORM:对象关系映射 表---类 字段---属性 行记录---对象 MVC:Model模型,View视图,Co

    2024年02月11日
    浏览(38)
  • JavaWeb学习|JavaBean;MVC三层架构;Filter;Listener

    实体类 JavaBean有特定的写法: 必须要有一个无参构造 属性必须私有化。 必须有对应的get/set方法 用来和数据库的字段做映射 ORM; ORM:对象关系映射 表---类 字段--属性 行记录----对象   Filter:过滤器,用来过滤网站的数据 处理中文乱码 登录验证.... 弄一个过滤器的demo 空maven+web项

    2024年02月13日
    浏览(52)
  • 小黑子—JavaWeb:第六章 - Filter、Listener、AJAX与JSON

    概念: Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。 过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等 定义类,实现Filter接口,并重写其所有方法 配置

    2024年02月14日
    浏览(46)
  • 【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]

    【❤️终极解决方案❤️】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml] 如同上面说的,启动Tomcat之后,项目初始化找不到配置文件dispatcher-servlet.xml 。 1.1、配置文件命名问题 web.xml文件中配置的servlet名字和springmvc配置文件的名字不一样,修改成一样即可。 这里要

    2024年02月10日
    浏览(39)
  • 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)
  • DAY14_Filter&Listener&Ajax&Axios&Json&fastjson&综合案例-axios和html交互

    Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求 拦截 下来,从而实现一些特殊的功能。 如下图所示,浏览器可以访问服务器上的所有的资源(servlet、jsp、html等) 而在访问到这些资源之前可以使过滤器拦截来下,也就是说在访问

    2024年02月15日
    浏览(39)
  • Spring Boot 3.1.2版本使用javax.servlet.Filter时,发现Filter不起作用

    在学习Filter的过程中,我实现了Filter的init和destory方法以及doFilter方法后,运行SpringBoot程序发现,我的控制台中并没有输出ini和destory中的调试信息。 代码如下:  可以看到控制台中并没有输出initialize Filter和destory Filter等信息  利用postman发送http请求发现access Filter也没有输出

    2024年03月09日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包