JavaEE Servlet 概述

1.1 了解 Servlet

动态网页,不仅可以动态显示数据,还可以与用户做交互,如完成登录、注册等一系列动作。不同用户访问相同网页时,经常会发现所显示的内容不同,这样的网页就是经过服务器动态生成的。

Servlet 就是一种动态网页技术。Servlet 是由 Java 语言编写的 Web 服务端程序,同其他 Java 程序一样 Servlet 的运行需要 JRE 和 JDK 的支持,同时,Servlet 程序还需要放置在支持 Servlet 的 Web 服务器中运行。目前市面上有很多支持 Servlet 的 Web 服务器,其中,Tomcat 是比较轻便且开源免费的服务器。

Servlet 以面向对象的形式解释了 HTTP 请求和响应内容,它将 HTTP 请求的内容封装为 HttpServletRequest 对象,将响应内容封装为 HttpServletResponse 对象。用户访问某个网址显示的网页内容,就是服务器通过 HttpServletResponse 对象。用户访问某个网址显示的网页内容,就是服务器通过 HttpServletResponse 对象发送到浏览器的数据。

1.2 Servlet 的基本配置

(1)导入 JAR 包。使用 Maven 导入 Servlet 的 JAR 包,在 pom.xml 中添加依赖。

    <dependencies>
        <!-- Servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

(2)编写 Servlet。在 servlet 包内创建类 HelloServlet,继承自 HttpServlet 类,并重写 service 方法。

public class HelloServlet extends HttpServlet {

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        // 配置 UTF-8 字符集以支持中文
        res.setContentType("text/html;charset=utf-8");
        res.setCharacterEncoding("UTF-8");
        // 获取输出流以输出数据到浏览器中
        PrintWriter pw = res.getWriter();
        pw.write("我是 Servlet 服务端发送给浏览器的数据:Hello Servlet!");
        pw.close();
    }
}

(3)配置请求路径。路径配置即指浏览器请求到达 Web 容器,并指定处理该请求的 Servlet 类。需要在 web.xml 中以标签的形式进行配置。

完整的配置包括 “servlet” 标签与 “servlet-mapping” 标签,

  • “servlet” 标签中的 “servlet-name” 标签表示对 Servlet 进行命名,在整个 Web 容器中该值是唯一的。

  • “servlet-class” 标签需要填写完整的类路径。

  • “servlet-mapping” 是请求映射标签,表示 HTTP 请求与 Servlet 类的对应关系,对应关系通过 “servlet-name” 的值进行关联。

    <servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>helloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

(4)启动服务器。将编好的项目添加到 Tomcat 中,启动 Tomcat 服务器。

原文地址:https://www.cnblogs.com/john1015/p/13909689.html