1. 程式人生 > >servlet的 執行緒安全問題&建立時機改變&對映細節

servlet的 執行緒安全問題&建立時機改變&對映細節

 Servlet的細節: 

a: servlet 的執行緒安全問題:

   1) Servlet是單例的, 不安全的。    當Servlet的例項被建立後,自始至終在駐留在記憶體當中。 只有一份。     當多條執行緒對servlet的全域性變數進行訪問的時候,就容易引發資料的安全問題。           2)以下幾種方式 , 去解決資料的安全問題:         a:儘量的不要使用全域性變數:  使用區域性變數。         b:提供無狀態的成員:  不提供get 和 set方法:         c: 提供只讀狀態: 只提供get方法:            

b: 改變Servlet的建立時機: 

  預設情況: 在客戶端瀏覽器第一次發出請求的時候, 伺服器端建立servlet。    改變:  在伺服器端啟動的時候,建立servlet 。  建立時機提前。    web.xml檔案當中:       <load-on-startup>0</load-on-startup>          數值越小, 建立的時機越早。   

c:  當前web 應用程式的:  web.xml

  tomcat: web.xml  tomcat 執行時候依賴的一個檔案。           當前web應用程式的web.xml 繼承了 tomcat伺服器的web.xml 檔案。   在載入web.xml的時候,優先載入父檔案。           

d: servlet的對映細節: 

    (1)同一個servlet 可以繫結多個對映路徑:    案例:    <servlet-mapping>     <servlet-name>CServlet</servlet-name>     <url-pattern>/servlet/CServlet</url-pattern>     <url-pattern>/servlet/xxx</url-pattern>   </servlet-mapping>     (2) 配置對映路徑的時候,可以使用萬用字元:    1)    <url-pattern>/servlet/xxx</url-pattern>     對映標籤在進行配置的時候,必須是/ 開頭。 /相對路徑, 相對於當前的web應用:  http://localhost:8080/javaEE-04/  2) 同一個servlet 可以配置多個對映路徑:      <servlet-mapping>     <servlet-name>CServlet</servlet-name>     <url-pattern>/servlet/CServlet</url-pattern>     <url-pattern>/servlet/*</url-pattern>   </servlet-mapping>             3) 萬用字元的使用:     *: 代表任意:     /* :代表的是任意的請求:     *.do  : 只要是.do結尾的都可以。         注意: * 只能為字首 或者是字尾。 不能在中間使用:          4)萬用字元的優先順序的問題:          在使用萬用字元的時候,才有精確匹配的原則。