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().
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");
}
}