首页 > 其他分享 >基于Struts2 MVC的人事管理系统的二次开发

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

时间:2024-03-06 10:55:39浏览次数:27  
标签:ps getString rs setString 用户 Struts2 MVC user 二次开发

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

    }
}

程序流程图

标签:ps,getString,rs,setString,用户,Struts2,MVC,user,二次开发
From: https://www.cnblogs.com/LIAOzj/p/18055848

相关文章

  • 深入解析ASP.NET Core MVC的模块化设计[下篇]
    ASP.NETCoreMVC的“模块化”设计使我们可以构成应用的基本单元Controller定义在任意的模块(程序集)中,并在运行时动态加载和卸载。《设计篇》介绍了这种为“飞行中的飞机加油”的方案的实现原理?本篇我们将演示将介绍“分散定义Controller”的N种实现方案。源代码从这里下载。一、标......
  • 自习室管理系统二次开发
    引言自习室是大学中非常重要的地方,自习室学习氛围比较浓,安静得只剩下奋笔疾书和键盘敲击的声音,更加适合需要备考和考研的学生。当学生们在某一时间暂时没课时,也可以到自习室进行短暂的学习。自习室作为面对全体师生都可以活动的场所,完善的自习室管理系统和相应的规章制度尤为重要......
  • 基于c++的排雷小游戏二次开发
    源代码地址https://blog.csdn.net/weixin_45906253/article/details/121237647?spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-9-121237647-blog-129464051.235^v43^pc_blog_bottom_relevance_base7&......
  • InnoDB存储引擎对MVCC的实现
    一 多版本并发控制(Multi-VersionConcurrencyControl)1、读操作(SELECT):当一个事务执行读操作时,它会使用快照读取。快照读取是基于事务开始时数据库中的状态创建的,因此事务不会读取其他事务尚未提交的修改。具体工作情况如下:对于读取操作,事务会查找符合条件的数据行,并选择符......
  • 基于清晰度优先的安卓图片压缩工具的二次开发小记。
    原程序:https://github.com/lexluthors/CompressTools-Android工具特性:这是和微信压缩效果类似的压缩方式,采用底层压缩。尽量无损压缩图片,保持清晰度最优。可以对比原生方法bitmap.compress(CompressFormat.JPEG,quality,fileOutputStream);占用内存少,支持压缩生成原图分......
  • C++ 职工信息管理系统项目的二次开发 2252423 ywx
    来源:同学大二下的期末大作业:网上购书系统项目。运行环境:VisualStudio2022①项目结构:②运行结果截图:主菜单界面:功能选择界面:工资总额输出界面:平均工资输出界面:显示输出界面:增加正式员工界面:增加临时员工界面:修改数据界面:③主要问题:查询功能未完善,有时会出现......
  • 基于c/c++的公司职工管理系统软件的二次开发
    引言:经过在网络上的广泛搜索和比较,我了解了一款基于C/C++的公司职工管理系统软件,这款软件在基本功能方面表现相当完善,能够满足日常的使用需求。然而,在实际使用过程中,我也发现它存在一些问题和不足,所以我决定对该软件进行二次开发。原始代码:点击查看代码**main.cpp**#include......
  • springMVC执行流程--
    springMVC执行流程1.springMVC执行流程Springmvc的执行流程是这个框架最核心的内容视图阶段(老旧JSP等)前后端分离阶段(接口开发,异步)2.视图阶段(jsp)重要的组件:前端控制器、处理器映射器、处理器适配器、视图解析器3.前后端分离阶段(接口开发,异步)4.问题总结......
  • 基于JAVA的2048小游戏的二次开发
    引言《2048Numberpuzzlegame》是一款数字益智游戏,而《2048》的初始数字则是由2+2组成的基数4。在操作方面的不同则表现为一步一格的移动,变成更为爽快的一次到底。相同数字的方框在靠拢、相撞时会相加。系统给予的数字方块不是2就是4,玩家要想办法在这小小的16格范围中凑出「2048」......
  • 基于JAVA的康威生命游戏二次开发
    引言:       康威生命游戏(Conway'sGameofLife)是一种基于细胞自动机的零玩家游戏,由数学家约翰·康威(JohnConway)于1970年创建。这个游戏并不是传统意义上的游戏,而是一种模拟生命演变的规则系统。康威生命游戏的“宇宙”是一个由无限的二维网格组成的平面,每个格子被称为......