黑马程序员技术交流社区
标题: 【上海校区】Servlet3.0 新特性之注解支持 [打印本页]
作者: yuchengmin 时间: 2018-7-25 17:45
标题: 【上海校区】Servlet3.0 新特性之注解支持
Servlet3.0 新特性之注解支持 Servlet3.0作为JavaEE6规范体系中的一员,随着JavaEE6规范一起发布。该版本较前一个版本(Servlet2.5)增加了一下新特性:注解支持,Servlet异步处理,文件上传API简化和支持WEB模块。本章主要对Servlet3.0的注解支持作详细讲解。
一、Servlet3.0注解简介 Servlet2.5版本中Servlet的映射配置,Filter的配置以及Listener的配置都是在web.xml中配置完成。如果web.xml中配置了很多Servlet的信息则不便于管理。使用Servlet3.0提供的注解之后能大大简化Servlet开发,提高开发效率。Servlet3.0中新增的注解有以下几个,其中加粗的注解是开发中较常用的注解:
注解 | |
| |
| |
| 修饰Listener类,用于部署Listener类 |
| 与@WebServlet或@WebFilter注解连用,为它们配置参数 |
| 修饰Servlet类,指定该Servlet类负责处理multipart/form-data类型的请求(主要用于处理上传文件) |
| 修饰Servlet类,与JAAS(Java验证和授权API)有关的注解 |
| |
| |
二、Servlet3.0常用注解的应用1、@WebServlet @WebServlet注解是帮助我们配置Servlet类的。
1.1 @WebServlet中可以配置的参数这个注解中可以使用的参数如图1所示:
[attach]241462[/attach]
图1:@WebServlet中使用的参数
1.2 应用实例 1 package com.heima.servlet;
2
3 import javax.servlet.ServletException;
4 import javax.servlet.ServletOutputStream;
5 import javax.servlet.annotation.WebInitParam;
6 import javax.servlet.annotation.WebServlet;
7 import javax.servlet.http.HttpServlet;
8 import javax.servlet.http.HttpServletRequest;
9 import javax.servlet.http.HttpServletResponse;
10 import java.io.IOException;
11
12 /**
13 * @author buguniao
14 * @date 2018-06-24 21:16
15 *
16 * name:相当于<servlet-name>,配置当前Servlet的名字
17 *
18 * urlPatterns:相当于<url-pattern></url-pattern>,这个参数可以配置一个或者多个映射路径;
19 * 配置一个:urlPatterns = ("/servlet3")
20 * 配置多个:urlPatterns = {"/servlet3","/demo3"}
21 *
22 * loadOnStartup:相当于 <load-on-startup>,配置的是Servlet对象的创建时机。
23 * 值越小创建时机的优先级越高,loadOnStartup = 1表示tomcat容器启动后Servlet对象立即创建。
24 *
25 *initParams:相当于<init-param>,配置的是这个Servlet在创建的时候配置的参数,可以设置多个参数,
26 * 使用注解@WebInitParam来做具体配置
27 *
28 *
29 */
30 @WebServlet(name = "Servlet3Demo",urlPatterns = {"/servlet3","/demo3"},loadOnStartup = 1,initParams = {
31 @WebInitParam(name = "encoding",value = "UTF-8")
32 })
33 public class Servlet3Demo extends HttpServlet {
34 @Override
35 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
36
37 }
38 @Override
39 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
40 System.out.println("get请求进来了........................");
41 }
42
43 @Override
44 public void init() throws ServletException {
45 String encoding = getInitParameter("encoding");
46 System.out.println("初始化参数 encoding:"+encoding);
47
48 }
49 }
2、@WebFilter@WebFilter是一个用来帮助我们配置Filter类的注解
2.1 @WebFilter中可以配置的参数 @WebFilter中可配置的参数如图2所示:
[attach]241463[/attach]
图2:@WebFilter中可配置的参数
2.2 应用实例 50 package com.heima.filter;
51
52 import javax.servlet.*;
53 import javax.servlet.annotation.WebFilter;
54 import javax.servlet.annotation.WebInitParam;
55 import java.io.IOException;
56
57 /**
58 * @author buguniao
59 * @date 2018-06-25 10:17
60 *
61 * filterName:相当于<filter-name>,指定Filter的name
62 * urlPatterns:相当于<url-pattern>,指定这个过滤器的URL匹配模式
63 * dispatcherTypes:指定过滤器的转发模式
64 * initParams:指定过滤器初始化时的参数
65 *
66 */
67
68 @WebFilter(filterName = "MyFilter", urlPatterns="/*",
69 dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD},
70 initParams={@WebInitParam(name="encoding",value="UTF-8"),@WebInitParam(name="defaultPage",value="login.jsp")}
71 )
72
73 public class MyFilter implements Filter {
74
75 @Override
76 public void init(FilterConfig filterConfig) throws ServletException {
77 String encoding = filterConfig.getInitParameter("encoding");
78 String defaultPage = filterConfig.getInitParameter("defaultPage");
79 System.out.println("编码:"+encoding);
80 System.out.println("defaultPage:"+defaultPage);
81 }
82
83 @Override
84 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
85 chain.doFilter(request,response);
86 }
87
88 @Override
89 public void destroy() {
90 System.out.println("Filter销毁了.................");
91 }
92 }
3、@WebListener@WebListener注解是帮助我们配置监听器的。
3.1 @WebListener中可配置的参数 @WebListener注解中只提供了一个参数value,如下:
93 @Target(ElementType.TYPE)
94 @Retention(RetentionPolicy.RUNTIME)
95 @Documented
96 public @interface WebListener {
97
98 /**
99 * @return description of the listener, if present
100 */
101 String value() default "";
102 }
value属性是配置这个监听器的描述信息的,可以不添加;
3.2 应用实例 103 package com.heima.listener;
104
105 import javax.servlet.ServletContextEvent;
106 import javax.servlet.ServletContextListener;
107 import javax.servlet.annotation.WebListener;
108
109 /**
110 * @author buguniao
111 * @date 2018-06-25 10:25
112 */
113 @WebListener("我是监听tomcat容器启动的监听器")
114 public class MyListener implements ServletContextListener {
115 @Override
116 public void contextInitialized(ServletContextEvent sce) {
117 System.out.println("tomcat容器启动了.....................");
118 }
119
120 @Override
121 public void contextDestroyed(ServletContextEvent sce) {
122 System.out.println("tomcat容器销毁了.........");
123 }
124 }
作者: 摩西摩西OvO 时间: 2018-7-26 09:11

作者: 不二晨 时间: 2018-7-26 11:30
奈斯,很赞
作者: 吴琼老师 时间: 2018-7-26 15:27
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |