系统管理模块_用户管理1_实现用户有关的功能_测试功能解决事务的问题对密码进行MD5摘要
Posted 未来_我来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统管理模块_用户管理1_实现用户有关的功能_测试功能解决事务的问题对密码进行MD5摘要相关的知识,希望对你有一定的参考价值。
系统管理模块__用户管理1__实现用户有关的功能
了解用户管理要做什么(增删改查初始化密码)
设计实体
分析功能有几个对应几个请求
增删改查有6个请求,初始化密码一个
实现增删改查一组功能的步骤流程
一、做Action相关的准备:
Action、JSP、配置
二、做Service相关的准备:
接口、实现类、配置
三、填空:
Action方法、Service方法、JSP页面
实现一组功能的步骤(一)
以User为例:
一、做Action相关的准备
1,创建 MyAction extends BaseAction.
2,定义出Action中的方法,要写出方法名、作用、返回值。
有模板
public class UserAction extends BaseAction<User>{ /** 列表 */ public String list() throws Exception { return "list"; } /** 删除 */ public String delete() throws Exception { return "toList"; } /** 添加页面 */ public String addUI() throws Exception { return "saveUI"; } /** 添加 */ public String add() throws Exception { return "toList"; } /** 修改页面 */ public String editUI() throws Exception { return "saveUI"; } /** 修改 */ public String edit() throws Exception { return "toList"; } /** 初始化密码12234 */ public String initPassword() throws Exception { return "toList"; } }
3,创建出所用到的JSP页面(目前还没有具体内容)。
4,配置Action:
1,在MyAction上写注解 @Controller与@Scope("prototype").
2,在strtus.xml中配置这个Action与所用到的result.
<!-- 用户管理 --> <action name="user_*" class="userAction" method="{1}"> <result name="list">/WEB-INF/jsp/userAction/list.jsp</result> <result name="saveUI">/WEB-INF/jsp/userAction/saveUI.jsp</result> <result name="toList" type="redirectAction">user_list?parentId=${parentId}</result> </action>
做完第一步就可以发布并访问了,但什么功能都没做。
实现一组功能的步骤(二)
二、做Service相关的准备
1,创建接口MyService extends BaseDao.
2,创建实现类MyServiceImpl extends BaseDaoImpl.
3,配置:在MyServiceImpl上写注解:
@Service 与 @Transactional
4,声明:在BaseAction中声明:
@Resource protected MyService myService;
实现一组功能的步骤(三)
三、填空:
1,Action方法。
UserAction.java
@Controller @Scope("prototype") public class UserAction extends BaseAction<User>{ private Long departmentId; private Long[] roleIds; /** 列表 */ public String list() throws Exception { List<User> userList = userService.findAll(); ActionContext.getContext().put("userList", userList); return "list"; } /** 删除 */ public String delete() throws Exception { userService.delete(model.getId()); return "toList"; } /** 添加页面 */ public String addUI() throws Exception { //准备数据(树状部门列表) List<Department> topList = departmentService.findTopList(); List<Department> departmentList = DepartmentUtils.getAllDepartments(topList); ActionContext.getContext().put("departmentList", departmentList);//一般放在值栈中的map,获取用#号获取方便 //准备数据,roleList岗位列表 List<Role> roleList = roleService.findAll(); ActionContext.getContext().put("roleList", roleList);//用ognl里的#号来获取map的东西 return "saveUI"; } /** 添加 */ public String add() throws Exception { // 封装到对象中(当model是实体类型时,也可以使用model,但要设置未封装的属性) // >>设置所属部门 model.setDepartment(departmentService.getById(departmentId)); // >>设置关联的岗位 List<Role> roleList = roleService.getByIds(roleIds); model.setRoles(new HashSet<Role>(roleList)); // >>设置默认密码为1234 model.setPassword("1234"); //保存到数据库中 userService.save(model); return "toList"; } /** 修改页面 */ public String editUI() throws Exception { //准备数据(树状部门列表) List<Department> topList = departmentService.findTopList(); List<Department> departmentList = DepartmentUtils.getAllDepartments(topList); ActionContext.getContext().put("departmentList", departmentList);//一般放在值栈中的map,获取用#号获取方便 //准备数据,roleList岗位列表 List<Role> roleList = roleService.findAll(); ActionContext.getContext().put("roleList", roleList);//用ognl里的#号来获取map的东西 //准备回显的数据 User user =userService.getById(model.getId()); ActionContext.getContext().getValueStack().push(user);//放在栈顶,因为是从栈顶开始取数据及回显 if(user.getDepartment() != null) { departmentId = user.getDepartment().getId(); } if(user.getRoles() != null ) { roleIds = new Long[user.getRoles().size()]; int index = 0; for(Role role : user.getRoles()) { roleIds[index++] = role.getId(); } } return "saveUI"; } /** 修改 */ public String edit() throws Exception { //1.从数据库中获取原对象 User user = userService.getById(model.getId()); //2.设置要修改的属性 user.setLoginName(model.getLoginName()); user.setName(model.getName()); user.setGender(model.getGender()); user.setPhoneNumber(model.getPhoneNumber()); user.setEmail(model.getEmail()); user.setDescription(model.getDescription()); // >>设置所属部门 user.setDepartment(departmentService.getById(departmentId)); // >>设置关联的岗位 List<Role> roleList = roleService.getByIds(roleIds); user.setRoles(new HashSet<Role>(roleList)); //3.更新到数据库 userService.update(user); return "toList"; } /** 初始化密码12234 */ public String initPassword() throws Exception { //1.从数据库中获取原对象 User user = userService.getById(model.getId()); //2.设置要修改的属性 user.setPassword("1234"); //3.更新到数据库 userService.update(user); return "toList"; } public void setDepartmentId(Long departmentId) { this.departmentId = departmentId; } public Long getDepartmentId() { return departmentId; } public Long[] getRoleIds() { return roleIds; } public void setRoleIds(Long[] roleIds) { this.roleIds = roleIds; } }
DaoSupportImpl.java
2,新增的Service方法。
3,JSP页面的内容:
a,拷贝静态页面中的源代码到JSP中。
b,包含进来公共的资源:
<%@ include file=“../public/commons.jspf" %>
c,把 ../ 替换为 ${pageContext.request.contextPath}/
d,修改页面内容(使用自定义标签)
list.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>用户列表</title> <%@ include file="/WEB-INF/jsp/public/commons.jspf" %> </head> <body> <div id="Title_bar"> <div id="Title_bar_Head"> <div id="Title_Head"></div> <div id="Title"><!--页面标题--> <img border="0" width="13" height="13" src="${pageContext.request.contextPath}/style/images/title_arrow.gif"/> 用户管理 </div> <div id="Title_End"></div> </div> </div> <div id="MainArea"> <table cellspacing="0" cellpadding="0" class="TableStyle"> <!-- 表头--> <thead> <tr align=center valign=middle id=TableTitle> <td width="100">登录名</td> <td width="100">姓名</td> <td width="100">所属部门</td> <td width="200">岗位</td> <td>备注</td> <td>相关操作</td> </tr> </thead> <!--显示数据列表--> <tbody id="TableData" class="dataContainer" datakey="userList"> <s:iterator value="#userList"> <tr class="TableDetail1 template"> <td>${loginName} </td> <td>${name} </td> <td>${department.name} </td> <td> <s:iterator value="roles"> ${name} </s:iterator> </td> <td>${description} </td> <td> <s:a action="user_delete?id=%{id}" onClick="return delConfirm()">删除</s:a> <s:a action="user_editUI?id=%{id}" >修改</s:a> <s:a action="user_initPassword?id=%{id}" onClick="return window.confirm(\'您确定要初始化密码为1234吗?\')">初始化密码</s:a> </td> </tr> </s:iterator> </tbody> </table> <!-- 其他功能超链接 --> <div id="TableTail"> <div id="TableTail_inside"> <s:a action="user_addUI"><img src="${pageContext.request.contextPath}/style/images/createNew.png" /></s:a> </div> </div> </div> </body> </html>
saveUI.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>用户信息</title> <%@ include file="/WEB-INF/jsp/public/commons.jspf" %> </head> <body> <!-- 标题显示 --> <div id="Title_bar"> <div id="Title_bar_Head"> <div id="Title_Head"></div> <div id="Title"><!--页面标题--> <img border="0" width="13" height="13" src="${pageContext.request.contextPath}/style/images/title_arrow.gif"/> 用户信息 </div> <div id="Title_End"></div> </div> </div> <!--显示表单内容--> <div id=MainArea> <s:form action="user_%{id == null ? \'add\' : \'edit\'}"> <s:hidden name="id"></s:hidden> <div class="ItemBlock_Title1"><!-- 信息说明 -1-><div class="ItemBlock_Title1"> <img border="0" width="4" height="7" src="${pageContext.request.contextPath}/style/blue/images/item_point.gif" /> 用户信息 </div> </div> <!-- 表单内容显示 --> <div class="ItemBlockBorder"> <div class="ItemBlock"> <table cellpadding="0" cellspacing="0" class="mainForm"> <tr><td width="100">所属部门</td> <td> <s:select name="departmentId" class="SelectStyle" list="#departmentList" listKey="id" listValue="name" headerKey="" headerValue="==请选择部门==" /> </td> </tr> <tr><td>登录名</td> <td><s:textfield name="loginName" cssClass="InputStyle"/> * (登录名要唯一) </td> </tr> <tr><td>姓名</td> <td><s:textfield name="name" cssClass="InputStyle"/> *</td> </tr> <tr><td>性别</td> <td> <%-- <s:radio name="gender" list="%{#{\'男\':\'男\',\'女\':\'女\'}}"></s:radio> <s:radio name="gender" list="#{\'男\':\'男\',\'女\':\'女\'}"></系统管理模块_岗位管理_实现CRUD功能的具体步骤并设计Role实体