Servlet 3.0

转载 2012年03月29日 13:52:19

Servlet 3.0

http://imyue.org/servlet-3-0/

今个看DWR的做测试的时候,下了Tomcat7,新建servlet的时候,发现Eclipse居然没有在web.xml中添加配置信息还能正常运行servlet,查找一番后才发现这是servlet3的新特性,增添了对annotation的支持,无须更改配置文件,只需添加注解即可。

其新特性如下:

  1. 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。
  2. 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。
  3. 可插性支持:熟悉 Struts2 的开发者一定会对其通过插件的方式与包括 Spring 在内的各种常用框架的整合特性记忆犹新。将相应的插件封装成 JAR 包并放在类路径下,Struts2 运行时便能自动加载这些插件。现在 Servlet 3.0 提供了类似的特性,开发者可以通过插件的方式很方便的扩充已有 Web 应用的功能,而不需要修改原有的应用。

对servlet创建的注解是@WebServlet

@WebServlet annotation 支持的属性如下:

  1. name – Name of the servlet – optional
  2. asyncSupported=true/false – Specifies weather the servlet supports asynchronous processing or not.
  3. largeIcon – large icon for this Servlet, if present – optional
  4. smallIcon – small icon for this Servlet, if present – optional
  5. description – Servlet description – optional
  6. initParams – Array of @WebInitParam, used to pass servlet config parameters – optional
  7. loadOnStartup – Integer value – optional
  8. displayName -Servlet display name – optional
  9. urlPatterns – Array of url patterns for which the sevlet should be invoked – Atlease one url pattern is requried

以下是一个实例.可以使用 /helloanno 来访问该servlet

01 package org.servletworld.example;
02   
03 import java.io.IOException;
04 import java.io.PrintWriter;
05   
06 import javax.servlet.ServletException;
07 import javax.servlet.annotation.WebInitParam;
08 import javax.servlet.annotation.WebServlet;
09 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12   
13 @WebServlet(asyncSupported = false, name = "HelloAnnotationServlet", urlPatterns = {"/helloanno"},
14 initParams = {@WebInitParam(name="param1", value="value1"), @WebInitParam(name="param2", value="value2")}
15 )
16 public class HelloAnnotationServlet extends HttpServlet {
17   
18     @Override
19     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
20         resp.setContentType("text/html");
21         PrintWriter out = resp.getWriter();
22         out.write("<h2>Hello Friends! Welcome to the world of servlet annotation </h2>");
23         out.write("<br/>");
24         out.write("<h4>I am a servlet 3, I have been defined using @WebServlet annotations.</h4>");
25         out.write("<br/>");
26         out.write("The Init parameters passed to me are :");
27         out.write("<br/>");
28         out.write("<ol>");
29         out.write(li("param1="+getServletConfig().getInitParameter("param1")));;
30         out.write(li("param2="+getServletConfig().getInitParameter("param2")));;
31         out.write("</ol>");
32         out.close();
33     }
34   
35     private String li(String val) {
36         return "<li>"+val+"</li>";
37     }
38 }

这样就不用在配置文件中写以下代码了

01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <WEB-APP>  
03   
04     <SERVLET>
05         <SERVLET-NAME>test</SERVLET-NAME>
06         <SERVLET-CLASS>test.test</SERVLET-CLASS>
07     </SERVLET>  
08   
09     <SERVLET-MAPPING>
10         <SERVLET-NAME>test</SERVLET-NAME>
11         <URL-PATTERN>/test/*</URL-PATTERN>
12     </SERVLET-MAPPING>
13     <SESSION-CONFIG>
14     <SESSION-TIMEOUT>30</SESSION-TIMEOUT>
15     </SESSION-CONFIG>
16 </WEB-APP>

Tomcat7.0新特性:支持Servlet3.0注解定义,无需配置web.xml

今天在按照教材学习servlet时候发现没有web.xml文件,后来知道在创建的时候有个选项,选中后就可以生成web.xml了。可以看到我们创建dynamic web project时dynamic ...

Servlet 3.0新特性——文件上传接口

Servlet 3.0之前的版本中,文件上传是个挺让人头疼的问题,虽然有第三方框架来实现,但使用也还是比较麻烦,在Servlet 3.0中,这些问题将不复存在,Servlet 3.0对文件上传提供了直...

通过Servlet3.0添加对异步的支持实现后台推送

本例参考:http://blog.csdn.NET/chenxiang0207/article/details/14054681/ http://blog.csdn.net/u010497228...

使用Servlet3.0上传文件

Servlet3.0支持HttpServletRequest对文件的上传,提供了两个方法: 1.Part getPart(String name):根据名称获取文件的上传域。 2.Collection...

Servlet3.0新特性(从注解配置到websocket编程)

Servlet3.0的出现是servlet史上最大的变革,其中的许多新特性大大的简化了web应用的开发,为广大劳苦的程序员减轻了压力,提高了web开发的效率。主要新特性有以下几个: 引入注解配置 支持...

Servlet 3.0 新特性详解

Servlet 3.0 新特性概览   1.Servlet、Filter、Listener无需在web.xml中进行配置,可以通过Annotation进行配置; 2.模块化编程,即将各个Serv...
  • xiazdong
  • xiazdong
  • 2012年01月18日 09:32
  • 40482

Servlet3.0新特性@WebFilter与过滤器的初始化

今天用eclipse写过滤器时要实现一个在init(FilterConfig fConfig)方法中设置初始访问量的功能,以前也写过,但今天怎么也运行不了,总产生NumberFormatExcepti...

使用Eclipse+maven3插件开发一个Servlet3.0的简单例子

1、打开Eclipse4.2,新建一个Maven项目     1)选择maven的archetype为maven-archetype-webapp     2)填写项目信息 ...

Servlet3.0中HttpServletRequest增加了对文件上传的支持

Servlet3.0还有一个改变是改进了部分API,这种改进很好的简化了的了JAVA WEB的开发,其中一个改进就是HttpServletRequest增加了进文件上传的支持。   Htt...

Servlet3.0-使用注解定义过滤器(Filter)

Servlet3.0提供@WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤器组件。 1 2 3 4 5 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Servlet 3.0
举报原因:
原因补充:

(最多只允许输入30个字)