Servlet

1. 什么是Servlet?

Servlet是运行在Web服务器或应用服务器上的程序,它是作为Web浏览器/其他HTTP客户端的请求和HTTP服务器上的数据库/应用程序之间的中间层。使用Servlet可以收集来自网页表单的用户输入,呈现来自数据库或其他源的记录,还可以动态创建网页。

在Web应用程序框架中,它可以完全取代CGI程序。具有以下优点:

1). 执行效率高。每一个Servlet对应一个独立的线程。

2). 以Java为基础

3). 拥有跨平台的功能。

2. Servlet生命周期

1)加载Servlet类。可能在容器启动时发生,也可能在第一个客户使用时进行。

2)实例化。Servlet容器收到第一个针对此Servlet的请求时,调用该Servlet的默认构造方法,创建Servlet的一个实例 ServletConfig对象。

3)初始化。创建Servlet实例时,容器会调用该Servlet的init()方法(针对一个Servlet类只会调用一次)

4)服务。如果请求该Servlet,则容器再启动一个线程,调用该Servlet的service()方法, 由service()方法判断HTTP为什么请求,再调用相应的doGet()或者doPost()方法。(因此写Servlet类一般就是重写doGet()或者doPost()方法)

5)销毁。当Servlet容器判定某个Servlet实例不再需要时,或者Servlet容器本身必须被关闭时,调用destroy()方法释放此Servlet实例所占用的存储器空间和相关资源。

3. Java Servlet

Java Servlet是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类。

由两大部分组成:

  • javax.servlet
  • javax.servlet.http

4. 实例

 下面是 Servlet 输出 Hello World 的示例源代码:

 1 // 导入必需的 java 库
 2 import java.io.*;
 3 import javax.servlet.*;
 4 import javax.servlet.http.*;
 5 
 6 // 扩展 HttpServlet 类
 7 public class HelloWorld extends HttpServlet {
 8  
 9   private String message;
10 
11   public void init() throws ServletException
12   {
13       // 执行必需的初始化
14       message = "Hello World";
15   }
16 
17   public void doGet(HttpServletRequest request,
18                     HttpServletResponse response)
19             throws ServletException, IOException
20   {
21       // 设置响应内容类型
22       response.setContentType("text/html");
23 
24       // 实际的逻辑是在这里
25       PrintWriter out = response.getWriter();
26       out.println("<h1>" + message + "</h1>");
27   }
28   
29   public void destroy()
30   {
31       // 什么也不做
32   }
33 }

 在/webapps/ROOT/WEB-INF/de web.xml文件中创建以下条目:

<web-app>      
    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>  
原文地址:https://www.cnblogs.com/lesleysbw/p/6245210.html