Servlet簡介
Servlet是什么
Java Servlet 是運(yùn)行在 Web 服務(wù)器或應(yīng)用服務(wù)器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序之間的中間層。
Servlet架構(gòu)

Paste_Image.png
Servlet生命周期
Servlet 生命周期可被定義為從創(chuàng)建直到毀滅的整個(gè)過程。以下是 Servlet 遵循的過程:
創(chuàng)建Servlet有兩個(gè)時(shí)機(jī):1)客戶端第一次請求一個(gè)Servlet的時(shí)候 2)Web應(yīng)用啟動的時(shí)候立即創(chuàng)建,load-on-startup Servlet
Servlet 通過調(diào)用 init () 方法進(jìn)行初始化。
Servlet 調(diào)用 service() 或者doGet和doPost方法來處理客戶端的請求。
Servlet 通過調(diào)用 destroy() 方法終止(結(jié)束)。
最后,Servlet 是由 JVM 的垃圾回收器進(jìn)行垃圾回收的。
Hello World
// 導(dǎo)入必需的 java 庫import java.io.*;
import javax.servlet.*;import javax.servlet.http.*;
// 擴(kuò)展 HttpServlet 類
public class HelloWorld extends HttpServlet {
private String message; public void init() throws ServletException {
// 執(zhí)行必需的初始化
message = "Hello World";
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 設(shè)置響應(yīng)內(nèi)容類型
response.setContentType("text/html");
// 實(shí)際的邏輯是在這里
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
}
public void destroy() {
// 什么也不做
}
}
Servlet的配置
從Servlet3.0開始,配置Servlet有兩種方式:
- 在Servlet中使用@WebServlet注解進(jìn)行配置
@WebServlet(name="firstServlet", urlPatterns={"/firstServlet"})
- 在web.xml文件中進(jìn)行配置
<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>
這個(gè)整數(shù)值越小,表面優(yōu)先級越高。
訪問Servlet的配置參數(shù)
同樣有兩種方式:
方式一:
@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>