Yunyuzuiluo

250311

今天终于完全独立自主的完成一个使用MyBatis,servlet,html的javaweb正删改查小项目。
package com.ljy001.servlet;

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;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.ljy001.mapper.UserMapper;
import com.ljy001.pojo.User;

// 使用 @WebServlet 注解将该类映射到 "/user" 路径,使得该 Servlet 可以通过该路径访问
@WebServlet("/user")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

// 处理 GET 请求的方法
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // 设置响应的内容类型为 HTML,字符编码为 UTF-8
    response.setContentType("text/html;charset=UTF-8");
    // 获取用于向客户端输出数据的 PrintWriter 对象
    PrintWriter out = response.getWriter();

    try {
        // 从请求参数中获取名为 "action" 的参数值
        String action = request.getParameter("action");
        // 判断 action 是否为 "add",如果是则处理添加后的显示逻辑
        if ("add".equals(action)) {
            // 从请求参数中获取名为 "name" 的参数值
            String name = request.getParameter("name");
            // 从请求参数中获取名为 "age" 的参数值,并转换为整数类型
            int age = Integer.parseInt(request.getParameter("age"));
            // 向客户端输出 HTML 内容,显示用户添加成功的信息
            out.println("<html><body>");
            out.println("用户添加成功:姓名:" + name + ",年龄:" + age);
            out.println("</body></html>");
            // 结束当前请求处理,不再执行后续代码
            return;
        }

        // 以下是原有查询逻辑
        // 从类路径下读取名为 "mybatis-config.xml" 的配置文件,返回一个 Reader 对象
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        // 使用 SqlSessionFactoryBuilder 构建一个 SqlSessionFactory 对象,用于创建 SqlSession
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        // 通过 SqlSessionFactory 打开一个 SqlSession,用于执行数据库操作
        SqlSession session = sqlSessionFactory.openSession();

        // 获取 UserMapper 接口的实现对象,用于执行数据库的增删改查操作
        UserMapper userMapper = session.getMapper(UserMapper.class);
        // 调用 userMapper 的 getUserById 方法,根据用户 ID(这里为 1)查询用户信息
        User user = userMapper.getUserById(1);

        // 向客户端输出 HTML 内容,显示查询到的用户信息和添加新用户的链接
        out.println("<html><body>");
        out.println("用户信息:" + user.getName() + ",年龄:" + user.getAge());
        out.println("<br><a href='add.html'>添加新用户</a>");
        out.println("</body></html>");

        // 关闭 SqlSession,释放资源
        session.close();
        // 关闭 Reader,释放资源
        reader.close();
    } catch (Exception e) {
        // 打印异常堆栈信息,用于调试
        e.printStackTrace();
        // 向客户端输出 HTML 内容,显示发生错误的信息
        out.println("<html><body>发生错误:" + e.getMessage() + "</body></html>");
    }
}

// 处理 POST 请求的方法
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // 设置响应的内容类型为 HTML,字符编码为 UTF-8
    response.setContentType("text/html;charset=UTF-8");
    // 获取用于向客户端输出数据的 PrintWriter 对象
    PrintWriter out = response.getWriter();

    try {
        // 从请求参数中获取名为 "name" 的参数值
        String name = request.getParameter("name");
        // 从请求参数中获取名为 "age" 的参数值,并转换为整数类型
        int age = Integer.parseInt(request.getParameter("age"));

        // 从类路径下读取名为 "mybatis-config.xml" 的配置文件,返回一个 Reader 对象
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        // 使用 SqlSessionFactoryBuilder 构建一个 SqlSessionFactory 对象,用于创建 SqlSession
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        // 通过 SqlSessionFactory 打开一个 SqlSession,用于执行数据库操作
        SqlSession session = sqlSessionFactory.openSession();

        // 获取 UserMapper 接口的实现对象,用于执行数据库的增删改查操作
        UserMapper userMapper = session.getMapper(UserMapper.class);
        // 创建一个新的 User 对象,将用户输入的姓名和年龄设置进去,ID 为 null(因为数据库会自动生成)
        User user = new User(null, name, age);
        // 调用 userMapper 的 insertUser 方法,插入新用户数据,并返回受影响的行数
        int result = userMapper.insertUser(user);
        // 提交事务,将数据持久化到数据库
        session.commit();

        // 判断插入操作是否成功(受影响的行数大于 0 表示成功)
        if (result > 0) {
            // 添加成功后重定向到显示页面,并带上添加的用户信息作为请求参数
            response.sendRedirect(request.getContextPath() + "/user?action=add&name=" + name + "&age=" + age);
        } else {
            // 如果插入失败,向客户端输出添加失败的信息
            out.println("添加失败");
        }

        // 关闭 SqlSession,释放资源
        session.close();
        // 关闭 Reader,释放资源
        reader.close();
    } catch (Exception e) {
        // 打印异常堆栈信息,用于调试
        e.printStackTrace();
        // 向客户端输出 HTML 内容,显示发生错误的信息
        out.println("<html><body>发生错误:" + e.getMessage() + "</body></html>");
    }
}

}

posted on 2025-03-11 20:57  刘晋宇  阅读(28)  评论(0)    收藏  举报

导航