Servlet 是Java用于创建动态Web应用的服务器端技术。本教程将介绍Servlet的基础知识、开发步骤和实际应用示例。
目录
1. Servlet 简介
Servlet 是运行在Web服务器上的Java程序,用于处理客户端请求并生成动态响应。常见用途包括:
- 处理表单提交。
- 生成动态HTML页面。
- 与数据库交互。
Servlet 需要运行在Servlet容器中(如Apache Tomcat)。
2. Servlet 生命周期
Servlet 的生命周期由容器管理,包含以下阶段:
- 加载:容器加载Servlet类。
- 实例化:创建Servlet对象。
- 初始化:调用
init()
方法,进行初始化。 - 服务:调用
service()
方法处理请求,通常分派到doGet()
或doPost()
。 - 销毁:调用
destroy()
方法,释放资源。
示例:
public void init() { System.out.println("Servlet 初始化"); }
public void destroy() { System.out.println("Servlet 销毁"); }
3. 开发环境搭建
所需工具
- JDK:Java开发工具包(推荐JDK 8或更高)。
- Tomcat:Servlet容器(下载地址:https://tomcat.apache.org/)。
- IDE:Eclipse、IntelliJ IDEA 或 VS Code(可选)。
配置步骤
- 安装JDK并设置
JAVA_HOME
环境变量。 - 下载并解压Tomcat,启动:
bin/startup.sh
(Unix)或bin/startup.bat
(Windows)。 - 验证Tomcat:访问
http://localhost:8080
,看到欢迎页面即成功。
项目结构
myapp/
├── WEB-INF/
│ ├── classes/ # 编译后的.class文件
│ └── web.xml # 部署描述文件
└── index.html # 静态页面
4. 创建基本Servlet
示例代码:SimpleServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SimpleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h1>Hello, Servlet World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
配置 web.xml
<web-app>
<servlet>
<servlet-name>SimpleServlet</servlet-name>
<servlet-class>SimpleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SimpleServlet</servlet-name>
<url-pattern>/simple</url-pattern>
</servlet-mapping>
</web-app>
部署与运行
- 编译:
javac -cp /path/to/tomcat/lib/servlet-api.jar SimpleServlet.java
- 将
.class
文件放入WEB-INF/classes/
。 - 将
myapp
放入Tomcat的webapps
目录。 - 访问:
http://localhost:8080/myapp/simple
。
5. 处理HTTP请求
GET 请求
doGet()
处理GET请求:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String query = request.getQueryString();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>GET 请求</h1>");
out.println("<p>查询字符串: " + (query != null ? query : "无") + "</p>");
}
访问:http://localhost:8080/myapp/simple?name=Alice
POST 请求
doPost()
处理POST请求:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>POST 请求已接收</h1>");
}
6. 表单数据处理
HTML表单:index.html
<!DOCTYPE html>
<html>
<body>
<form method="POST" action="/myapp/form">
姓名: <input type="text" name="name"><br>
年龄: <input type="text" name="age"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
Servlet:FormServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FormServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String age = request.getParameter("age");
out.println("<html><body>");
out.println("<h1>表单数据</h1>");
out.println("<p>姓名: " + name + "</p>");
out.println("<p>年龄: " + age + "</p>");
out.println("</body></html>");
}
}
配置 web.xml
<servlet>
<servlet-name>FormServlet</servlet-name>
<servlet-class>FormServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FormServlet</servlet-name>
<url-pattern>/form</url-pattern>
</servlet-mapping>
访问:http://localhost:8080/myapp/index.html
,提交表单后显示结果。
7. 参考资料
出站链接
- Servlet官方文档 – Servlet规范。
- Tomcat教程 – Tomcat使用指南。
- Oracle Java教程 – 官方Servlet教程。
其他资源
- 《Head First Servlets and JSP》 – Servlet入门书籍。
- X社区:搜索 #JavaServlet 获取示例。
这篇教程提供了Servlet的基础入门,包括环境搭建和代码示例。如果您需要更深入的内容(如注解配置、会话管理或数据库连接),请告诉我!如果您实际上想要Perl相关内容(如CGI),也请澄清!
发表回复