基于Struts2 MVC的人事管理系统的二次开发

引言
这系统是一个基于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;
        }

    }
}

程序流程图

posted @ 2024-03-06 10:51  起不了一点  阅读(8)  评论(0编辑  收藏  举报