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>");
}
}
}
浙公网安备 33010602011771号