1. Servlet概述

        Servlet是一种服务器端Java应用程序

        Servlet能动态响应客户端请求,生成动态的Web页面,从而扩张服务器的功能

        Servlet有Servlet容器管理(Servlet的运行环境)


2. Servlet特点

        高效

                每一个请求有一个轻量级的Java线程处理

        移植性好

                Servlet由Java编写,几乎所有的主流服务器都支持

        功能强大

                1)可创建动态内容的HTML页面

                2)与其他服务器资源(包括数据库和Java程序)进行通信

                3)可处理多个客户机连接


3. Servlet编程

        Servlet不是独立的应用程序,没有main方法

        Servlet不是由用户调用,而是由Servlet容器(如Tomcat)根据客户端的请求来调用

        Servlet容器根据Servlet配置来查找或创建Servlet实例,并执行该Servlet

        Servlet容器必须把客户端请求和响应封装成Servlet请求和Servlet响应对象传给Servlet

        Servlet使用Servlet请求对象获取客户端的信息,并执行特定业务逻辑;使用Servlet响应对象向客户端发送业务执行的结果


4. 简单示例:        

package TestServlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/Hello")
public class HelloWorld extends HttpServlet {
    private String message;

    @Override
    public void init() throws ServletException {
        super.init();
        message = "Hello world.";
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("<h1>" + message + "</h1>");
        out.println("<a href=\"JSP_Test/Date.jsp\">Date</a>");
    }

    @Override
    public void destroy() {
        super.destroy();
    }
}

        以上代码编译后, 打开Tomcat服务器,浏览器输入http://localhost:8080/Hello即可访问

        补充:    如果不使用@WebServlet("/Hello"),则需要在web.xml中手动部署(如下所示)

    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>TestServlet.HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/TestServlet.HelloWorld</url-pattern>
    </servlet-mapping>