Javaweb學習心得小總結---servlet開發


1.Servlet是什么?(來自百度,知道的可以忽略本段)

Servlet是sun公司提供的一門用於開發動態web資源的技術。
  Sun公司在其API中提供了一個servlet接口,用戶若想用發一個動態web資源(即開發一個Java程序向瀏覽器輸出數據),需要完成以下2個步驟:
  1、編寫一個Java類,實現servlet接口。
  2、把開發好的Java類部署到web服務器中。
  按照一種約定俗成的稱呼習慣,通常我們也把實現了servlet接口的java程序,稱之為Servlet

 

2.Servlet的工作流程?

    Servlet程序是Web服務器調用,web服務器接到客戶端的Servlet請求后:

   1.web服務器首先檢查是否裝載並創建了該Servlet的實例對象,如果是執行4,否則執行2,

   2.裝載並創建Servlet的一個實例對象,並調用init()方法

   4.創建一個封裝http請求信息的HttpServletRequest對象和響應的HttpServletResponse對象,

   5.web程序停止之前,調用Servlet的destroy()方法,卸載Servlet。

3.使用Servlet注意的幾個問題?

       因為我們是通過url訪問web服務器中的資源,Servlet若想被外界訪問,必須映射到url地址上,這個工作

在web.xml文件中使用<servlet>元素和<servlet-mapping>元素中完成。

4 缺省Servlet

       如果<servlet-mapping>元素的<url-pattern>中的映射路徑僅為(/),那么這個Servlet就是缺省的Servlet,用於

處理其他Servlet都不處理的訪問請求.

 5.Servlet的線程安全問題

      當多個客戶端並發訪問同一個Servlet,web服務器會為每一個客戶端的訪問請求創建一個線程,

並調用service()方法,因此service方法內如果訪問了同一個資源,就可能引發線程安全問題。

    

 public class ServletDemo3 extends HttpServlet {
12 
13     int i=1;
14     public void doGet(HttpServletRequest request, HttpServletResponse response)
15             throws ServletException, IOException {
16         /**
17          * 加了synchronized后,並發訪問i時就不存在線程安全問題了,
18          * 為什么加了synchronized后就沒有線程安全問題了呢?
19          * 假如現在有一個線程訪問Servlet對象,那么它就先拿到了Servlet對象的那把鎖
20          * 等到它執行完之后才會把鎖還給Servlet對象,由於是它先拿到了Servlet對象的那把鎖,
21          * 所以當有別的線程來訪問這個Servlet對象時,由於鎖已經被之前的線程拿走了,后面的線程只能排隊等候了
22          * 
23          */
24         synchronized (this) {//在java中,每一個對象都有一把鎖,這里的this指的就是Servlet對象
25             i++;
26             try {
27                 Thread.sleep(1000*4);
28             } catch (InterruptedException e) {
29                 e.printStackTrace();
30             }
31             response.getWriter().write(i+"");
32         }
33         
34     }
35 
36     public void doPost(HttpServletRequest request, HttpServletResponse response)
37             throws ServletException, IOException {
38         doGet(request, response);
39     }
40 
41 }
這種做法是給每個Servlet對象加了一把鎖,假如有9999個人同時訪問一個Servlet,那么就得按先后順序排序,不適應。


由於時間關系,筆者參閱了下面的部分內容,在此表示感謝,也請大家踴躍指正幫助更多的想學習servlet的孩子:

http://www.cnblogs.com/xdp-gacl/p/3760336.html



   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM