1. 程式人生 > 實用技巧 >java-Servlet相當於.net裡的Ashx

java-Servlet相當於.net裡的Ashx

Servlet相當於.net裡的Ashx(一般處理程式)

* 概念:執行在伺服器端的小程式
    * Servlet就是一個介面,定義了Java類被瀏覽器訪問到(tomcat識別)的規則。
    * 將來我們自定義一個類,實現Servlet介面,複寫方法。


* 快速入門:
    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> * 執行原理:
1. 當伺服器接受到客戶端瀏覽器的請求後,會解析請求URL路徑,獲取訪問的Servlet的資源路徑 2. 查詢web.xml檔案,是否有對應的<url-pattern>標籤體內容。 3. 如果有,則在找到對應的<servlet-class>全類名 4. tomcat會將位元組碼檔案載入進記憶體,並且建立其物件 5. 呼叫其方法 * 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. 被銷燬:執行destroy方法,只執行一次 * Servlet被銷燬時執行。伺服器關閉時,Servlet被銷燬 * 只有伺服器正常關閉時,才會執行destroy方法。 * destroy方法在Servlet被銷燬之前執行,一般用於釋放資源 * Servlet3.0* 好處: * 支援註解配置。可以不需要web.xml了。 * 步驟: 1. 建立JavaEE專案,選擇Servlet的版本3.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 ""; }