本指南将通过一个简单的Servlet示例,展示如何创建、配置和运行Servlet,包括处理HTTP请求和生成动态响应。
目录
1. 实例概述
我们将创建一个名为 WelcomeServlet
的Servlet:
- 功能:响应GET请求,显示欢迎消息。
- 扩展:处理POST请求的表单数据。
- 目标:展示Servlet的基本用法。
2. 开发环境准备
工具
- JDK:已安装(如JDK 11)。
- Tomcat:已安装并运行(如Tomcat 10)。
- 项目目录:
myapp/
├── WEB-INF/
│ ├── classes/ # 存放 .class 文件
│ └── web.xml # 配置文件
└── index.html # 静态页面(可选)
验证
- 确保
java -version
和http://localhost:8080
正常工作。
3. 创建Servlet代码
WelcomeServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class WelcomeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置响应内容类型
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 生成HTML响应
out.println("<html>");
out.println("<head><title>Welcome Servlet</title></head>");
out.println("<body>");
out.println("<h1>欢迎使用 Servlet!</h1>");
out.println("<p>当前时间: " + new java.util.Date() + "</p>");
out.println("</body>");
out.println("</html>");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response); // 简单起见,POST调用GET
}
}
- 说明:
doGet()
:处理GET请求,显示欢迎消息和当前时间。doPost()
:暂与GET相同,后续扩展。
4. 配置Servlet
web.xml
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0">
<servlet>
<servlet-name>WelcomeServlet</servlet-name>
<servlet-class>WelcomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WelcomeServlet</servlet-name>
<url-pattern>/welcome</url-pattern>
</servlet-mapping>
</web-app>
- 说明:
<servlet>
:定义Servlet名称和类。<servlet-mapping>
:映射URL路径。
5. 部署与运行
编译
- 将
WelcomeServlet.java
放入myapp/WEB-INF/classes/
。 - 编译:
javac -cp /path/to/tomcat/lib/servlet-api.jar WelcomeServlet.java
- 确保
servlet-api.jar
在Tomcat的lib
目录中。
部署
- 将
myapp
目录复制到Tomcat的webapps
目录:
cp -r myapp /path/to/tomcat/webapps/
- 启动Tomcat:
- Windows:
bin\startup.bat
- Linux/Mac:
bin/startup.sh
访问
- 打开浏览器,访问:
http://localhost:8080/myapp/welcome
- 输出示例:
欢迎使用 Servlet!
当前时间: Tue Mar 25 12:34:56 CST 2025
6. 扩展实例:表单处理
添加表单页面:index.html
<!DOCTYPE html>
<html>
<head><title>表单提交</title></head>
<body>
<form method="POST" action="/myapp/welcome">
姓名: <input type="text" name="username"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
修改 WelcomeServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class WelcomeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>欢迎使用 Servlet!</h1>");
out.println("<p>请通过表单提交姓名。</p>");
out.println("</body></html>");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
out.println("<html><body>");
out.println("<h1>欢迎, " + (username != null ? username : "访客") + "!</h1>");
out.println("<p>当前时间: " + new java.util.Date() + "</p>");
out.println("</body></html>");
}
}
测试
- 重新编译并部署。
- 访问
http://localhost:8080/myapp/index.html
。 - 输入姓名并提交,页面显示个性化欢迎消息。
7. 参考资料
出站链接
- Servlet API – 官方规范。
- Tomcat文档 – Servlet容器指南。
- Java EE教程 – Oracle官方教程。
其他资源
- 《Servlet & JSP: A Tutorial》 – Servlet开发书籍。
- X社区:搜索 #ServletExample 获取更多示例。
这篇指南提供了一个完整的Servlet实例,从基本GET响应到表单处理。如果您需要更复杂的功能(如数据库连接、会话管理或注解配置),请告诉我!
发表回复