Servlet3.0下@WebServlet注解配置Servlet
2017-04-17 18:31
489 查看
@WebServlet注解配置Servlet
从Servlet3.0开始,配置Servlet支持注解方式,但还是保留了配置web.xml方式,所有使用Servlet有两种方式:Servlet类上使用@WebServlet注解进行配置
web.xml文件中配置
@WebServlet常用属性
属性 | 类型 | 是否必须 | 说明 |
---|---|---|---|
asyncSupported | boolean | 否 | 指定Servlet是否支持异步操作模式 |
displayName | String | 否 | 指定Servlet显示名称 |
initParams | WebInitParam[] | 否 | 配置初始化参数 |
loadOnStartup | int | 否 | 标记容器是否在应用启动时就加载这个Servlet |
name | String | 否 | 指定Servlet名称 |
urlPatterns/value | String[] | 否 | 这两个属性作用相同,指定Servlet处理的url |
1.UserServlet
通过注解方式配置,web.xml中不需要配置该Servlet@WebServlet(name = "myUserServlet",
urlPatterns = "/user/test",
loadOnStartup = 1,
initParams = {
@WebInitParam(name="name", value="小明"),
@WebInitParam(name="pwd", value="123456")
}
)
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 7109220574468622594L;
@Override
public void init(ServletConfig config) th
ccb2
rows ServletException {
super.init(config);
System.out.println("servlet初始化...");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter pw = response.getWriter();
pw.append("Hello Servlet!<br>" );
//servletName
pw.append("servletName:" + getServletName() + "<br>");
//initParam
ServletConfig servletConfig = this.getServletConfig();
Enumeration<String> paramNames = servletConfig.getInitParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = paramNames.nextElement();
pw.append(paramName + ":" + servletConfig.getInitParameter(paramName) + "<br>");
}
pw.close();
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
2.测试结果
2.1应用启动时,servlet就会初始化,因为配置了loadOnStartup=12.2访问/user/test,页面上显示结果;表名参数正确初始化以及自定义的servlet名称
3.注
(1).loadOnStartup属性:标记容器是否在启动应用时就加载Servlet,默认不配置或数值为负数时表示客户端第一次请求Servlet时再加载;0或正数表示启动应用就加载,正数情况下,数值越小,加载该Servlet的优先级越高;(2).name属性:可以指定也可以不指定,通过getServletName()可以获取到,若不指定,则为Servlet的完整类名,如:cn.edu.njit.servlet.UserServlet
(3).urlPatterns/value属性: String[]类型,可以配置多个映射,如:urlPatterns={"/user/test", "/user/example"}
(4).在使用注解方式时,需要注意:
<web-app> </web-app>根元素中不能配置属性metadata-complete="true",否则无法加载Servlet。metadata-complete属性表示通知Web容器是否寻找注解,默认不写或者设置false,容器会扫描注解和Web分片,为Web应用程序构建有效的元数据;设置true,表示将由部署描述符为Web程序提供所有的配置信息
web.xml中不能再配置该Servlet
(5).urlPatterns的常用规则:
/*或者/:拦截所有
*.do:拦截指定后缀
/user/test:拦截路径
/user/*.do、/*.do、test*.do都是非法的,启动时候会报错
(6).urlPatterns的配置规则:精确匹配、扩展名匹配、路径匹配以及会包含一些优先级,这些在以后会整理。
相关文章推荐
- servlet中用注解的方式读取web.xml中的配置信息
- Servlet在web.xml中的注册(配置)(Servlet3.0以上版本可以用注解方法)
- javaWeb自定义可排序过滤器注解,解决Servlet3.0下@WebFilter注解无法排序问题
- JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet
- Tomcat新特性:支持Servlet3.0注解定义,无需配置web.xml
- web.xml与注解配置servlet使用介绍
- Tomcat7.0新特性:支持Servlet3.0注解定义,无需配置web.xml
- 系统学习JavaWeb之特别篇使用注解WebServlet配置Servlet报404错误的原因
- 配置servlet用注解和web.xml都没作用,报404错误以及500错误的解决
- @WebServlet注解配置Servlet
- Servlet3.0新特性,注解配置,@WebServlet,@WebFilter
- javaWeb自己定义可排序过滤器注解,解决Servlet3.0下@WebFilter注解无法排序问题
- Annotation(注解)代替web.xml完成servlet配置
- Servlet3.1使用@WebServlet注解配置问题记录
- Tomcat7.0新特性:支持Servlet3.0注解定义,无需配置web.xml
- servlet 下配置web.xml
- servlet中web.xml配置详解
- web.xml文件中配置(servlet, spring, filter, listenr)的加载顺序
- web.xml中servlet, spring, filter, listenr的配置
- Java Web 应用web.xml配置 --Servlet映射配置