Java Servlet案例如何入门开发

wen java案例 25

本文目录导读:

Java Servlet案例如何入门开发

  1. 开发环境准备
  2. 第一个Servlet项目
  3. Servlet核心概念
  4. 常用功能示例
  5. 部署和运行
  6. 学习建议

我来帮你系统性地入门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配置步骤:

  1. 点击菜单 RunEdit Configurations
  2. 点击 号 → Tomcat ServerLocal
  3. 配置Tomcat路径
  4. Deployment中添加你的war包
  5. 点击运行按钮

手动部署

# 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

学习建议

学习路线

  1. 第一阶段:掌握Servlet基本API(doGet/doPost)
  2. 第二阶段:学习JSP与Servlet配合使用
  3. 第三阶段:学习MVC设计模式
  4. 第四阶段:学习Filter、Listener
  5. 第五阶段:学习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开始,逐步增加功能,多动手实践是最好的学习方式,遇到问题可以随时问我!

抱歉,评论功能暂时关闭!