本文目录导读:

我来帮你系统性地入门Java Servlet开发,这是一个从零开始的学习路径:
开发环境准备
需要安装的工具
# 1. JDK 8+ (推荐JDK 11或17) - 下载地址:https://www.oracle.com/java/technologies/downloads/ # 2. IDE(推荐IntelliJ IDEA社区版) - 下载地址:https://www.jetbrains.com/idea/download/ # 3. Tomcat服务器(Servlet容器) - 下载地址:https://tomcat.apache.org/download-10.cgi # 4. Maven(依赖管理) - 下载地址:https://maven.apache.org/download.cgi
第一个Servlet项目
使用Maven创建Web项目结构
my-first-servlet/
├── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ └── HelloServlet.java
│ ├── resources/
│ └── webapp/
│ ├── WEB-INF/
│ │ └── web.xml
│ └── index.html
└── pom.xml
pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-first-servlet</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>my-first-servlet</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
</plugins>
</build>
</project>
编写第一个Servlet
package com.example;
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;
// 使用注解方式配置Servlet
@WebServlet(name = "HelloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
// 处理GET请求
@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("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>My First Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello, Servlet!</h1>");
out.println("<p>当前时间: " + new java.util.Date() + "</p>");
out.println("</body>");
out.println("</html>");
}
// 处理POST请求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
web.xml配置(注解方式可省略)
<?xml version="1.0" encoding="UTF-8"?>
<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_4_0.xsd"
version="4.0">
<display-name>My First Servlet Application</display-name>
</web-app>
Servlet核心概念
Servlet生命周期
@WebServlet("/lifecycle-demo")
public class LifecycleServlet extends HttpServlet {
// 1. 初始化(Servlet第一次被访问时调用)
@Override
public void init() throws ServletException {
System.out.println("Servlet正在初始化...");
}
// 2. 处理请求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("处理GET请求...");
response.getWriter().println("请求已处理");
}
// 3. 销毁(应用关闭时调用)
@Override
public void destroy() {
System.out.println("Servlet正在销毁...");
}
}
请求处理示例
@WebServlet("/user-handler")
public class UserHandlerServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取请求参数
String name = request.getParameter("name");
String age = request.getParameter("age");
// 获取请求头
String userAgent = request.getHeader("User-Agent");
// 设置响应
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<h2>用户信息</h2>");
out.println("<p>姓名: " + (name != null ? name : "未提供") + "</p>");
out.println("<p>年龄: " + (age != null ? age : "未提供") + "</p>");
out.println("<p>浏览器: " + userAgent + "</p>");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 处理POST请求(如表单提交)
String username = request.getParameter("username");
String password = request.getParameter("password");
// 处理登录逻辑...
response.sendRedirect("/success.html");
}
}
常用功能示例
请求转发和重定向
@WebServlet("/dispatcher-demo")
public class DispatcherServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if ("forward".equals(action)) {
// 请求转发(服务器内部跳转,URL不变)
request.setAttribute("message", "这是转发过来的数据");
request.getRequestDispatcher("/target.jsp").forward(request, response);
} else if ("redirect".equals(action)) {
// 重定向(浏览器跳转,URL改变)
response.sendRedirect("/other-page.html");
}
}
}
Session管理
@WebServlet("/session-demo")
public class SessionServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取或创建Session
HttpSession session = request.getSession();
// 设置Session属性
session.setAttribute("username", "张三");
session.setAttribute("loginTime", new java.util.Date());
// 获取Session ID
String sessionId = session.getId();
// 设置Session超时时间(秒)
session.setMaxInactiveInterval(30 * 60); // 30分钟
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<h2>Session Demo</h2>");
out.println("<p>Session ID: " + sessionId + "</p>");
out.println("<p>用户名: " + session.getAttribute("username") + "</p>");
out.println("<p>登录时间: " + session.getAttribute("loginTime") + "</p>");
// 清除Session
// session.invalidate();
}
}
部署和运行
使用IDE运行(推荐)
IntelliJ IDEA配置步骤:
- 点击菜单
Run→Edit Configurations - 点击 号 →
Tomcat Server→Local - 配置Tomcat路径
- Deployment中添加你的war包
- 点击运行按钮
手动部署
# 1. 打包项目 mvn clean package # 2. 将生成的war包复制到Tomcat的webapps目录 cp target/my-first-servlet.war $TOMCAT_HOME/webapps/ # 3. 启动Tomcat $TOMCAT_HOME/bin/startup.sh # Linux/Mac # 或 $TOMCAT_HOME/bin/startup.bat # Windows # 4. 访问应用 # http://localhost:8080/my-first-servlet/hello
学习建议
学习路线
- 第一阶段:掌握Servlet基本API(doGet/doPost)
- 第二阶段:学习JSP与Servlet配合使用
- 第三阶段:学习MVC设计模式
- 第四阶段:学习Filter、Listener
- 第五阶段:学习Spring MVC(企业级框架)
实践项目建议
// 练习项目:简易用户管理系统 // 功能清单: 1. 用户注册(doPost) 2. 用户登录(Session管理) 3. 用户列表展示(doGet) 4. 用户信息修改(doPut) 5. 用户删除(doDelete)
常见问题解决
// 1. 中文乱码问题
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
// 2. 静态资源访问
// 将HTML、CSS、JS等文件放在webapp目录下
// 3. 404错误
// 检查Servlet路径配置是否正确
这就是Servlet入门开发的基本流程,从简单的Hello World开始,逐步增加功能,多动手实践是最好的学习方式,遇到问题可以随时问我!
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播