引言
这系统是一个基于Java Web开发和Struts2框架的简单用户管理系统。主要功能包括用户的登录、注册、查看用户列表、更新用户信息、以及删除用户等操作。系统使用了MySQL数据库存储用户信息,通过DAO模式实现了数据访问逻辑的分离。
通过Struts2框架,实现了前后端的交互,通过XML配置文件进行页面之间的跳转和操作的流程控制。
本系统通过MVC设计模式,清晰地划分了业务逻辑、数据处理和用户界面显示的职责。
原始功能
用户登录、注册、查看用户列表,增加用户信息,退出系统
系统缺陷
缺乏用户信息维护: 原系统只提供了用户的登录、注册、查看用户列表和增加用户信息功能,但没有提供更新用户信息和删除用户信息的功能。这限制了管理员对用户信息的灵活管理,无法应对用户信息变更或注销的需求。
扩展性不足: 原系统缺乏对新功能的扩展性,例如,没有提供更新用户信息和删除用户信息的接口。在二次开发中,可以通过设计更灵活的架构和接口,使系统更易于扩展和维护。
二次开发后的功能
用户登录、注册、查看用户列表,增加用户信息,更新用户信息、删除用户信息,退出系统
类设计
LoginAction:
处理用户登录和注册的Action类。
login() 方法用于处理用户登录,验证用户名和密码是否匹配,如果匹配则将用户名存储在Session中。
register() 方法用于处理用户注册,创建用户对象并调用服务层添加用户。
UserAction:
处理用户信息的Action类,包含用户列表展示、更新用户信息和删除用户等功能。
userList() 方法获取用户列表并存储到userlist.jsp页面。
updateUser() 方法用于更新用户信息。
deleteById() 方法用于删除用户信息。
User:
用户实体类,包含用户的各项信息。
UserDaoImpl:
数据访问层实现类,实现了对用户数据的增删改查操作。
UserDao:
数据访问层接口,定义了对用户数据进行操作的方法。
UserServiceImpl:
服务层实现类,通过调用Dao层实现对用户数据的操作。
UserService:
服务层接口,定义了对用户数据进行操作的方法。
DBUtil:
数据库工具类,提供获取数据库连接和关闭连接的方法。
核心代码展示
点击查看代码
package com.hnpi.dao;
import java.util.List;
import com.hnpi.bean.User;
public interface UserDao {
/**
* 查询用户列表
*
* @return 返回用户列表
*/
public List<User> selectAllUser();
/**
* 添加用户
*
* @param user 要添加的用户对象
* @return 添加成功返回true,否则返回false
*/
boolean addUser(User user);
/**
* 根据id查询用户信息
*
* @param id 用户id
* @return 返回对应id的用户对象,如果不存在则返回null
*/
public User selectUserById(int id);
/**
* 更新用户信息
*
* @param user 包含更新信息的用户对象
* @return 更新成功返回true,否则返回false
*/
public boolean updateUser(User user);
/**
* 删除用户信息
*
* @param id 要删除的用户id
* @return 删除成功返回true,否则返回false
*/
boolean delUser(int id);
}
package com.hnpi.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.hnpi.bean.User;
import com.hnpi.dao.UserDao;
import com.hnpi.util.DBUtil;
public class UserDaoImpl implements UserDao {
/**
* 查询所有用户列表
*/
public List<User> selectAllUser() {
Connection conn = DBUtil.getConn();
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select * from user";
List<User> users = new ArrayList<User>();
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
User user = new User();
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
user.setRealname(rs.getString(4));
user.setSex(rs.getString(5));
user.setBirthday(rs.getString(6));
user.setNation(rs.getString(7));
user.setEducation(rs.getString(8));
user.setPost(rs.getString(9));
user.setPhone(rs.getString(10));
user.setAddress(rs.getString(11));
user.setEmail(rs.getString(12));
users.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.closeConn(conn, ps, null);
}
return users;
}
/**
* 添加用户
*/
public boolean addUser(User user) {
Connection conn = DBUtil.getConn();
PreparedStatement ps = null;
int result = 0;
String sql = "insert into user (username,password,realname,sex,birthday,nation,education,post,phone,address,email) values (?,?,?,?,?,?,?,?,?,?,?)";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.setString(3, user.getRealname());
ps.setString(4, user.getSex());
ps.setString(5, user.getBirthday());
ps.setString(6, user.getNation());
ps.setString(7, user.getEducation());
ps.setString(8, user.getPost());
ps.setString(9, user.getPhone());
ps.setString(10, user.getAddress());
ps.setString(11, user.getEmail());
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.closeConn(conn, ps, null);
}
if (result > 0) {
return true;
} else {
return false;
}
}
/**
* 根据ID查询用户信息
*/
public User selectUserById(int id) {
Connection conn = DBUtil.getConn();
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select * from user where id = ?";
User user = new User();
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
rs = ps.executeQuery();
if (rs.next()) {
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
user.setRealname(rs.getString(4));
user.setSex(rs.getString(5));
user.setBirthday(rs.getString(6));
user.setNation(rs.getString(7));
user.setEducation(rs.getString(8));
user.setPost(rs.getString(9));
user.setPhone(rs.getString(10));
user.setAddress(rs.getString(11));
user.setEmail(rs.getString(12));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.closeConn(conn, ps, null);
}
return user;
}
/**
* 更新用户信息
*/
public boolean updateUser(User user) {
Connection conn = DBUtil.getConn();
PreparedStatement ps = null;
int result = 0;
String sql = "update user set username = ?,password = ?,realname = ?,sex = ?,birthday = ?,nation = ?,education = ?,post = ?,phone = ?,address = ?,email = ? where id =?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.setString(3, user.getRealname());
ps.setString(4, user.getSex());
ps.setString(5, user.getBirthday());
ps.setString(6, user.getNation());
ps.setString(7, user.getEducation());
ps.setString(8, user.getPost());
ps.setString(9, user.getPhone());
ps.setString(10, user.getAddress());
ps.setString(11, user.getEmail());
ps.setInt(12, user.getId());
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.closeConn(conn, ps, null);
}
if (result > 0) {
return true;
} else {
return false;
}
}
/**
* 删除用户信息
*/
public boolean delUser(int id) {
Connection conn = DBUtil.getConn();
PreparedStatement ps = null;
int result = 0;
String sql = "delete from user where id = ?";
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.closeConn(conn, ps, null);
}
if(result > 0){
return true;
}else{
return false;
}
}
}
程序流程图