Servlet简介
Servlet是什么
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
Servlet架构
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>