Servlet 3.0新特性总结

来源:互联网 发布:python 开发环境 编辑:程序博客网 时间:2024/06/05 17:11


闲来无事,学习一下servlet3.0的新特性.


主要学习文章是看的这篇:http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/


总结一下就是如下3点:


1.增加注解的支持

@WebServlet
@WebInitParam
@WebFilter
@WebListener
@MultipartConfig

2.servlet响应支持异步

默认不支持,需要通过配置来启用该功能.

       配置有2种方式,xml和注解.


使用的话,主要有2点,第一是AsyncContext,第二就是AsyncListener接口.


3.可插性支持

这个主要是通过web-fragment.xml实现,放在每个jar包里...然后就变成可插拔了...


如果有多个的话,怎么规定顺序是个问题,人家肯定考虑到了.  

web-fragment.xml 包含了两个可选的顶层标签,<name> 和 <ordering>

ordering又包含2个子标签,before和after.


4.ServletContext 的性能增强

主要增强的是: 运行时动态部署 Servlet、过滤器、监听器,以及为 Servlet 和过滤器增加 URL 映射等


5.HttpServletRequest 对文件上传的支持

此前,对于处理上传文件的操作一直是让开发者头疼的问题,因为 Servlet 本身没有对此提供直接的支持,需要使用第三方框架来实现,而且使用起来也不够简单。如今这都成为了历史,Servlet 3.0 已经提供了这个功能,而且使用也非常简单。为此,HttpServletRequest 提供了两个方法用于从请求中解析出上传的文件:
Part getPart(String name)
Collection<Part> getParts()
前者用于获取请求中给定 name 的文件,后者用于获取所有的文件。每一个文件用一个 javax.servlet.http.Part 对象来表示。该接口提供了处理文件的简易方法,比如 write()、delete() 等。至此,结合 HttpServletRequest 和 Part 来保存上传的文件变得非常简单,如下所示:
Part photo = request.getPart("photo"); 
photo.write("/tmp/photo.jpg"); 
// 可以将两行代码简化为 request.getPart("photo").write("/tmp/photo.jpg") 一行。
另外,开发者可以配合前面提到的 @MultipartConfig 注解来对上传操作进行一些自定义的配置,比如限制上传文件的大小,以及保存文件的路径等。其用法非常简单,故不在此赘述了。
需要注意的是,如果请求的 MIME 类型不是 multipart/form-data,则不能使用上面的两个方法,否则将抛异常。



0 0