servlet3.0出来已经很久了,但市场上尚未普遍应用,servlet3.0有三个比较重要的新特性:使用注解来代替配置文件,异步处理以及上传组件支持。

  支持servlet3.0的要求:MyEclipse10.0或以上版本,发布到Tomcat7.0或以上版本,并且需要创建JavaEE6.0应用。

一、使用注解代替配置文件

  可以使用 @WebServlet, @WebFilter, @WebListener 三个注解来代替web.xml中的 Servlet, Filter, Listener 的配置,注解的好处是配置信息少,但是定死在代码中,不方便修改。

 1 @WebServlet(
 2        urlPatterns={"/AServlet"},
 3     initParams{@WebInitParam(name="paramName",value="paramValue")},
 4        loadOnStartup=1
 5 )
 6 public class AServlet extends HttpServlet {
 7     public void init(ServletConfig config) throws ServletException {
 8         System.out.println(config.getInitParameter("paramName"));
 9     }
10     public void doGet(HttpServletRequest request, HttpServletResponse response)
11             throws ServletException, IOException {
12         request.setCharacterEncoding("utf-8");
13         response.setContentType("text/html;charset=utf-8");
14         response.getWriter().print("Hello World!");
15     }
16 }

二、异步处理

  异步处理:Servlet异步处理就是让Servlet在处理费时的请求时不要阻塞,而是一部分一部分的显示。

  原来,在服务器没有结束响应之前,浏览器是看不到响应内容的!只有响应结束时,浏览器才能显示结果,使用异步处理,在服务器开始响应后,浏览器可以看到响应内容,不用等待服务器响应结束。

  实现异步处理的步骤:

  1.   需要在@WebServlet注解中给出 asyncSupported=true, 不然Servlet默认是不支持异步处理的,如果存在过滤器,也需要在WebFilter设置该值。
  2.   得到AsynoContext,它是异步上下文对象,AsynoContext ac = request.startAsync(request, response);
  3.   给上下文一个 Runable 对象,启动它!
1 ac.start(new Runnable(){
2     public void run(){
3         ...
4     }
5 });

  注意:

  1.   响应类型必须是 text/html, 所以需要设置 response.setContentType("text/html;charset=utf-8");
  2.   IE如果不能正常输出,这说明响应体大小不足512B,那你需要更多的输出!
  3.   AsyncContext#complete();:通知Tomcat服务器我们的异步线程已经执行完毕,让Tomcat及时断开与浏览器的连接,否则Tomcat无法知道异步线程是否已经结束,导致响应结束过一会才断开连接。

三、上传支持

  上传文件对表单的要求:

  1.   method=post,提交方式必须为post
  2.   enctype="multipart/form-data",它的默认值是它的默认值是:application/x-www-form-urlencoded
  3.   <input type="file" name="必须给出">

  使用文件上传是,Servlet中需要使用request.getInputStream()来获取整个表单的数据,不能够使用request.getParameter()。使用commons-fileupload类库中的方法可以三部得到上传文件的数据:创建工厂,利用工厂创建解析器,使用解析器来解析request对象,得到List<FileItem>。servlet3.0中对上传提供了支持,不再需要使用commons-fileupload,而是使用servlet3.0提供的上传接口。

  上传步骤:使用request.getPart("字段名"),得到Part实例,通过Part中的方法得到文件的数据,不过还没有提供获取文件原名称的方法, 需要自己截取,servlet默认是不支持使用上传组件的,需要在servlet中添加注解,@MultipartConfig

转载于:https://www.cnblogs.com/elecdog/p/5735348.html

Java自学手记——servlet3.0新特性相关推荐

  1. Java基础加强-(注解,动态代理,类加载器,servlet3.0新特性)

    1.   Annotation注解 1.1.  Annotation概述 Annotation是JDK 5.0以后提供对元数据的支持,可以在编译.加载和运行时被读取,并执行相应的处理.所谓Annota ...

  2. Java-Web 基础加强之泛型、注解和Servlet3.0新特性

    目录 一.泛型 1.泛型类 2.泛型方法 3.继承(实现)泛型类(接口) 4.通配符 (1)通配符概述 (2)通配符的缺点 (3)通配符的限制 (4)带有下边界的通配符 (5)带有下边界的通配符 (6 ...

  3. 【Servlet3.0新特性】第03节_文件上传

    这是一个Web Project 首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web- ...

  4. servlet3.0新特性_查看Servlet 3.0的新增功能

    servlet3.0新特性 随着JEE6规范上市,在企业应用程序领域中如何开发应用程序方面发生了一些重大变化. 在本文中,我将介绍有关Web应用程序开发的一些更改. 首先,请告别web.xml部署描述 ...

  5. Servlet3.0新特性WebFilter(Annotation Filter)详解

    摘要: Servlet3.0作为J2EE 6规范一部分,并随J2EE6一起发布,WeFilter是过滤器注解,是Servlet3.0的新特性,不需要在web.xml进行配置,简化了配置. Name T ...

  6. Servlet3.0新特性全解

    tomcat 7以上的版本都支持Servlet 3.0 Servlet 3.0 新增特性 注解支持:Servlet.Filter.Listener无需在web.xml中进行配置,可以通过对应注解进行配 ...

  7. Servlet3.0新特性

    @WebServlet 用于将一个类声明为 Servlet,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为 Servlet.

  8. Servlet 3.0 新特性详解

    https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/ Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE ...

  9. 深圳Java培训学习:Java8.0新特性之Lambda表达式--【千锋】

    深圳Java培训学习:Java8.0新特性之Lambda表达式–[千锋] 前言 Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.本篇文章,主要给大家介绍的是lambda表 ...

最新文章

  1. pca 和lda区别
  2. 运维监控再添新品,F5联合智维数据推出应用质量主动拨测解决方案
  3. 下载了一个IBM Rational RequisitePro Trial,感觉IBM的用户体验不错
  4. Django day 36 支付宝支付,微信推送
  5. 信息孤岛影响_企业专访:以“信息化”冲破信息孤岛
  6. Spark中的Shuffle算子
  7. [转]一个软件设计的全过程(基于UML)
  8. 中控考勤机 本地mysql_中控考勤机接口开发
  9. 4k hidpi 黑苹果_黑苹果开启缩放分辨率HiDPi以及字体模糊的调整方法总结
  10. Dingo Api请求接口404?
  11. Java实训—VII,VIII
  12. IDEA 官方网站 http://www.jetbrains.com/idea/
  13. 小程序源码:修复登录接口版最新知识付费变现小程序源码下载-独立后台版本
  14. 机械键盘恢复出厂fn_怎么切换fn恢复f1 - 卡饭网
  15. 推进线上线下深度融合,5G+VR+直播技术助力文旅产业加快复苏
  16. 删除 重复数据 mysql_mysql删除重复记录语句的方法
  17. ff14服务器不显示经验加成,《最终幻想14》经验获取与经验加成
  18. MySQL统计数据库所有表的数据量
  19. 方大九钢携手图扑软件:数字孪生“高精尖”智慧钢厂
  20. 互联网产品之网站活动策划

热门文章

  1. 转载:Linux查看设置系统时区
  2. CentOS Git服务安装
  3. 给Fedora 15的gnome3增加自定义程序快捷方式
  4. JSP复习(二):EL表达式
  5. Access数据库如何批量操作呀 ?
  6. Struts2笔记——初次框架配置
  7. Openstack部署工具
  8. 【Javascript】之eval()
  9. android技术下载
  10. lucene,基于QueryParser的搜索