Servlet簡介
Servlet是什么
Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。
Servlet架構
Paste_Image.png
Servlet生命周期
Servlet 生命周期可被定義為從創建直到毀滅的整個過程。以下是 Servlet 遵循的過程:
創建Servlet有兩個時機:1)客戶端第一次請求一個Servlet的時候 2)Web應用啟動的時候立即創建,load-on-startup Servlet
Servlet 通過調用 init () 方法進行初始化。
Servlet 調用 service() 或者doGet和doPost方法來處理客戶端的請求。
Servlet 通過調用 destroy() 方法終止(結束)。
最后,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的。
Hello World
// 導入必需的 java 庫import java.io.*;
import javax.servlet.*;import javax.servlet.http.*;
// 擴展 HttpServlet 類
public class HelloWorld extends HttpServlet {
private String message; public void init() throws ServletException {
// 執行必需的初始化
message = "Hello World";
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 設置響應內容類型
response.setContentType("text/html");
// 實際的邏輯是在這里
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
}
public void destroy() {
// 什么也不做
}
}
Servlet的配置
從Servlet3.0開始,配置Servlet有兩種方式:
- 在Servlet中使用@WebServlet注解進行配置
@WebServlet(name="firstServlet", urlPatterns={"/firstServlet"})
- 在web.xml文件中進行配置
<servlet>
<servlet-name>name</servlet-name>
<servlet-class>class</servlet-class>
<servlet>
<servlet-mapping>
<servlet-name>name</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
load-on-startup Servlet
有兩種方式:
方式一:
@WebServlet(loadOnStartUp=1)
方式二:
<servlet>
<servlet-name>name</servlet-name>
<servlet-class>class</servlet-class>
<load-on-startup>1</load-on-startup>
<servlet>
這個整數值越小,表面優先級越高。
訪問Servlet的配置參數
同樣有兩種方式:
方式一:
@WebServlet(name="testServlet",urlPattern="/testServlet",initParams={@WebInitParam(name="a",value="b")})
public class TestServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse, response) throws ServletException, java.io.IOException{
ServletConfig config = getServletConfig();
String a = config.getInitParameter("a");
}
}
方式二:
<servlet>
<servlet-name>name</servlet-name>
<servlet-class>class</servlet-class>
<init-param>
<param-name></param-name>
<param-value></param-value>
</init-param>
<servlet>