Servlet平常筆記java
1)Servlet優缺點web
優勢:動態網頁,跨平臺,單例。安全
缺點:面對多線程併發訪問時,Servlet線程不安全問題。多線程
1)同一個Servlet能夠配置多個url-pattern。併發
2)資源通配符配置:*(任意個數的字符)框架
第一種: /* 或者 /system/*url
/*:任意一個字符或者不寫,均可以訪問。spa
/system/*:以system爲前綴的資源名能夠訪問。線程
第二種:*.拓展名xml
*.xxx:資源名必須以.xxx結尾才能訪問。
3)配置Servlet的時候,<servlet-name>不能起名爲default。
在Tomcat中,web.xml文件規定了,訪問靜態資源都得經過default這個Servlet。
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是線程安全的。