Servlet_生命週期詳解以及Servlet_3.0註解配置
阿新 • • 發佈:2022-12-02
Servlet_生命週期詳解
1.被建立:執行init方法,只執行一次
Servlet什麼時候被建立?
預設情況下,第一次被訪問時,Servlet被建立
可以配置執行Servlet的建立時機
在<servlet>標籤下配置
1.第一次被訪問時,建立
<load-on-startup>的值為負數
2.在伺服器啟動時,建立
<load-on-startup>的值為0或正整數
<!-- 配置Servlet --> <servlet> <servlet-name>demo2</servlet-name> <servlet-class>com.example.web.servlet.ServletDemo2</servlet-class> <!-- 執行Servlet的建立時機 1.第一次被訪問時,建立 <load-on-startup>的值為負數 2.在伺服器啟動時,建立 <load-on-startup>的值為0或正整數--> <load-on-startup></load-on-startup> </servlet> <!-- 對映 --> <servlet-mapping> <servlet-name>demo2</servlet-name> <url-pattern>/demo2</url-pattern> </servlet-mapping>
Servlet的init方法,只執行一次,說明一個Servlet在記憶體中只存在一個物件,Servlet是單例的
多個使用者同時訪問時,可能存線上程安全問題
解決:儘量不要在Servlet中定義成員變數,即使定義了成員變數,也不要對修改值
2.提供服務:執行service方法,每次訪問執行一次
每次訪問Servlet時,Servlet方法都會被呼叫一次
3.被銷燬:執行destroy方法,執行一次
Servlet被銷燬是執行。伺服器關閉時,Servlet被銷燬
只有伺服器正常關閉時,才會執行destroy方法
Servlet_3.0註解配置
好處:
支援註解配置,可以不需要web.xml了
步驟:
1.建立JavaEE專案,選擇Servlet的版本3.0以上,可以不建立web.xml
2.定義一個類,實現Servlet介面
3.複寫方法
4.在類上使用@WebServlet註解,進行配置
@WebServlet("資源路徑")
@WebServlet("/demo") public class ServletDemo3 implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("Servlet3.0來了..."); } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }