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,表示没有限制。 |
相关推荐
3. 服务:每当有新的请求到达,服务器会为该请求创建一个新的线程,并调用Servlet的service()方法。这个方法会根据请求类型进一步调用doGet()或doPost()等方法。 4. 告诉销毁:当服务器关闭或者Servlet不再需要时,...
这篇学习笔记将深入探讨这两个概念,以及它们在实际开发中的应用。 Servlet是Java编程语言的一个接口,由Sun Microsystems(现为Oracle)定义,它允许Java代码与HTTP服务器交互。Servlet主要负责处理客户端的请求并...
【WebService的实现——CXF学习笔记】 在Java世界中,WebService是一种通过标准协议(如SOAP)进行跨平台、跨语言通信的技术。CXF是Apache软件基金会的一个开源项目,它提供了构建和消费Web服务的工具和库。CXF支持...
《黑马程序员servlet笔记代码》全面解析了Java Web开发中的核心组件——Servlet,以及与之相关的HTTP协议基础知识。本文将深入探讨这些知识点,帮助开发者更好地理解和应用Servlet技术。 首先,我们要理解HTTP(超...
**JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...
3. **SpringMVC配置**:创建SpringMVC的配置文件,如`servlet-context.xml`,配置DispatcherServlet、视图解析器、拦截器等。 4. **MyBatis配置**:配置MyBatis的主配置文件`mybatis-config.xml`,以及Mapper XML...
【Java私塾Java初级教程PPT1-3章.rar】:这部分内容可能涵盖了Java语言的基础知识,包括但不限于Java编程环境的搭建、基本语法、数据类型、控制结构(如if语句、for循环、while循环)、类与对象的概念、封装、继承、...
### Girl项目学习笔记1 #### 一、Spring Boot项目初始化与Maven镜像更换 **1.1 更换IDEA内置Maven镜像至阿里云中央仓库** 在启动Spring Boot项目之前,首先需要确保开发环境配置正确。对于使用IntelliJ IDEA作为...
JDK 6是Java历史上的一个重要里程碑,引入了许多新特性并优化了性能。 1. **基础语法**:Java的基础语法包括变量声明、数据类型(如基本类型和引用类型)、运算符、流程控制语句(如if-else、switch、for、while等...
Java EE Hibernate 学习笔记是针对企业级Java应用程序开发中的持久化框架——Hibernate进行深入学习的资料集合。Hibernate是一个强大的对象关系映射(ORM)工具,它极大地简化了数据库操作,使得开发者可以使用面向...
它通过其灵活的设计和高效的组件配置,大幅提高了Web开发的效率,并且由于其强大的后台支持——Spring Framework,使得应用的维护和扩展变得更为容易。对于想要构建高质量Web应用的Java开发者来说,掌握SpringMVC是...
**JSF2学习笔记1——理解JavaServer Faces 2.0框架** JavaServer Faces (JSF) 是一种基于组件的Web应用程序开发框架,由Sun Microsystems(现为Oracle Corporation的一部分)开发,旨在简化用户界面构建。JSF2是该...
除此之外,笔记可能还涉及了Java的最新版本特性,如Java 8的Lambda表达式、函数式接口、Stream API,以及Java 9至14的新特性,如模块化系统、私有接口方法、文本块等。 在实际开发中,测试和调试也是必不可少的部分...
SSH是Java开发中广泛使用的三大框架——Struts2、Hibernate和Spring的缩写。这三大框架结合使用,能够...通过学习这些笔记,可以深入了解每个框架的核心概念、用法以及它们如何协同工作,从而提升开发效率和项目质量。
《完善后的在线云笔记系统——基于mybatis、javaee、ajax和json的技术实践》 在线云笔记系统在当今数字化时代中扮演着重要角色,它为用户提供了一种方便、快捷的记录、整理和共享信息的方式。本项目是针对一个已有...
如果笔记涉及到Java Web开发,你将学习Servlet、JSP(Java Server Pages)、MVC(Model-View-Controller)架构、Spring框架、Struts、Hibernate等技术,这些都是构建现代Web应用的重要工具。 【总结】 达内Java...
### 方立勋JavaWeb视频前十一天笔记精要 #### Day0102 - Eclipse使用和程序的断点调试 **1.1 Eclipse的使用** Eclipse是一款强大的开源集成开发环境(IDE),尤其适用于Java开发。它提供了丰富的功能,如代码编辑...
- `note.txt` 可能包含了设计思路、开发笔记或者测试用例,对于理解和复现项目很有帮助。 - `build` 目录通常包含编译后的class文件以及打包好的war或jar文件,是项目的可执行部分。 通过这个项目,学生不仅可以...
这个压缩文件很可能包含了那天讲解的JSP相关课件,包括PPT演示文稿、代码示例、笔记或其他辅助学习材料。 【标签】"件\jsp\20110713.rar" 似乎是一个路径标签,进一步强调了内容的分类——这是关于JSP技术的一部分...