`

Servlet3新特性学习笔记——注解开发

 
阅读更多

0、 <web-app>的metadata-complete属性

Servlet 3.0 的部署描述文件 web.xml 的顶层标签 <web-app> 有一个 metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的。

  • metadata-complete 属性为 true,则容器在部署时将只依赖部署描述文件,忽略所有的注解(同时也会跳过 web-fragment.xml 的扫描,亦即禁用可插性支持)。
  • metadata-complete 属性没有配置,或者将其设置为 false,则表示启用注解支持(和可插性支持)。

例:设置metadata-complete属性为true,禁用注解。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true">

</web-app>
 

 

 

 

1 、@WebServlet

@WebServlet 用于将一个类声明为 Servlet,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为 Servlet。

该注解具有下表给出的一些常用属性(以下所有属性均为可选属性,但是 vlaue 或者 urlPatterns 通常是必需的,且二者不能共存,如果同时指定,通常是忽略 value 的取值):

@WebServlet 主要属性列表

属性名 类型 描述
name String 指定 Servlet 的 name 属性,等价于 <servlet-name>。如果没有显式指定,则该 Servlet 的取值即为类的全限定名。
value String[] 该属性等价于 urlPatterns 属性。两个属性不能同时使用。
urlPatterns String[] 指定一组 Servlet 的 URL 匹配模式。等价于 <url-pattern> 标签。
loadOnStartup int 指定 Servlet 的加载顺序,等价于 <load-on-startup> 标签。
initParams WebInitParam[] 指定一组 Servlet 初始化参数,等价于 <init-param> 标签。
asyncSupported boolean 声明 Servlet 是否支持异步操作模式,等价于 <async-supported> 标签。
description String 该 Servlet 的描述信息,等价于 <description> 标签。
displayName String 该 Servlet 的显示名,通常配合工具使用,等价于 <display-name> 标签。

 

 

下面是一个简单的示例:

@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>

 

 

 

2、 @WebInitParam

该注解通常不单独使用,而是配合 @WebServlet 或者 @WebFilter 使用。它的作用是为 Servlet 或者过滤器指定初始化参数,这等价于 web.xml 中 <servlet> 和 <filter> 的 <init-param> 子标签。@WebInitParam 具有下表给出的一些常用属性:

@WebInitParam 的常用属性

属性名 类型 是否可选 描述
name String 指定参数的名字,等价于 <param-name>。
value String 指定参数的值,等价于 <param-value>。
description String 关于参数的描述,等价于 <description>。

 

 

 

3、 @WebFilter

@WebFilter 用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。该注解具有下表给出的一些常用属性 ( 以下所有属性均为可选属性,但是 value、urlPatterns、servletNames 三者必需至少包含一个,且 value 和 urlPatterns 不能共存,如果同时指定,通常忽略 value 的取值 ):

@WebFilter 的常用属性

属性名 类型 描述
filterName String 指定过滤器的 name 属性,等价于 <filter-name>
value String[] 该属性等价于 urlPatterns 属性。但是两者不应该同时使用。
urlPatterns String[] 指定一组过滤器的 URL 匹配模式。等价于 <url-pattern> 标签。
servletNames String[ ]指定过滤器将应用于哪些 Servlet。取值是 @WebServlet 中的 name 属性的取值,或者是 web.xml 中 <servlet-name> 的取值。
dispatcherTypes DispatcherType 指定过滤器的转发模式。具体取值包括:ASYNC、ERROR、FORWARD、INCLUDE、REQUEST。
initParams WebInitParam[] 指定一组过滤器初始化参数,等价于 <init-param> 标签。
asyncSupported boolean 声明过滤器是否支持异步操作模式,等价于 <async-supported> 标签。
description String 该过滤器的描述信息,等价于 <description> 标签。
displayName String 该过滤器的显示名,通常配合工具使用,等价于 <display-name> 标签。

 

下面是一个简单的示例:

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

 

以上注解等效于在web.xml中做如下配置:

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

 

 

 

 

4、 @WebListener

该注解用于将类声明为监听器,被 @WebListener 标注的类必须实现以下至少一个接口:

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

该注解使用非常简单,其属性如下:

@WebListener 的常用属性

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

 

一个简单示例如下:

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

 

以上注解等效于在web.xml中做如下配置:

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

 

 

 

5、 @MultipartConfig

该注解主要是为了辅助 Servlet 3.0 中 HttpServletRequest 提供的对上传文件的支持。该注解标注在 Servlet 上面,以表示该 Servlet 希望处理的请求的 MIME 类型是 multipart/form-data。另外,它还提供了若干属性用于简化对上传文件的处理。具体如下:

@MultipartConfig 的常用属性

属性名 类型 是否可选 描述
fileSizeThreshold int 当数据量大于该值时,内容将被写入文件。
location String 存放生成的文件地址。
maxFileSize long 允许上传的文件最大值。默认值为 -1,表示没有限制。
maxRequestSize long 针对该 multipart/form-data 请求的最大数量,默认值为 -1,表示没有限制。
分享到:
评论

相关推荐

    web笔记 —— Servlet

    3. 服务:每当有新的请求到达,服务器会为该请求创建一个新的线程,并调用Servlet的service()方法。这个方法会根据请求类型进一步调用doGet()或doPost()等方法。 4. 告诉销毁:当服务器关闭或者Servlet不再需要时,...

    servlet和jsp学习笔记

    这篇学习笔记将深入探讨这两个概念,以及它们在实际开发中的应用。 Servlet是Java编程语言的一个接口,由Sun Microsystems(现为Oracle)定义,它允许Java代码与HTTP服务器交互。Servlet主要负责处理客户端的请求并...

    WebService的实现——CXF学习笔记

    【WebService的实现——CXF学习笔记】 在Java世界中,WebService是一种通过标准协议(如SOAP)进行跨平台、跨语言通信的技术。CXF是Apache软件基金会的一个开源项目,它提供了构建和消费Web服务的工具和库。CXF支持...

    黑马程序员servlet笔记代码

    《黑马程序员servlet笔记代码》全面解析了Java Web开发中的核心组件——Servlet,以及与之相关的HTTP协议基础知识。本文将深入探讨这些知识点,帮助开发者更好地理解和应用Servlet技术。 首先,我们要理解HTTP(超...

    JSF2整合Spring3------JSF学习笔记4

    **JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...

    SSM整合——个人笔记

    3. **SpringMVC配置**:创建SpringMVC的配置文件,如`servlet-context.xml`,配置DispatcherServlet、视图解析器、拦截器等。 4. **MyBatis配置**:配置MyBatis的主配置文件`mybatis-config.xml`,以及Mapper XML...

    全套达内学习笔记(java)

    【Java私塾Java初级教程PPT1-3章.rar】:这部分内容可能涵盖了Java语言的基础知识,包括但不限于Java编程环境的搭建、基本语法、数据类型、控制结构(如if语句、for循环、while循环)、类与对象的概念、封装、继承、...

    girl项目学习笔记1

    ### Girl项目学习笔记1 #### 一、Spring Boot项目初始化与Maven镜像更换 **1.1 更换IDEA内置Maven镜像至阿里云中央仓库** 在启动Spring Boot项目之前,首先需要确保开发环境配置正确。对于使用IntelliJ IDEA作为...

    java学习笔记

    JDK 6是Java历史上的一个重要里程碑,引入了许多新特性并优化了性能。 1. **基础语法**:Java的基础语法包括变量声明、数据类型(如基本类型和引用类型)、运算符、流程控制语句(如if-else、switch、for、while等...

    javaEEHibernate学习笔记

    Java EE Hibernate 学习笔记是针对企业级Java应用程序开发中的持久化框架——Hibernate进行深入学习的资料集合。Hibernate是一个强大的对象关系映射(ORM)工具,它极大地简化了数据库操作,使得开发者可以使用面向...

    SpringMVC学习笔记

    它通过其灵活的设计和高效的组件配置,大幅提高了Web开发的效率,并且由于其强大的后台支持——Spring Framework,使得应用的维护和扩展变得更为容易。对于想要构建高质量Web应用的Java开发者来说,掌握SpringMVC是...

    一个简单的jsf例子------JSF2学习笔记1

    **JSF2学习笔记1——理解JavaServer Faces 2.0框架** JavaServer Faces (JSF) 是一种基于组件的Web应用程序开发框架,由Sun Microsystems(现为Oracle Corporation的一部分)开发,旨在简化用户界面构建。JSF2是该...

    java全套培训笔记

    除此之外,笔记可能还涉及了Java的最新版本特性,如Java 8的Lambda表达式、函数式接口、Stream API,以及Java 9至14的新特性,如模块化系统、私有接口方法、文本块等。 在实际开发中,测试和调试也是必不可少的部分...

    Struts2笔记+Hibernate3.6笔记+Spring3笔记

    SSH是Java开发中广泛使用的三大框架——Struts2、Hibernate和Spring的缩写。这三大框架结合使用,能够...通过学习这些笔记,可以深入了解每个框架的核心概念、用法以及它们如何协同工作,从而提升开发效率和项目质量。

    完善后的在线云笔记系统

    《完善后的在线云笔记系统——基于mybatis、javaee、ajax和json的技术实践》 在线云笔记系统在当今数字化时代中扮演着重要角色,它为用户提供了一种方便、快捷的记录、整理和共享信息的方式。本项目是针对一个已有...

    达内java培训笔记

    如果笔记涉及到Java Web开发,你将学习Servlet、JSP(Java Server Pages)、MVC(Model-View-Controller)架构、Spring框架、Struts、Hibernate等技术,这些都是构建现代Web应用的重要工具。 【总结】 达内Java...

    方立勋JavaWeb视频前十一天笔记word版本

    ### 方立勋JavaWeb视频前十一天笔记精要 #### Day0102 - Eclipse使用和程序的断点调试 **1.1 Eclipse的使用** Eclipse是一款强大的开源集成开发环境(IDE),尤其适用于Java开发。它提供了丰富的功能,如代码编辑...

    Java毕业设计——基于ssm的兼职论坛设计与实现(源码+数据库).zip

    - `note.txt` 可能包含了设计思路、开发笔记或者测试用例,对于理解和复现项目很有帮助。 - `build` 目录通常包含编译后的class文件以及打包好的war或jar文件,是项目的可执行部分。 通过这个项目,学生不仅可以...

    小贝程序员生活\课件\jsp\20110713.rar

    这个压缩文件很可能包含了那天讲解的JSP相关课件,包括PPT演示文稿、代码示例、笔记或其他辅助学习材料。 【标签】"件\jsp\20110713.rar" 似乎是一个路径标签,进一步强调了内容的分类——这是关于JSP技术的一部分...

Global site tag (gtag.js) - Google Analytics