Servlet3.0基础
公司使用的是Servlet3.0, 我之前用的是Servlet没有注意过是哪个版本的,现在组长要我学Servlet3.0, 我顺便把这个记录下来。
JDk 1.5 之后,java提供了一种叫做Annotation 的新的数据类型,中文的解释为注解或标注,它的出现给xml文件提供了一个完美的解决方案,让java ee 开发更加方便快捷,更加干净。
/**
9 * 自定义WebServlet注解,模拟Servlet3.0的WebServlet注解
10 * @Target 注解的属性值表明了 @WebServlet注解只能用于类或接口定义声明的前面,
11 * @WebServlet注解有一个必填的属性 value 。
12 * 调用方式为: @WebServlet(value="/xxxx") ,
13 * 因语法规定如果属性名为 value 且只填 value属性值时,可以省略 value属性名,即也可以写作:@WebServlet("/xxxx")
14 */
5 @Retention(RetentionPolicy.RUNTIME)
16 @Target(ElementType.TYPE)
17 public @interface WebServlet {
18 //Servlet的访问URL
19 String value();
20 //Servlet的访问URL
21 String[] urlPatterns() default {""};
22 //Servlet的描述
23 String description() default "";
24 //Servlet的显示名称
25 String displayName() default "";
26 //Servlet的名称
27 String name() default "";
28 //Servlet的init参数
29 WebInitParam[] initParams() default {};
在servlet3.0中同样也可以使用web.xml,在<web-app>标签下有一属性metadata-complete="true"
在设置true时,Servlet中的注解会失效,默认值为false。在注解和web.xml中同时对一个url-pattern进行设置时,
我实验的结果是注解会覆盖web.xml中的设置,书上所说的和我所实验的结果完全相反,即web.xml中设置会覆盖注解的设置,
请网友各自验证后,麻烦通知我一下。
@WebServlet
属性介绍一共有8 中属性,最常用的是urlPatterns该servlet 的 访问路径,asyncSupported 是否支持异步。
name String 指定 Servlet 的 name 属性,等价于 <servlet-name>。如果没有显式指定,则该 Servlet 的取值即为类的全限定名。
value String[] 该属性等价于 urlPatterns 属性。两个属性不能同时使用。
urlPattrens 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> 标签。
@WebInitParam
该属性常常和@WebServlet 和@WebFilter 配合使用,作用是为Servlet 或者Filter 指定初始化参数,相当于web.xml中<servlet>或者<filter>的子标签<init-param>子标签
常用属性:
name String 不可选 指定参数的名字,
value String 不可选 指定参数的值
discripation String 可选 关于参数的描述 等价于<discription>标签
@WebFilter
以下是filter 的参数属性
urlPatterns String [] 指定一组过滤器的 URL 匹配模式。等价于 <url-pattern> 标签。