J2EE WEB注解 使用语法

  • Tomcat 9

WEB 容器给我们提供了很多组件,比如:Servlet、JSP、Filter、Listener

  • JSP 使用特殊,WEB 容器内部的 web.xml 配置文件替我们已做好配置并找到解析引擎自动转化为 Servlet
  • 而 Servlet、Filter、Listener,在我们使用时必须遵循规则(继承或实现类、方法重写)还必须要配置工程中的 web.xml 配置文件

但是配置 web.xml 是很繁琐的,一个 Servlet 就至少需要配置 8 行信息。

为了优化配置,WEB框架(比如 Struts2、SpringMVC…)应运而生

框架出现之后,Web容器(Tomcat)也更新了相关的版本,WEB3.0以后支持注解(替代 web.xml 文件的配置)

WEB 注解

@WebServlet、@WebFilter、@WebListener,分别简化 Servlet、Filter、Listener 的配置

@WebServlet

(1-1)配置 web.xml 文件

如果是手动配置 web.xml 文件,至少需要八行

<servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>controller.TestController</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/test</url-pattern>
</servlet-mapping>

(1-2)在控制层的 Servlet 类上配置注解:

//1.
@WebServlet(urlPatterns = "/test")

//2.如果只有一个请求关联,并且不携带配置信息
@WebServlet(value = "/test")

//2.或者
@WebServlet("/test")

//3.如果有多个请求关联到该 Servlet 类
@WebServlet(urlPatterns = {"/test","/test2"})

(2-1)配置 web.xml 文件

Servlet 类是由生命周期托管方式实现懒加载,可以在 web.xml 配置文件中改为立即加载方式并配置多个 Servlet 类之间的加载顺序

<servlet>
    ...
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    ...
</servlet-mapping>

(2-2)在控制层的 Servlet 类上配置注解:

@WebServlet(urlPatterns = "/test", loadOnStartup = 0)

(3-1)配置 web.xml 文件

Servlet 类在配置 web.xml 文件时,还可以携带信息

<servlet>
    ...
    
    <init-param>
        <param-name>zhangsan</param-name>
        <param-value>333</param-value>
    </init-param>
    <init-param>
        <param-name>lisi</param-name>
        <param-value>444</param-value>
    </init-param>
    
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    ...
</servlet-mapping>

(3-2)在控制层的 Servlet 类上配置注解:

虽然可以在注解中做到携带配置信息,但其实是没有必要的,注解与类写在一起方便开发的同时,项目运行时是不能修改的。所以直接将这些信息写在类中就可以了。

@WebServlet(
        urlPatterns = "/test",
        loadOnStartup = 0,
        initParams = {
                @WebInitParam(name = "zhangsan", value = "333"),
                @WebInitParam(name = "lisi", value = "444")
        }
)

还有其他一些配置,但几乎没有使用需求,参考上述内容也知道用法的。

@WebFilter

除了名字与 @WebServlet 不同,并且没有 loadOnStartup 配置;它们两的使用方式一模一样。

@WebListener

配置 web.xml 文件很简单

<listener>
    <listener-class>类全名</listener-class>
</listener>

注解同样很简单,类上配置以下注解即可

@WebListener

终上,使用WEB注解,项目中就不用创建 web.xml 配置文件了。