Servlet 3.0新增注释

新增注释是Servlet 3.0中的重大革新之一。通过使用注释就无需在web.xml文件中对Servlet或者过滤器进行配置。

新增的注释支持:Servlet 3.0的部署描述文件web.xml的顶层标签 有一个 metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的。
如果设置为 true,则容器在部署时将只依赖部署描述文件,忽略所有的注解
如果不配置该属性,或者将其设置为 false,则表示启用注解支持

Servlet 3.0新增的注释有@WebServlet@WebFilter@WebListener@WebInitParam等。

@WebServlet

@WebServlet注释定义在Servlet的类声明之前,用于定义Servlet组件。使用该注释,就无需在web.xml文件中对Servlet进行配置。@WebServlet主要属性如下表所示:

属性名类型描述
nameString指定 Servlet 的 name 属性,等价于 。如果没有显式指定,则该 Servlet 的取值即为类的全限定名
valueString[]该属性等价于 urlPatterns 属性。两个属性不能同时使用
urlPatternsString[]指定一组 Servlet 的 URL 匹配模式。等价于 标签
loadOnStartupint指定 Servlet 的加载顺序,等价于 标签
initParamsWebInitParam[]指定一组 Servlet 初始化参数,等价于 标签
asyncSupportedboolean声明 Servlet 是否支持异步操作模式,等价于 标签
descriptionString该 Servlet 的描述信息,等价于 标签
displayNameString该 Servlet 的显示名,通常配合工具使用,等价于 标签

注意:以上所有属性均为可选属性,但valueurlPatterns其中一个必存在,若两个同时存在,一般忽略value取值。

例:
SimpleServlet.java

@WebServlet(urlPatterns = {"/simple"}, asyncSupported = true, 
loadOnStartup = -1, name = "SimpleServlet", displayName = "ss", 
initParams = {@WebInitParam(name = "username", value = "tom")}) 
public class SimpleServlet extends HttpServlet{ … }

其等价于以下的web.xml文件配置

<servlet>
    <display-name>ss</display-name>
    <servlet-name>SimpleServlet</servlet-name>
    <servlet-class>footmark.servlet.SimpleServlet</servlet-class>
    <load-on-startup>-1</load-on-startup>
    <async-supported>true</async-supported>
    <init-param>
        <param-name>username</param-name>
        <param-value>tom</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>SimpleServlet</servlet-name>
    <url-pattern>/simple</url-pattern>
</servlet-mapping>

@WebFilter

@WebFilter注释器用于声明过滤器,该注释将会在部署时被容器处理,容器根据具体的属性配置将相应的类部署为过滤器。

@WebFilter主要属性如下表所示:

属性名类型描述
filterNameString指定过滤器的 name 属性,等价于
valueString[]该属性等价于 urlPatterns 属性。但是两者不应该同时使用
urlPatternsString[]指定一组过滤器的 URL 匹配模式。等价于 标签
servletNamesString[]指定过滤器将应用于哪些 Servlet。取值是 @WebServlet 中的 name 属性的取值,或者是 web.xml 中 的取值
dispatcherTypesDispatcherType指定过滤器的转发模式。具体取值包括:ASYNC、ERROR 、FORWARD、INCLUDE、REQUEST
initParamsWebInitParam[]指定一组过滤器初始化参数,等价于 标签
asyncSupportedboolean声明过滤器是否支持异步操作模式,等价于 标签
descriptionString该过滤器的描述信息,等价于 标签
displayNameString该过滤器的显示名,通常配合工具使用,等价于 标签

注意:以上所有属性均为可选属性,但valueurlPatternsservletNames三者必须至少包含一个,若valueurlPatterns两个同时存在,一般忽略value取值。

例:
LessThanSixFilter.java

@WebFilter(servletNames = {"SimpleServlet"},filterName="SimpleFilter") 
public class LessThanSixFilter implements Filter{...}

其等价于以下的web.xml文件配置

<filter> 
    <filter-name>SimpleFilter</filter-name> 
    <filter-class>LessThanSixFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>SimpleFilter</filter-name> 
    <servlet-name>SimpleServlet</servlet-name> 
</filter-mapping>

@WebListener

@WebListener注释器用于声明监听器,还可以用于充当给定Web应用上下文中各种Web应用事件的监听器的类。被@WebListener标注的类必须实现以下至少一个接口:

  • ServletContextListener
  • ServletContextAttributeListener
  • ServletRequestListener
  • ServletRequestAttributeListener
  • HttpSessionListener
  • HttpSessionAttributeListener

@WebListener的常用属性

属性名类型是否可选描述
valueString该监听器的描述信息

例:
SimpleListener.java

@WebListener("This is only a demo listener") 
public class SimpleListener implements ServletContextListener{...}

其等价于以下的web.xml文件配置

<listener> 
    <listener-class>footmark.servlet.SimpleListener</listener-class> 
</listener>

@WebInitParam

@WebInitParam注释等价于web.xml文件中的和的子标签,该注释通常不单独使用,而是配合@WebServlet和@WebFilter使用。其作用是为Servlet或者过滤器指定初始化参数。
@WebInitParam主要属性如下表所示:

属性名类型是否可选描述
nameString指定参数的名字,等价于
valueString指定参数的值,等价于
descriptionString关于参数的描述,等价于

参考资料

  1. Java Web从入门到精通
  2. Servlet 3.0 新特性详解
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值