效果展示
显示所有用户
添加用户
修改用户
删除用户
代码结构
源码
java
User.java
用户实体类。
package bean;
import java.io.Serializable;
public class User implements Serializable {
private int id;
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserDao.java
操作users表的一些方法。
package dao;
import bean.User;
import utils.DBUtils;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class UserDao implements Serializable {
/**
* 查找数据库中的所有记录
*
* @return 返回查询结果集合
*/
public List<User> selectAll() {
// 存储查询结果集的集合
List<User> userList = new ArrayList<>();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 获取数据库连接对象
conn = DBUtils.getConnection();
// SQL语句
String sql = "select * from users";
// 创建数据库执行对象
ps = conn.prepareStatement(sql);
// 获取结果集对象
rs = ps.executeQuery();
// 对结果集进行遍历
while (rs.next()) {
// 实例化User对象
User user = new User();
// 进行赋值
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
// 将User对象添加到集合中
userList.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.release(conn, ps, rs);
}
return userList;
}
/**
* 查询用户通过用户id
*
* @param id 用户id
* @return 返回查询用户
*/
public User selectById(int id) {
// 定义一个User对象
User user = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 获取数据库连接对象
conn = DBUtils.getConnection();
// SQL语句
String sql = "select id, username, password from users where id=?";
// 创建数据库执行对象
ps = conn.prepareStatement(sql);
// 设置参数
ps.setInt(1, id);
// 获取结果集对象
rs = ps.executeQuery();
// 对结果集进行遍历
while (rs.next()) {
// 实例化User对象
user=new User();
// 对User进行赋值
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.release(conn, ps, rs);
}
return user;
}
/**
* 通过id删除记录
*
* @param id 用户id
* @return 返回受影响行数
*/
public int deleteById(int id) {
int count = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
// 获取数据库连接对象
conn = DBUtils.getConnection();
// SQL语句
String sql = "delete from users where id=?";
// 创建数据库执行对象
ps = conn.prepareStatement(sql);
// 对参数进行赋值
ps.setInt(1, id);
// 执行删除
count = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.release(conn, ps, null);
}
return count;
}
/**
* 添加用户
*
* @param user 用户对象
* @return 返回受影响行数
*/
public int addUser(User user) {
int count = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
// 获取数据库连接对象
conn = DBUtils.getConnection();
// SQL语句
String sql = "insert into users(username, password) values (?,?);";
// 创建数据库执行对象
ps = conn.prepareStatement(sql);
// 对参数进行赋值
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
// 执行增加
count = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.release(conn, ps, null);
}
return count;
}
/**
* 更新用户
*
* @param user 用户
* @return 返回受影响行数
*/
public int updateUser(User user) {
// 受影响行数
int count = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
// 获取数据库连接对象
conn = DBUtils.getConnection();
// SQL语句
String sql = "update users set username=?,password=? where id=?";
// 创建数据库执行对象
ps = conn.prepareStatement(sql);
// 对参数进行赋值
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.setInt(3, user.getId());
// 执行更新
count = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.release(conn, ps, null);
}
return count;
}
}
UserServlet.java
处理前端传来的数据,并作出响应的Servlet。
package servlet;
import bean.User;
import dao.UserDao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
public class UserServlet extends HttpServlet {
private UserDao userDao = new UserDao();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求的编码
request.setCharacterEncoding("UTF-8");
// 设置响应的编码
response.setContentType("text/html;charset=UTF-8");
// 获取action
String action = request.getParameter("action");
// 对action进行判断
if (action.equals("userList")) {// 如果参数是userList则显示所有用户列表
// 获取用户列表集合
List<User> userList = userDao.selectAll();
// 获取请求的session
HttpSession session = request.getSession();
// 设置session
session.setAttribute("userList", userList);
// 跳转user_list.jsp页面
request.getRequestDispatcher("user_list.jsp").forward(request, response);
} else if (action.equals("add")) {// 如果参数是add则是添加用户
// 获取用户名
String username = request.getParameter("username");
// 获取密码
String password = request.getParameter("password");
// 添加到数据库
int i = userDao.addUser(new User(username, password));
// 对添加结果进行判断
if (i > 0) {
response.getWriter().println("<script>alert('添加用户成功!');window.location.href='userServlet?action=userList';</script>");
} else {
response.getWriter().println("<script>alert('添加用户失败!');window.location.href='add_user.jsp';</script>");
}
} else if (action.equals("del")) {// 如果参数是del则是删除用户
// 获取要删除的id
String id = request.getParameter("id");
// 调用数据库方法进行删除操作
int i = userDao.deleteById(Integer.parseInt(id));
// 对删除结果进度判断
if (i > 0) {
response.getWriter().println("<script>alert('删除用户成功!');window.location.href='userServlet?action=userList';</script>");
} else {
response.getWriter().println("<script>alert('删除用户失败!');window.location.href='userServlet?action=userList';</script>");
}
} else if (action.equals("edit")) {// 如果参数是edit则是将要修改的参数保存到session中传输到edit_user.jsp页面进行显示
// 获取要修改的id
String id = request.getParameter("id");
// 通过id查询用户
User user = userDao.selectById(Integer.parseInt(id));
// 保存到session中,然后在edit_user.jsp中使用
request.getSession().setAttribute("user", user);
// 跳转到edit_user.jsp页面
request.getRequestDispatcher("edit_user.jsp").forward(request, response);
} else if (action.equals("update")) {// 如果参数是update则是将修改后的数据保存到数据库中
// 获取id
String id = request.getParameter("id");
// 获取修改后的用户名
String username = request.getParameter("username");
// 获取修改后的密码
String password = request.getParameter("password");
// 将修改更新到数据库中
int i = userDao.updateUser(new User(Integer.parseInt(id), username, password));
// 对更新结果进行判断
if (i > 0) {// 如果更新成功
response.getWriter().println("<script>alert('编辑用户成功!');window.location.href='userServlet?action=userList';</script>");
} else {
response.getWriter().println("<script>alert('编辑用户失败!');window.location.href='userServlet?action=userList';</script>");
}
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}
DBUtils.java
获取数据库连接对象和释放数据库资源的方法。
package utils;
import java.sql.*;
public class DBUtils {
/**
* 获取数据库连接对象
* @return 返回数据库连接对象
*/
public static Connection getConnection(){
Connection connection=null;
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取连接对象
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/servletdemo","root","admin");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return connection;
}
/**
* 释放数据库连接资源
* @param connection 数据库连接对象
* @param statement 数据库执行对象
* @param resultSet 数据库结果集对象
*/
public static void release(Connection connection, Statement statement, ResultSet resultSet){
// 关闭resultSet
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 关闭statement
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 关闭connection
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
web
index.jsp
该页面是主页面,主要是通过超链接使用userServlet从数据库读取数据并显示在user_list.jsp中。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>主页</title>
</head>
<body>
<a href="userServlet?action=userList">显示所有用户</a>
</body>
</html>
user_list.jsp
该JSP页面通过一个表格来显示所有用户情况。
<%@ page import="bean.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="UTF-8"/>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="js/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="js/bootstrap.min.js"></script>
<title>显示所有用户</title>
</head>
<body>
<%
List<User> userList = (ArrayList<User>) session.getAttribute("userList");
%>
<a class="btn btn-info" href="add_user.jsp">添加用户</a>
<table class="table table-hover table-bordered">
<tr>
<td>序号</td>
<td>用户名</td>
<td>密码</td>
<td>操作</td>
</tr>
<%
for (User user : userList) {
%>
<tr>
<td>
<%=user.getId()%>
</td>
<td>
<%=user.getUsername()%>
</td>
<td>
<%=user.getPassword()%>
</td>
<td>
<a class="btn btn-info" href="userServlet?action=del&id=<%=user.getId()%>">删除</a>
<a class="btn btn-danger" href="userServlet?action=edit&id=<%=user.getId()%>">编辑</a>
</td>
</tr>
<%
}
%>
</table>
</body>
</html>
add_user.jsp
该JSP页面是用来添加用户
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="UTF-8"/>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script type="text/javascript" src="js/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<title>添加用户</title>
</head>
<body>
<div class="container-fluid">
<div class="form-horizontal">
<form action="userServlet?action=add" method="post">
<div class="form-group">
<label class="text-muted col-lg-1">用户名:</label>
<div class="col-lg-4">
<input class="form-control" type="text" name="username">
</div>
</div>
<div class="form-group">
<label class="text-muted col-lg-1">密码:</label>
<div class="col-lg-4">
<input class="form-control" type="text" name="password">
</div>
</div>
<div class="form-group">
<input class="btn btn-success" type="submit" value="添加">
<input class="btn btn-warning" type="reset" value="重置">
</div>
</form>
</div>
</div>
</body>
</html>
edit_user.jsp
该JSP用来修改编辑用户相关信息的。
<%@ page import="bean.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="UTF-8"/>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="js/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="js/bootstrap.min.js"></script>
<title>编辑</title>
</head>
<body>
<%
User user = (User) session.getAttribute("user");
%>
<div class="container-fluid">
<div class="form-horizontal">
<form action="userServlet?action=update" method="post">
<input type="hidden" name="id" value="<%=user.getId()%>"><br>
<div class="form-group">
<label class="text-muted col-lg-1">用户名:</label>
<div class="col-lg-4">
<input class="form-control" type="text" name="username" value="<%=user.getUsername()%>">
</div>
</div>
<div class="form-group">
<label class="text-muted col-lg-1">密码:</label>
<div class="col-lg-4">
<input class="form-control" type="text" name="password" value="<%=user.getPassword()%>">
</div>
</div>
<div class="form-group">
<input class="btn btn-success" type="submit" value="编辑">
<input class="btn btn-warning" type="reset" value="重置">
</div>
</form>
</div>
</div>
</body>
</html>
web.xml
用来注册Servlet
<?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">
<!--用户Servlet-->
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
<!--欢迎页面-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
db.sql
数据库建表和测试SQL
# 创建数据库
create database servletdemo;
# 创建users表
create table users(
id int not null primary key auto_increment comment '编号',
username varchar(20) not null comment '用户名',
password varchar(50) not null comment '密码'
);
# 插入一些测试数据
insert into users(username,password) values ('张三','123456');
insert into users(username,password) values ('李四','123456');
insert into users(username,password) values ('王五','123456');
insert into users(username,password) values ('赵六','123456');
如果对完整源码感兴趣。
可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。
注意:在公众号后台回复【CSDN201910062004】可获取本节源码。