日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

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

  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在處理費時的請求時不要阻塞,而是一部分一部分的顯示。

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

  實現異步處理的步驟:

  •   需要在@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服務器我們的異步線程已經執行完畢,讓Tomcat及時斷開與瀏覽器的連接,否則Tomcat無法知道異步線程是否已經結束,導致響應結束過一會才斷開連接。
  • 三、上傳支持

      上傳文件對表單的要求:

  •   method=post,提交方式必須為post
  •   enctype="multipart/form-data",它的默認值是它的默認值是:application/x-www-form-urlencoded
  •   <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新特性的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。