日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Java自学手记——servlet3.0新特性

發(fā)布時間:2025/7/14 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java自学手记——servlet3.0新特性 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  servlet3.0出來已經(jīng)很久了,但市場上尚未普遍應用,servlet3.0有三個比較重要的新特性:使用注解來代替配置文件,異步處理以及上傳組件支持。

  支持servlet3.0的要求:MyEclipse10.0或以上版本,發(fā)布到Tomcat7.0或以上版本,并且需要創(chuàng)建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在處理費時的請求時不要阻塞,而是一部分一部分的顯示。

  原來,在服務器沒有結束響應之前,瀏覽器是看不到響應內(nèi)容的!只有響應結束時,瀏覽器才能顯示結果,使用異步處理,在服務器開始響應后,瀏覽器可以看到響應內(nèi)容,不用等待服務器響應結束。

  實現(xiàn)異步處理的步驟:

  •   需要在@WebServlet注解中給出 asyncSupported=true, 不然Servlet默認是不支持異步處理的,如果存在過濾器,也需要在WebFilter設置該值。
  •   得到AsynoContext,它是異步上下文對象,AsynoContext ac = request.startAsync(request, response);
  •   給上下文一個 Runable 對象,啟動它!
  • 1 ac.start(new Runnable(){ 2 public void run(){ 3 ... 4 } 5 });

      注意:

  •   響應類型必須是 text/html, 所以需要設置?response.setContentType("text/html;charset=utf-8");
  •   IE如果不能正常輸出,這說明響應體大小不足512B,那你需要更多的輸出!
  •   AsyncContext#complete();:通知Tomcat服務器我們的異步線程已經(jīng)執(zhí)行完畢,讓Tomcat及時斷開與瀏覽器的連接,否則Tomcat無法知道異步線程是否已經(jīng)結束,導致響應結束過一會才斷開連接。
  • 三、上傳支持

      上傳文件對表單的要求:

  •   method=post,提交方式必須為post
  •   enctype="multipart/form-data",它的默認值是它的默認值是:application/x-www-form-urlencoded
  •   <input type="file" name="必須給出">
  •   使用文件上傳是,Servlet中需要使用request.getInputStream()來獲取整個表單的數(shù)據(jù),不能夠使用request.getParameter()。使用commons-fileupload類庫中的方法可以三部得到上傳文件的數(shù)據(jù):創(chuàng)建工廠,利用工廠創(chuàng)建解析器,使用解析器來解析request對象,得到List<FileItem>。servlet3.0中對上傳提供了支持,不再需要使用commons-fileupload,而是使用servlet3.0提供的上傳接口。

      上傳步驟:使用request.getPart("字段名"),得到Part實例,通過Part中的方法得到文件的數(shù)據(jù),不過還沒有提供獲取文件原名稱的方法, 需要自己截取,servlet默認是不支持使用上傳組件的,需要在servlet中添加注解,@MultipartConfig

    轉(zhuǎn)載于:https://www.cnblogs.com/elecdog/p/5735348.html

    總結

    以上是生活随笔為你收集整理的Java自学手记——servlet3.0新特性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。