Servlet(筆記)

Servlet:server applet

1.概念:運行在服務器端的小程序。

* Servlet是一個接口,定義了Java類被瀏覽器訪問的規則。
* 我們自定義一個類,實現Servlet接口,複寫方法。

2.快速入門

1、創建JavaEE項目
2、定義一個類,實現Servlet接口
	* public class ServletDemo1 implements Servlet
3、實現接口中的抽象方法
4、配置Servlet
	* 在web.xml中配置
		<!--配置Servlet -->
	    <servlet>
	        <servlet-name>demo1</servlet-name>
	        <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
	    </servlet>
	    <servlet-mapping>
	        <servlet-name>demo1</servlet-name>
	        <url-pattern>/demo1</url-pattern>
	    </servlet-mapping>

3.執行原理

1、當服務器接收到客戶端請求後,解析請求URL路徑,獲取訪問的Servlet的資源路徑。
2、查找web.xml文件,是否有對應的<url-pattern>標籤體內容。
3、如果有,再找到對應的<servlet-class>標籤體中的全類名。
4、tomcat會將字節碼文件加載到內存中,並且創建其對象。
5、調用其方法。

4.Servlet中的生命週期

1、被創建:執行init方法,只執行一次。
	* Servlet什麼時候被創建?
		* 默認情況下,第一次被訪問時,Servlet被創建
		* 可以配置Servlet的創建時機。
			* 在<servlet>標籤體中配置
				1、第一次被訪問時,創建
					* <load-on-startup>	值爲負
				2、在服務器啓動時,創建
					* <load-on-startup>	值爲0或正整數
	* Servlet的init方法,只執行一次。說明一個Servlet在內存中只存在一個對象,Servlet是單例的。
		* 多個用戶同時訪問時,可能存在線程安全問題。
		* 解決方案:不在Servlet中定義成員變量。即使定義了,也不對其修改值。
2、提供服務:執行service方法,執行多次。
	* 每次訪問Servlet時,service方法都會被調用一次。
3、被銷燬:執行destory方法,只執行一次。
	* 只有服務器正常關閉時,才執行destory方法。
	* destory方法在Servlet被銷燬之前執行,一般用於釋放資源。

5.Servlet3.0

* 優點:支持註解配置,不需要web.xml文件了。
* 步驟:
	1、創建JavaEE項目,選擇Servlet3.0以上的版本,可以不創建web.xml文件。
	2、定義一個類,實現Servlet接口。
	3、複寫方法。
	4、在類上使用@WebServlet註解,進行配置。
		* @WebServlet("資源路徑")
		* 底層代碼
			@Target({ElementType.TYPE})
			@Retention(RetentionPolicy.RUNTIME)
			@Documented
			public @interface WebServlet {
			    String name() default "";//相當於<Servlet-name>
			
			    String[] value() default {};//代表urlPatterns()屬性配置
			
			    String[] urlPatterns() default {};//相當於<url-pattern>
			
			    int loadOnStartup() default -1;//相當於<load-on-startup>
			
			    WebInitParam[] initParams() default {};
			
			    boolean asyncSupported() default false;
			
			    String smallIcon() default "";
			
			    String largeIcon() default "";
			
			    String description() default "";
			
			    String displayName() default "";
			}

6.Servlet的體系結構

Servlet -- 接口
	|
GenericServlet -- 抽象類
	|
HttpServlet  -- 抽象類

*  GenericServlet抽象類:將Servlet接口中其他的方法做了默認空實現,只將service()方法作爲抽象方法。
	* 將來定義Servlet類時,可以繼承GenericServlet,實現service()方法即可。
* HttpServlet 抽象類:對http協議的一種封裝,簡化操作。
	* 將來定義Servlet類時,可以繼承HttpServlet,複寫doGet()/doPost()方法即可。

7.Servlet的相關配置

* urlpattern:Servlet的訪問路徑
	1、一個Servlet課定義多個訪問路徑。
		* 如,@WebServlet({"/d4","/dd4","/ddd4"})
	2、路徑定義規則。
		1、/xxx:路徑匹配
		2、/xxx/xxx:多層路徑,目錄結構
		3、*.do:擴展名匹配
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章