OA项目12:系统管理之用户管理

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明。谢谢。 

一 之前在第8节时已经将User实体及映射文件建立好了,所以设计实体已经完成了,下面来做功能了。

二 我们对照静态页面看用户管理页面分析发现,增删改查功能跟之前一样,多了一个初始化密码的请求。当然,这不是问题,下面开始做功能吧!

三 开发:

  1.写action及struts2映射,具体如下:

    1)UserAction.java:    

    

  1 package cn.clear.oa.view.action;
  2
  3 import java.util.HashSet;
  4 import java.util.List;
  5
  6 import org.springframework.context.annotation.Scope;
  7 import org.springframework.stereotype.Controller;
  8
  9 import com.opensymphony.xwork2.ActionContext;
 10
 11 import cn.clear.oa.base.BaseAction;
 12 import cn.clear.oa.domain.Department;
 13 import cn.clear.oa.domain.Role;
 14 import cn.clear.oa.domain.User;
 15 import cn.clear.oa.util.DepartmentUtil;
 16
 17 @Controller
 18 @Scope("prototype")
 19 public class UserAction extends BaseAction<User> {
 20
 21     /**
 22      *
 23      */
 24     private static final long serialVersionUID = 1L;
 25
 26     private Long departmentId;
 27     private Long[] roleIds;
 28
 29     public String list() throws Exception {
 30         // 查询所有的用户
 31         List<User> userList = userService.findAll();
 32         // 将用户放集合
 33         ActionContext.getContext().put("userList", userList);
 34         return "list";
 35     }
 36
 37     public String delete() throws Exception {
 38         userService.delete(model.getId());
 39         return "toList";
 40     }
 41
 42     public String addUI() throws Exception {
 43         // 准备部门树状列表
 44         List<Department> topList = departmentService.findTopList();
 45         List<Department> departmentList = DepartmentUtil
 46                 .getAllDepartments(topList);
 47
 48         ActionContext.getContext().put("departmentList", departmentList);
 49         // 准备roleList
 50         List<Role> roleList = roleService.findAll();
 51         ActionContext.getContext().put("roleList", roleList);
 52         return "saveUI";
 53     }
 54
 55     public String add() throws Exception {
 56         // 设置部门
 57         model.setDepartment(departmentService.findById(departmentId));
 58         // 设置岗位
 59         model.setRoles(new HashSet<Role>(roleService.findByIds(roleIds)));
 60         // 设置密码
 61         model.setPassword("1234");
 62         userService.save(model);
 63         return "toList";
 64     }
 65
 66     public String editUI() throws Exception {
 67         // 准备部门树状列表
 68         List<Department> topList = departmentService.findTopList();
 69         List<Department> departmentList = DepartmentUtil
 70                 .getAllDepartments(topList);
 71
 72         ActionContext.getContext().put("departmentList", departmentList);
 73         // 准备roleList
 74         List<Role> roleList = roleService.findAll();
 75         ActionContext.getContext().put("roleList", roleList);
 76
 77         // 准备回显的数据
 78         User user = userService.findById(model.getId());
 79         // 放在栈顶
 80         ActionContext.getContext().getValueStack().push(user);
 81         //部门回显
 82         if(user.getDepartment()!=null){
 83             departmentId = user.getDepartment().getId();
 84         }
 85         //岗位回显
 86         if(user.getRoles()!=null){
 87             roleIds = new Long[user.getRoles().size()];
 88             int index = 0;
 89             for (Role role : user.getRoles()) {
 90                 roleIds[index++] = role.getId();
 91             }
 92         }
 93         return "saveUI";
 94     }
 95
 96     public String edit() throws Exception {
 97         User user = userService.findById(model.getId());
 98         user.setDescription(model.getDescription());
 99         user.setEmail(model.getEmail());
100         user.setGender(model.getGender());
101         user.setLoginName(model.getLoginName());
102         user.setName(model.getName());
103         user.setPhoneNumber(model.getPhoneNumber());
104
105         List<Role> roleList = roleService.findByIds(roleIds);
106         user.setRoles(new HashSet<Role>(roleList));
107         user.setDepartment(departmentService.findById(departmentId));
108         userService.update(user);
109         return "toList";
110     }
111
112     public String initPassword() throws Exception {
113         User user = userService.findById(model.getId());
114         user.setPassword("1234");
115         userService.update(user);
116         return "toList";
117     }
118
119     // ------
120     public Long getDepartmentId() {
121         return departmentId;
122     }
123
124     public void setDepartmentId(Long departmentId) {
125         this.departmentId = departmentId;
126     }
127
128     public Long[] getRoleIds() {
129         return roleIds;
130     }
131
132     public void setRoleIds(Long[] roleIds) {
133         this.roleIds = roleIds;
134     }
135
136 }

UserAction.java

    2)在struts.xml中添加映射:  

    

1 <!-- 用户管理 -->
2         <action name="user_*" class="userAction" method="{1}">
3             <result name="list">/WEB-INF/jsp/userAction/list.jsp</result>
4             <result name="toList" type="redirectAction">user_list</result>
5             <result name="saveUI">/WEB-INF/jsp/userAction/saveUI.jsp</result>
6
7         </action>

在struts.xml中添加action

  2.写Service及实现类:

    1)UserService.java   

    

1 package cn.clear.oa.service;
2
3 import cn.clear.oa.base.DaoSupport;
4 import cn.clear.oa.domain.User;
5
6 public interface UserService extends DaoSupport<User>{
7
8 }

UserService.java

    2)UserServiceImpl.java    

    

 1 package cn.clear.oa.service.impl;
 2
 3 import org.springframework.stereotype.Service;
 4
 5 import cn.clear.oa.base.DaoSupportImpl;
 6 import cn.clear.oa.domain.User;
 7 import cn.clear.oa.service.UserService;
 8
 9 @Service
10 public class UserServiceImpl extends DaoSupportImpl<User> implements UserService{
11
12 }

UserServiceImpl.java

    3)在BaseAction.java中声明userService,如下:

    @Resource

    protected UserService userService;

  3.写jsp页面:

    1)list.jsp:  

    

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5 <head>
 6     <title>用户列表</title>
 7     <%@ include file="/WEB-INF/jsp/public/commons.jspf" %>
 8 </head>
 9 <body>
10
11 <div id="Title_bar">
12     <div id="Title_bar_Head">
13         <div id="Title_Head"></div>
14         <div id="Title"><!--页面标题-->
15             <img border="0" width="13" height="13" src="${pageContext.request.contextPath}/style/images/title_arrow.gif"/> 用户管理
16         </div>
17         <div id="Title_End"></div>
18     </div>
19 </div>
20
21 <div id="MainArea">
22     <table cellspacing="0" cellpadding="0" class="TableStyle">
23
24         <!-- 表头-->
25         <thead>
26             <tr align=center valign=middle id=TableTitle>
27                 <td width="100">登录名</td>
28                 <td width="100">姓名</td>
29                 <td width="100">所属部门</td>
30                 <td width="200">岗位</td>
31                 <td>备注</td>
32                 <td>相关操作</td>
33             </tr>
34         </thead>
35
36         <!--显示数据列表-->
37         <tbody id="TableData" class="dataContainer" datakey="userList">
38         <s:iterator value="#userList">
39             <tr class="TableDetail1 template">
40                 <td>${loginName}&nbsp;</td>
41                 <td>${name}&nbsp;</td>
42                 <td>${department.name}&nbsp;</td>
43                 <td>
44                     <s:iterator value="#roles">
45                         ${name}
46                     </s:iterator>
47                     </td>
48                 <td>${description}&nbsp;</td>
49                 <td><s:a onClick="return confirm(‘确定删除该用户吗?‘)" action="user_delete?id=%{id}">删除</s:a>
50                     <s:a action="user_editUI?id=%{id}">修改</s:a>
51                     <s:a action="user_initPassword?id=%{id}" onClick="return confirm(‘您确定要初始化密码为1234吗?‘)">初始化密码</s:a>
52                 </td>
53             </tr>
54         </s:iterator>
55         </tbody>
56     </table>
57
58     <!-- 其他功能超链接 -->
59     <div id="TableTail">
60         <div id="TableTail_inside">
61             <s:a action="user_addUI"><img src="${pageContext.request.contextPath}/style/images/createNew.png" /></s:a>
62         </div>
63     </div>
64 </div>
65
66 </body>
67 </html>

list.jsp

    2)saveUI.jsp:

    

  1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2
  3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4
  5 <html>
  6 <head>
  7     <title>用户信息</title>
  8     <%@ include file="/WEB-INF/jsp/public/commons.jspf" %>
  9 </head>
 10 <body>
 11
 12 <!-- 标题显示 -->
 13 <div id="Title_bar">
 14     <div id="Title_bar_Head">
 15         <div id="Title_Head"></div>
 16         <div id="Title"><!--页面标题-->
 17             <img border="0" width="13" height="13" src="${pageContext.request.contextPath}/style/images/title_arrow.gif"/> 用户信息
 18         </div>
 19         <div id="Title_End"></div>
 20     </div>
 21 </div>
 22
 23 <!--显示表单内容-->
 24 <div id=MainArea>
 25     <s:form action="user_%{id == null ? ‘add‘:‘edit‘ }">
 26         <div class="ItemBlock_Title1"><!-- 信息说明 --><div class="ItemBlock_Title1">
 27             <img border="0" width="4" height="7" src="${pageContext.request.contextPath}/style/blue/images/item_point.gif" /> 用户信息 </div>
 28         </div>
 29         <!-- 表单内容显示 -->
 30         <s:hidden name="id"></s:hidden>
 31         <div class="ItemBlockBorder">
 32             <div class="ItemBlock">
 33                 <table cellpadding="0" cellspacing="0" class="mainForm">
 34                     <tr><td width="100">所属部门</td>
 35                         <td><s:select name="departmentId" list="#departmentList" cssClass="SelectStyle" listKey="id" listValue="name"
 36                         headerKey="" headerValue="==请选择部门=="></s:select>
 37                         </td>
 38                     </tr>
 39                     <tr><td>登录名</td>
 40                         <td><s:textfield name="loginName" cssClass="InputStyle"></s:textfield> *
 41                             (登录名要唯一)
 42                         </td>
 43                     </tr>
 44                     <tr><td>姓名</td>
 45                         <td><s:textfield name="name" cssClass="InputStyle"/> *</td>
 46                     </tr>
 47                     <tr><td>性别</td>
 48                         <td>
 49                             <s:radio name="gender" list="{‘男‘,‘女‘}">
 50                             </s:radio>
 51                         </td>
 52                     </tr>
 53                     <tr><td>联系电话</td>
 54                         <td><s:textfield name="phoneNumber" cssClass="InputStyle"/></td>
 55                     </tr>
 56                     <tr><td>E-mail</td>
 57                         <td><s:textfield name="email" cssClass="InputStyle"/></td>
 58                     </tr>
 59                     <tr><td>备注</td>
 60                         <td><s:textarea name="description" cssClass="TextareaStyle"></s:textarea></td>
 61                     </tr>
 62                 </table>
 63             </div>
 64         </div>
 65
 66         <div class="ItemBlock_Title1"><!-- 信息说明 --><div class="ItemBlock_Title1">
 67             <img border="0" width="4" height="7" src="${pageContext.request.contextPath}/style/blue/images/item_point.gif" /> 岗位设置 </div>
 68         </div>
 69
 70         <!-- 表单内容显示 -->
 71         <div class="ItemBlockBorder">
 72             <div class="ItemBlock">
 73                 <table cellpadding="0" cellspacing="0" class="mainForm">
 74                     <tr>
 75                         <td width="100">岗位</td>
 76                         <td><s:select name="roleIds" multiple="true" size="10"
 77                          list="#roleList" cssClass="SelectStyle" listKey="id" listValue="name"></s:select>
 78                             按住Ctrl键可以多选或取消选择
 79                         </td>
 80                     </tr>
 81                 </table>
 82             </div>
 83         </div>
 84
 85         <!-- 表单操作 -->
 86         <div id="InputDetailBar">
 87             <input type="image" src="${pageContext.request.contextPath}/style/images/save.png"/>
 88             <a href="javascript:history.go(-1);"><img src="${pageContext.request.contextPath}/style/images/goBack.png"/></a>
 89         </div>
 90     </s:form>
 91 </div>
 92
 93 <div class="Description">
 94     说明:<br />
 95     1,用户的登录名要唯一,在填写时要同时检测是否可用。<br />
 96     2,新建用户后,密码被初始化为"1234"。<br />
 97     3,密码在数据库中存储的是MD5摘要(不是存储明文密码)。<br />
 98     4,用户登录系统后可以使用“个人设置→修改密码”功能修改密码。<br />
 99     5,新建用户后,会自动指定默认的头像。用户可以使用“个人设置→个人信息”功能修改自已的头像<br />
100     6,修改用户信息时,登录名不可修改。
101 </div>
102
103 </body>
104 </html>

saveUI.jsp

    3)在测试时发现roles显示有问题,经检查在外面之前写代码时发现问题,问题是在DaoSupportImpl.java中findByIds()方法这句:

    return getSession().createQuery(//

    "FROM "+clazz.getSimpleName()+" WHERE id IN(:ids)")//

    .setParameter("ids", ids)//

    .list()的setParameter有误,因为是集合所以修改后为:

    return getSession().createQuery(//

    "FROM "+clazz.getSimpleName()+" WHERE id IN(:ids)")//

    .setParameterList("ids", ids)//

    .list()。

以上就是用户管理的基本实现,关于在saveUI页面下角的要求将在下节实现。

时间: 10-26

OA项目12:系统管理之用户管理的相关文章

OA项目5:系统管理之岗位管理

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频的文字版,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 设计实体和表 1.建立javabean,建立角色类Role.java,具体如下: 1 package cn.clear.oa.domain; 2 3 public class Role { 4 5 private Long id; 6 private String name; 7 private String description; 8 public Long

OA项目7:系统管理之部门管理

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频的文字版,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 根据需求,根据前台页面功能设计实体,创建javabean.Department.java,内容如下(先不处理上下级部门): 1 package cn.clear.oa.domain; 2 3 public class Department { 4 5 private Long id; 6 private String name; 7 private String

Linux系统管理之用户管理

Linux是个多用户多任务的分时操作系统,所有要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也能帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和用户口令.用户在登录时键入正确的用户名和口令后,才能进入系统和自己的主目录.实现用户账号的管理,要完成的工作主要有如下几个方面: 用户管理,包括用户的添加.删除.修改 用户组的管理,包括用户组的

20170320_系统管理_用户管理1_反射得到model实例

|-用户管理增删改查框架 |-代码结构优化 |-第一个改进:合并dao与service层. |-第二个改进:合并getModel,代码声明问题. ps: 通过反射获得泛型的真实类型 通过反射得到model的实例. 包裹代码块异常:Shift + Alt + z ===================================================================== 1.action 2.struts.xml 3.service 4.serviceImpl 5.d

【4】项目结构+基本的用户管理(注册、登录等)

项目地址: Blog 发现从0开始详细写的话,太累了,直接把原来做的工程的通用部分直接拿过来用了. 啊--,以后有想法时再写吧--现在权当记录使用了--

OA项目13:系统模块之用户管理密码加密等

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 上节遗留了一个错误,在用户管理list.jsp页面显示岗位时这句<s:iterator value="#roles">是无法将岗位显示的,必须将#去掉便OK了. 二 密码MD5加密: 引入包:commons-codec.jar 在userAction中涉及到密码的add()方法和initPassword()方法中将设置密码的代码改

JAVAEE——BOS物流项目12:角色、用户管理,使用ehcache缓存,系统菜单根据登录人展示

1 学习计划 1.角色管理 n 添加角色功能 n 角色分页查询 2.用户管理 n 添加用户功能 n 用户分页查询 3.修改Realm中授权方法(查询数据库) 4.使用ehcache缓存权限数据 n 添加ehcache依赖 n 配置缓存管理器 5.系统菜单根据登录人展示 n 调整页面ajax请求地址 n 服务端查询菜单数据 2 角色管理 2.1 添加角色功能 2.1.1 页面调整 首先先完善pages/admin/function_add.jsp添加权限的页面,把下拉框改为combotree 他的

12天OA项目

OA(Office Automation):办公自动化--辅助管理,提高办公效率的系统. OA的功能: 文字处理,申请审批,办公用品管理,公文管理,会议管理,资料管理,知识管理,电子邮件等... 根据用户实际需求确定实际项目的功能. BBS--论坛 CRM--客户关系管理系统 CMS--内容管理系统 1.软件开发的简单步骤: <1.需求分析 <2.分析设计 <3.编码实现 <4.测试验证(修改) <5.部署与后期维护 2.每个步骤具体要做什么,谁来做? 3.我们要做什么? 设

OA项目15:权限管理实体设计及映射

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 实体设计: 1.权限实体设计: 1)属性设计: 主键:id 关联属性:Set<Role> roles,Set<Privilege> privileges,Privilege parent,Set<Privilege> children 一般属性:name,url 特殊属性:暂无 2)涉及到3个实体:User(用户),Role(