基于SSH三大框架的员工管理系统——总结

来源:互联网 发布:淘宝最高级别的店铺 编辑:程序博客网 时间:2024/05/10 03:30

基于SSH三大框架的员工管理系统

摘要

本系统为本人学习SSH三大框架时所做的整合实例,系统角色包括普通用户和管理员两种,首页有管理员登录入口链接。系统功能主要包括管理员对用户的基本增、删、改、查和分页显示用户信息等。

系统环境

  • 本系统使用eclipse+mysql+jdk1.8+tomcat8进行开发
  • 框架使用struts2+hibernate3+spring3

页面展示

  • 首页一开始没考虑屏幕分辨率和比例问题以及浏览器的兼容问题,后该用bootstrap简单模板,达到兼容旧版IE浏览器效果,并且为响应式布局,屏幕可任意缩放。
    首页

  • 注册页面采用angularJS前端框架实现客户端表单验证

这里写图片描述


  • 日期使用jedate.js控件

这里写图片描述


  • 注册成功提示(后台为新注册用户分配三个随机邀请码用于邀请其他用户注册本系统)
    这里写图片描述

  • 个人主页使用easyui框架
    这里写图片描述

  • 管理员首页(可分页显示用户)
    这里写图片描述

  • 添加用户
    这里写图片描述

核心代码解析

1、随机邀请码生成

使用UUID并将其切片,取前八位作为验证码(本算法尚不成熟,在大量使用后可能出现重复)

public static String[] codeMaker() {        String[] code = new String[3];        for (int i=0; i<3; i++) {            code[i] = UUID.randomUUID().toString().substring(0,8).toUpperCase();        }        return code;    }

2、登录验证

  • action层
public String login() {        User existUser = userService.login(user);        if (existUser == null) {            this.addActionError("用户名或密码错误");            return INPUT;        } else {            ActionContext.getContext().getSession().put("currUser", existUser);            return SUCCESS;        }    }
  • service层
    拿到从表单提交并封装到实体的user对象,将其作为参数传递给数据库,调用dao层函数,核对相应用户名和密码是否存在并一致
@Override    /**     * 业务层登陆的方法     */    public User login(User user) {        User existUser = userDao.findByUsernameAndPassword(user);        return existUser;    }
  • dao层
    使用hibernate模板方法查询相应对象,若查到则返回对象,用于action层作处理
@SuppressWarnings("unchecked")    @Override    /**     * dao中根据用户名和密码查询用户的方法     */    public User findByUsernameAndPassword(User user) {        String hql = "from User where username = ? and password = ?";        List<User> list = this.getHibernateTemplate().find(hql, user.getUsername(), user.getPassword());        if (list.size() > 0) {            return list.get(0);        }        return null;    }
  • view层
<body>    <div id="cc" class="easyui-layout" fit=true style="width:100%;height:100%;">        <div region="west" split="true" title="菜单" style="width:200px;">            <div id="aa" class="easyui-accordion" fit=true>                <div title="功能导航" selected="true" style="overflow:auto;padding:10px;">                    <div class="tab" style="border: 1px;">                        <a href="user_info">个人信息</a>                    </div>                    <div class="tab" style="border: 1px;">                        <a href="user_invite">已邀请人的信息</a>                    </div>                    <div class="tab" style="border: 1px;">                        <a href="user_code">邀请码信息</a>                    </div>                </div>            </div>        </div>        <div region="center" title="主界面" style="padding:5px;">            <div id="welcome" class="tab">                <span>欢迎你,${currUser.name }</span>                <span>                    <a href="${ctx }/index.jsp">退出系统</a>                </span>            </div>            <div id="tt" class="easyui-tabs" fit=true style="width:500px;height:250px;"></div>        </div>    </div></body>

3、分页显示

  • action层
public String findAll() {        PageBean<User> pageBean = adminService.findAll(currPage);        List<User> list = pageBean.getList();        ActionContext.getContext().getValueStack().push(pageBean);        ActionContext.getContext().getSession().put("users", list);        return "findAll";    }
  • 实体层
    private int currPage;       //当前页    private int pageSize;       //每页显示记录数    private int totalCount;     //总记录    private int totalPage;      //总页数    private List<T> list;       //封装实体
  • 业务层
// 分页查询所有用户    @Override    public PageBean<User> findAll(int currPage) {        PageBean<User> pageBean = new PageBean<User>();        // 封装pageBean        pageBean.setCurrPage(currPage);     // 当前页数        int pageSize = 10;        pageBean.setPageSize(pageSize);     // 每页记录数        int totalCount = adminDao.findCount();        pageBean.setTotalCount(totalCount);     // 总记录数        double tc = totalCount;             // 总页数        Double num = Math.ceil(tc / pageSize);        pageBean.setTotalPage(num.intValue());        int begin = (currPage - 1) * pageSize;  // 每页开始的记录索引        List<User> list = adminDao.findByPage(begin,pageSize);  // list用来封装用户集合        pageBean.setList(list);        return pageBean;    }
  • dao层
    @SuppressWarnings("unchecked")    @Override    public List<User> findAll() {        String hql = "select * from User where uid != 1";        List<User> list = this.getHibernateTemplate().find(hql);        if (list.size() > 0) {            return list;        }        return null;    }    @SuppressWarnings("unchecked")    @Override    public int findCount() {        String hql = "select count(*) from User";        List<Long> list = this.getHibernateTemplate().find(hql);        if(list.size() > 0) {            return list.get(0).intValue();        }        return 0;    }    /**     * 分页函数     */    @SuppressWarnings("unchecked")    @Override    public List<User> findByPage(int begin, int pageSize) {        DetachedCriteria criteria = DetachedCriteria.forClass(User.class);        List<User> list = this.getHibernateTemplate().findByCriteria(criteria, begin, pageSize);        return list;    }
  • view层
<div id="page" align="left" class="font">                <table border="0" cellspacing="0" cellpadding="0" width="500px">                    <tr>                        <td align="left">                            <span><s:property value="currPage" />/<s:property value="totalPage" /></span>&nbsp;&nbsp;                             <span>                                总记录数:<s:property value="totalCount" />&nbsp;&nbsp;                                每页显示:<s:property value="pageSize" />                             </span>&nbsp;&nbsp;                             <span>                                 <s:if test="currPage != 1">                                    <a href="${ctx }/admin_findAll?currPage=1">[首页]</a>&nbsp;&nbsp;                                    <a href="${ctx }/admin_findAll?currPage=<s:property value="currPage-1"/>">[上一页]</a>&nbsp;&nbsp;                                 </s:if>                                 <s:if test="currPage != totalPage">                                    <a href="${ctx }/admin_findAll?currPage=<s:property value="currPage+1"/>">[下一页]</a>&nbsp;&nbsp;                                    <a href="${ctx }/admin_findAll?currPage=<s:property value="totalPage"/>">[尾页]</a>&nbsp;&nbsp;                                 </s:if>                            </span>                        </td>                    </tr>                </table>            </div>
0 0
原创粉丝点击