闲来无事,学习一下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 对文件上传的支持
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,则不能使用上面的两个方法,否则将抛异常。