Servlet 简介及入门示例
参考:Servlet 是用来做什么的?Servlet 技术的特点、ChatGPT
简介
Servlet 是使用 Java 语言编写的运行在服务器端的程序。狭义的 Servlet 是指 Java 语言中的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。Servlet 主要用于处理客户端传来的 HTTP 请求,并返回一个响应,它能够在 doGet() 和 doPost() 等方法中处理请求。
Servlet 中的请求处理方法由 Servlet 容器提调用,所谓的 Servlet 容器是指提供了 Servlet 功能的服务器,Servlet 容器将 Servlet 动态的加载到服务器上。与 HTTP 协议相关的 Servlet 使用 HTTP 请求和 HTTP 响应与客户端进行交互。Servlet 应用程序的体系结构如下图所示:
在上图中,Servlet 的请求首先会被 HTTP 服务器接收,HTTP 服务器只负责静态 HTML 页面的解析,对于 Servlet 的请求转交给 Servlet 容器,Servlet 容器会根据 web.xml 文件中的映射关系,调用相应的 Servlet,Servlet 将处理的结果返回给 Servlet 容器,并通过 HTTP 服务器将响应传输给客户端。
实际使用时,通常直接继承抽象类 HttpServlet,HttpServlet 继承自抽象类 GenericServlet,GenericServlet 实现了 Servlet 接口。下面是一个示例。
示例
使用 Servlet 技术处理请求大致分以下几步:
- 编写 web.xml
- 继承 HttpServlet 编写处理逻辑
- 编译程序后将 class 文件放到指定目录
- 启动 Tomcat
Tomcat 是常见的 Servlet 容器。
1. Tomcat 配置
首先,确保你已经安装了 Apache Tomcat。然后在webapps
目录下创建一个新的文件夹,例如MyServletApp
。
在MyServletApp
目录下,创建以下文件结构:
MyServletApp/
├── WEB-INF/
│ ├── web.xml
└── HelloServlet.java
2. web.xml 配置
在WEB-INF
目录中创建web.xml
文件,内容如下:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
3. HelloServlet.java 代码
在MyServletApp
目录下创建HelloServlet.java
文件,内容如下:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("<h1>Hello, World!</h1>");
}
}
4. 编译 Servlet
确保你的 Java 开发环境已设置好(如 JDK 和 CLASSPATH)。在命令行中,进入MyServletApp
目录并编译 Servlet:
javac -cp "path/to/tomcat/lib/*" HelloServlet.java
5. 部署到 Tomcat
将编译后的HelloServlet.class
文件放入WEB-INF/classes
目录中。然后启动 Tomcat 服务器。
6. 访问 Servlet
在浏览器中访问以下 URL:
http://localhost:8080/MyServletApp/hello
你应该会看到页面上显示 "Hello, World!"。