OA项目6:项目优化

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

上一节将系统管理的岗位管理的代码写完了,但仍有一些代码是可以简化的。那么下面就来简化一下。

一 简化:RoleAction.java,使用Struts2提供的ModelDriven来简化model的代码,就不用写属性写set与get方法了。简化后内容如下:  

   
 1 package cn.clear.oa.view.action;
 2 
 3 import java.util.List;
 4 
 5 import javax.annotation.Resource;
 6 
 7 import org.springframework.context.annotation.Scope;
 8 import org.springframework.stereotype.Controller;
 9 
10 import cn.clear.oa.domain.Role;
11 import cn.clear.oa.service.RoleService;
12 
13 import com.opensymphony.xwork2.ActionContext;
14 import com.opensymphony.xwork2.ActionSupport;
15 import com.opensymphony.xwork2.ModelDriven;
16 
17 @Controller
18 @Scope("prototype")
19 public class RoleAction extends ActionSupport implements ModelDriven<Role>{
20     
21     /**
22      * 
23      */
24     private static final long serialVersionUID = 1L;
25 
26 
27     @Resource
28     private RoleService roleService;
29     
30     
31     private Role role = new Role(); 
32     
33     public Role getModel() {
34 
35         return role;
36     }
37     
38     /**显示列表*/
39     public String list() throws Exception {
40         List<Role> roleList = roleService.findAll();
41         ActionContext.getContext().put("roleList", roleList);
42         return "list";
43     }
44     /**添加页面*/
45     public String addUI() throws Exception {
46         
47         return "addUI";
48     }
49     /**添加*/
50     public String add() throws Exception {
51         //封装数据到对象
52         //Role role = new Role();
53         //role.setName(name);
54         //role.setDescription(description);
55         //将对象保存到数据库
56         roleService.save(role);
57         return "toList";
58     }
59     /**修改页面*/
60     public String editUI() throws Exception {
61         //准备回显数据
62         Role roles = roleService.findById(role.getId());
63         //将对象的值放在栈顶
64         ActionContext.getContext().getValueStack().push(roles);
65         return "editUI";
66     }
67     /**修改*/
68     public String edit() throws Exception {
69         //拿到准备好修改的对象
70         Role roles = roleService.findById(role.getId());
71         //设置要修改的属性
72         roles.setName(role.getName());
73         roles.setDescription(role.getDescription());
74         //将对象持久化到数据库
75         roleService.update(roles);
76         return "toList";
77     }
78     /**删除*/
79     public String delete() throws Exception {
80         roleService.delete(role.getId());
81         return "toList";
82     }
83     
84 }
RoleAction.java

二 简化list.jsp的代码(属性可以用EL表达式),简化后的代码内容如下:

   
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ taglib prefix="s" uri="/struts-tags"%> 
 3 
 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 5 <html>
 6   <head>
 7    
 8     <title>岗位列表</title>
 9   </head>
10   
11   <body>
12     <s:iterator value="#roleList">
13         ${id},
14         ${name},
15         ${description},
16         <s:a action="role_editUI?id=%{id}">修改</s:a>,
17         <s:a action="role_delete?id=%{id}" onclick="return confirm('确定删除吗?')">删除</s:a>
18         <br>
19     </s:iterator>
20     <s:a action="role_addUI">新建</s:a>
21   </body>
22 </html>
list.jsp

三 前台页面修改。我们已经提供了一套前台的样式,所以直接套用,增强可视效果,具体结果显示如下图:

OA项目6:项目优化_第1张图片

四 经测试,Struts2版本高于2.1如果照我们的Action写法,后台会报错,因为外面的action里已经不写get set方法,

导致找不到相关方法。这时根据错误提示将开发者模式设为false,问题解决。

五 addUI.jsp页面与editUI.jsp页面,合并成为saveUI.jsp,这样可以减少一个页面的代码量。合并后的saveUI.jsp页面内容如下(已经导入前台脚本样式等页面):

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ taglib prefix="s" uri="/struts-tags"%>
 3 
 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 5 <html>
 6 <head>
 7     <title>保存岗位</title>
 8     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 9     <script language="javascript" src="${pageContext.request.contextPath}/script/jquery.js"></script>
10     <script language="javascript" src="${pageContext.request.contextPath}/script/pageCommon.js" charset="utf-8"></script>
11     <script language="javascript" src="${pageContext.request.contextPath}/script/PageUtils.js" charset="utf-8"></script>
12     <link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/style/blue/pageCommon.css" />
13     <script type="text/javascript"> 
14     </script>
15 </head>
16 <body> 
17 
18 <!-- 标题显示 -->
19 <div id="Title_bar">
20     <div id="Title_bar_Head">
21         <div id="Title_Head"></div>
22         <div id="Title"><!--页面标题-->
23             <img border="0" width="13" height="13" src="${pageContext.request.contextPath}/style/images/title_arrow.gif"/> 岗位设置
24         </div>
25         <div id="Title_End"></div>
26     </div>
27 </div>
28 
29 <!--显示表单内容-->
30 <div id="MainArea">
31     <s:form action="role_%{id == null ? 'add' : 'edit'}">
32         <div class="ItemBlock_Title1"><!-- 信息说明<DIV CLASS="ItemBlock_Title1">
33             <IMG BORDER="0" WIDTH="4" HEIGHT="7" SRC="${pageContext.request.contextPath}/style/blue/images/item_point.gif" /> 岗位信息 </DIV>  -->
34         </div>
35         <!-- 表单内容显示 -->
36         <s:hidden name="id"></s:hidden>
37         <div class="ItemBlockBorder">
38             <div class="ItemBlock">
39                 <table cellpadding="0" cellspacing="0" class="mainForm">
40                     <tr>
41                         <td width="100">岗位名称</td>
42                         <td><s:textfield name="name" cssClass="InputStyle" /> *</td>
43                     </tr>
44                     <tr>
45                         <td>岗位说明</td>
46                         <td><s:textarea name="description" cssClass="TextareaStyle"></s:textarea></td>
47                     </tr>
48                 </table>
49             </div>
50         </div>
51         
52         <!-- 表单操作 -->
53         <div id="InputDetailBar">
54             <input type="image" src="${pageContext.request.contextPath}/style/images/save.png"/>
55             <a href="javascript:history.go(-1);"><img src="${pageContext.request.contextPath}/style/images/goBack.png"/></a>
56         </div>
57     </s:form>
58 </div>
59 
60 </body>
61 </html>
saveUI.jsp

  重点行:<s:form action="role_%{id == null ? 'add' : 'edit'}">。

  同样,RoleAction.java里的addUI(),editUI()的返回值改为saveUI,struts.xml的result也修改为如下:

  <result name="saveUI">/WEB-INF/jsp/roleAction/saveUI.jsp</result>。

至此,我们的岗位管理功能就全部完成实现了。

附页面源码下载地址:http://pan.baidu.com/s/1kTHs199

你可能感兴趣的:(优化)