servlet是单例多线程!
servlet是单例多线程!!
servlet是单例多线程!!!
1 Servlet简介
servlet是一种服务器端的应用程序,具有独立于平台和协议的特性,可以生成动态的web页面。它担当客户请求(web浏览器或其他HTTP客户程序)和服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
JSP是servlet的一种形式,每个JSP页面实际上就是一个servlet实例——JSP页面由servlet引擎转换成servlet,servlet负责响应客户请求。也就是说使用JSP实际上还是使用servlet,因为web应用中每个JSP页面都会由servlet容器生成servlet。
图1 servlet应用程序的体系结构
2 创建第一个servlet
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/hello")
public class Servlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
System.out.println("hello:post");
PrintWriter out = response.getWriter();
out.print("<h1 style='color:red'>post</h1>");
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
System.out.println("hello:get");
PrintWriter out = response.getWriter();
out.print("<h1 style='color:red'>get</h1>");
}
}
3 servlet的生命周期
servlet的生命周期由servlet容器控制,该容器创建servlet的实例。servlet的生命周期就是指servlet实例在创建之后响应客户端请求直至销毁的全过程。servlet实例的首次创建取决于servlet的首次调用。servlet接口定义了servlet生命周期的三个方法,这些方法就是init(),service(),destroy().
(1)init()方法用来把servlet导入和初始化。这个方法在servlet被预加载或在第一次请求时执行。
(2)servlet处理0个或多个请求。servlet对每个方法都用service()方法来处理。
(3)当web应用声明servlet被关闭、servlet被销毁、垃圾收集器对资源进行收集时,用destroy()方法来关闭servlet。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/hello")
public class ServletDemo extends javax.servlet.http.HttpServlet {
public ServletDemo(){
super();
}
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
System.out.println("hello:post");
PrintWriter out = response.getWriter();
out.print("<h1 style='color:red'>post</h1>");
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
System.out.println("hello:get");
PrintWriter out = response.getWriter();
out.print("<h1 style='color:red'>get</h1>");
}
public void destroy(){
System.out.println("destroy");
}
public void init(){
System.out.println("init");
}
}