Servlet 3.0 新特性详解
来源:互联网 发布:mac qq截图保存位置 编辑:程序博客网 时间:2024/04/28 19:58
http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/
Servlet 3.0 新特性概述
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入让开发者感到非常兴奋,同时也获得了 Java 社区的一片赞誉之声:
- 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。
- 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。
- 可插性支持:熟悉 Struts2 的开发者一定会对其通过插件的方式与包括 Spring 在内的各种常用框架的整合特性记忆犹新。将相应的插件封装成 JAR 包并放在类路径下,Struts2 运行时便能自动加载这些插件。现在 Servlet 3.0 提供了类似的特性,开发者可以通过插件的方式很方便的扩充已有 Web 应用的功能,而不需要修改原有的应用。
下面我们将逐一讲解这些新特性,通过下面的学习,读者将能够明晰了解 Servlet 3.0 的变化,并能够顺利使用它进行日常的开发工作。
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,则不能使用上面的两个方法,否则将抛异常。
-------------------------------------------------------------------------------------------
另外上文没有提到的: JAR文件/META-INFO/resources/路径下的资源可以直接访问。
- Servlet 3.0 新特性详解
- Servlet 3.0新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- Xcode概览:添加图标、图像和特效
- MyEclipse10安装properties文件插件
- hdu3635Dragon Balls 并查集
- 1002
- x-code的使用技巧心得
- Servlet 3.0 新特性详解
- 程序员福利
- Redhat 6.4 用bind 搭建DNS服务器
- wpf 如何更改一个页面的绑定数据源
- 1083 矩阵取数问题
- android findVIewById()在线生成工具
- iOS初学者
- Spring核心 IOC DI
- 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护