1、HandlesTypes
这个注解类型用来声明ServletContainerInitializer可以处理哪些类型的类。它有一个属性、一个值,用来声明类的类型。例如,下面的ServletContainerInitializer用@HandleTypes进行标注,声明初始化程序可以处理UsefulServlet。
@HandlesTypes({UsefulServlet.class})
public class MyInitializer implements ServletContainerInitializer{
...
}
2、HttpConstraint
HttpConstraint注解类型表示适用于没有对应HttpMethodConstraint元素的所有HTTP协议方法的安全约束。这个注解类型必须放在ServletSecurity注解中。
它的属性如下:
rolesAllowed:表示授权角色的一个字符串数组。
transportGuarantee:表示是否有必须满足的数据保护要求,有效值为ServletSecurity.TransportGuarantee枚举的成员之一
value:默认的授权语义
例如,下列HttpConstraint标注声明被标注的Servlet只能由属于manager角色的用户进行访问。由于没有HttpMethodConstraint标注,这条约束将应用于所有的HTTP方法。
@ServletSecurity(@HttpConstraint(rolesAllowed=”manager”))
3、HttpMethodConstraint
这个注解类型表示特定HTTP方法中的一个安全约束。HttpMethodConstraint标注只能出现在ServletSecurity注解中。
HttpMethodConstraint的属性如下:
emptyRoleSemantic:这是默认的授权语义,这个值必须是ServletSecurity.EmptyRoleSemantic枚举的成员之一(DENY或PERMIT)
rolesAllowed:表示授权角色的一个字符串数组
transportGuarantee:表示是否有必须满足的数据保护要求,它的有效值为ServletSecurity.TransportGuarantee枚举的成员之一(CONFIDENTIAL或者NONE)
value:受影响的HTTP方法
例如,下列ServletSecurity注解使用了value和httpMethodConstraints这两个属性。HttpConstraint注解定义了可以访问被标注Servlet的角色,HttpMethodConstraint注解(没有rolesAllowed属性)覆盖了Get方法的约束。因此,任何用户都可以通过Get访问这个Servlet。另一方面,通过其他所有HTTP方法进行访问的权限仅限于manager角色的用户。
@ServletSecurity([email protected](rolesAllowed=”manager”),
httpMethodConstraints={@HttpMethodConstraint(“GET”)})
但是,如果HttpMethodConstraint标注类型的emptyRoleSemantic属性值为EmptyRoleSemantic.DENY,那么该方法将限制所有用户的访问。例如,用以下ServletSecurity注解进行标注的Servlet将阻止通过Get方法进行访问,但是允许member角色中的所有用户通过其他HTTP方法进行访问。
@ServletSecurity([email protected](rolesAllowed=”member”),
httpMethodConstraints={@HttpMethodConstraint(value=”GET”,
emptyRoleSemantic=EmptyRoleSemantic.DENY)})
4、MultipartConfig
MultipartConfig注解类型用来标注一个Servlet,表示这个Servlet的实例是否能够处理multipart/form-data MIME类型,一般在上传文件时会用到。
下列MultipartConfig标注规定,可以上传的最大文件容量是一百万个字节
@MultipartConfig(maxFileSize = 1000000)
属性为:
fileSizeThreshold:超过这个容量界限之后,所上传的文件将被写入磁盘
location:上传的文件被存入磁盘时保存的位置
maxFileSize:上传文件的最大容量。大于指定值的文件会被拒绝。maxFileSize的默认值为-1,表示不受限制。
maxRequestSize:表示允许multipart HTTP请求的最大容量,默认值为-1,表示不受限制
5、ServletSecurity
ServletSecurity注解类型用来标注Servlet类,并对这个Servlet上应用安全约束。在ServletSecurity标注中可能出现的属性如下所示:
httpMethodConstraints:指定HTTP方法特定约束的一组HttpMethodConstraint
value:HttpConstraint注解定义了应用于没有相应HttpMethodConstraint的所有HTTP方法的安全约束。
例如,以下ServletSecurity注解中包含了一个HttpConstraint标注,表示被标注的Servlet只能由manager角色中的用户访问。
@ServletSecurity([email protected](rolesAllowed=”manager”))
6、WebFilter
WebFilter注解类型用来标注一个过滤器,下面是它的属性:
asyncSupported:表示该过滤器是否支持异步处理
description:该过滤器的描述
dispatcherTypes:该过滤器应用到的一组DispatcherTypes
displayName:该过滤器的显示名称
filterName:该过滤器的名称
initParams:该过滤器的初始参数
largeIcon:该过滤器的大图标
servletNames:该过滤器应用到的几个Servlet的名称
smallIcon:该过滤器的小图标
urlPatterns:该过滤器应用到的URL模式
value:该过滤器应用到的URL模式
7、WebInitParam
这个注解类型用于给Servlet或Filter传递初始化参数。WebInitParam注解中可能出现的属性如下:
description:初始化参数的描述
name:初始化参数的名称
value:初始化参数的值
8、WebListener
这个注解类型用来给监听器进行标注。它的唯一属性value是可选的,其中包含这个监听器的描述。
9、WebServlet
这个注解类型用来标注Servlet,属性如下:
asyncSupported:表明该Servlet是否支持异步处理
description:该Servlet的描述
displayName:该Servlet的显示名称
initParams:该Servlet的初始化参数
largeIcon:该Servlet的大图标
loadOnStarpup:在一个包含多个Servlet的应用程序中,各Servlet的加载顺序
name:该Servlet的名称
smallIcon:该Servlet的小图标
urlPatterns:调用该Servlet的URL模式
value:调用该Servlet的URL模式