Servlet3.0特性

Servlet平常筆記java


 

Servlet

1)Servlet優缺點web

  優勢:動態網頁,跨平臺,單例。安全

  缺點:面對多線程併發訪問時,Servlet線程不安全問題。多線程

 

Servlet的映射細節

1)同一個Servlet能夠配置多個url-pattern。併發

2)資源通配符配置:*(任意個數的字符)框架

  第一種: /* 或者 /system/*url

      /*:任意一個字符或者不寫,均可以訪問。spa

       /system/*:以system爲前綴的資源名能夠訪問。線程

  第二種:*.拓展名xml

      *.xxx:資源名必須以.xxx結尾才能訪問。

3)配置Servlet的時候,<servlet-name>不能起名爲default。

  在Tomcat中,web.xml文件規定了,訪問靜態資源都得經過default這個Servlet。

  web.xml文件中的default

4)Servlet對象的生命週期

  第一次訪問:

    構造器-->init-->service

  第N次訪問:

    service

  在框架中,咱們習慣在Servlet中配置<load-on-starup>來決定初始化和構建的順序。

  SpringMVC中,優先啓動該Servlet(主要負責加載資源和初始化操做)。

 

註解配置

1)註解取代部分web.xml配置

  在web.xml中配置Servlet會顯得龐大臃腫,註解能夠減小大量配置代碼。

  使用註解前,要修改web.xml中meta-data-complete的值。

  meta-data-complete=「true」:不掃描註解。

  meta-data-complete=「false」: 缺省值,掃描註解。

2)配置文件和註解的選擇

  從開發角度上:註解更簡單

  從維護角度上:註解維護困難

  因此在開發中,通用配置通常在web.xml在完成,特殊/個體的配置使用註解;而在web中,和其餘框架作集成的時候,使用配置文件。

 

線程安全問題

緣由:多個線程併發訪問同一資源。

解決方案:

  方案一:讓Servlet實現javax.servlet.SingleThreadModel接口,只能同時讓一個線程來訪問資源,多個請求則進入等待(不推薦)。

  方案二:在Servlet中不使用成員變量。成員變量做爲對象僅一份資源,換成局部變量,每一個線程都有各自的變量。

  Struct1和SpringMVC也是線程不安全的,Stuct2是線程安全的。

相關文章
相關標籤/搜索