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

Java自学手记——servlet3.0新特性的更多相关文章

  1. 使用Servlet3.0新特性asyncSupported=true时抛异常java.lang.IllegalStateException: Not supported

    最近在运用Servlet3.0新特性:异步处理功能的时候出现以下了2个问题: 运行时会抛出以下两种异常: 一月 19, 2014 3:07:07 下午 org.apache.catalina.core ...

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

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

  3. 【servlet3.0新特性】Annotation注解配置

    servlet3.0新特性Servlet3.0引入的若干重要新特性,包括异步处理.新增的注解支持.可插性支持等等,为读者顺利向新版本过渡扫清障碍.Servlet3.0新特性概述Servlet3.0作为 ...

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

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

  5. Servlet3.0新特性

    1 Servlet3.0新特性概述 使用要求:MyEclipse10.0或以上版本,发布到Tomcat7.0或以上版本,创建JavaEE6.0应用! Servlete3.0的主要新特性如下三部分: 使 ...

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

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

  7. Java基础和JDK5.0新特性

    Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...

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

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

  9. Servlet3.0新特性使用详解

    可插拔的Web框架 几乎所有基于Java的web框架都建立在servlet之上.现今大多数web框架要么通过servlet.要么通过Web.xml插入.利用标注(Annotation)来定义servl ...

随机推荐

  1. 分享一款在线less转css的神器

          大多数web开发的程序员都了解和使用过Less, LESS是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作 ...

  2. qrcode生成二维码插件

    今天我要和大家分享的是利用qrcode来生成二维码. 首先要使用qrcode就需要引用文件,我这边用的是1.7.2版本的jquery加上qrcode <script type="tex ...

  3. 面向对象(java菜鸟的课堂笔记)

    类:相同的东西放在一起 分为属性和动作: 把一组或多组事物相同的特性的描述==>类   属性和动作被称为成员: //声明类的属性信息 public class **{ String name: ...

  4. 微信小程序开发 -- 02

    微信小程序开发 --02 微信小程序在开发中,难度系数不是很大,其中应用的技术也是web开发中常用的技术,虽然在微信开发者工具中的叫法与常见的web开发的叫法不太一样. 首先,在微信小程序开发中,代码 ...

  5. jsp,jquery,spring mvc 实现导出文件

    需求:在界面上选择一个日期,然后点击导出按钮,直接导出选择月份的考勤excel文件. 这篇文章主要是介绍如何下载文件! jsp中代码: <div class="form-group&q ...

  6. iOS bug调试技巧学习----breakpoint&condition

    给断点添加条件 - (void)testCondition2 { NSArray *array = @[@"我们", @"一起", @"来" ...

  7. (转)微信禁用右上角的分享按钮,WeixinJSBridge API以及隐藏分享的子按钮等菜单项

    <!--禁用微信分享按钮--> <script> function onBridgeReady() { WeixinJSBridge.call('hideOptionMenu' ...

  8. rabbitmq 死信邮箱配置(dead-letter)

    DLX,Dead-Letter-Exchange(死信邮箱)利用DLX,当消息在一个队列中变成死信后,它能被重新publish到另一个Exchange,这个Exchange就是DLX.消息变成死信一向 ...

  9. Hibernate.cfg.xml 主配置

    <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hiber ...

  10. Java程序设计环境概述

    本文主要Java程序设计环境的要点,以及相关注意事项. 一.安装Java开发包 Oracle公司为Linux.Mac OS X.Solaris和Windows提供了Java开发工具包(JDK)的最新. ...