• 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

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

    四 经测试,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

  • 相关阅读:
    4.文本规范化处理
    2.自动文本分类
    3.文本分类的蓝图
    1.什么是文本分类
    2.文本规范化
    Python 处理和理解文本
    1.文本切分
    验证码识别
    随机函数
    Java编程思想笔记(多态)
  • 原文地址:https://www.cnblogs.com/clear5/p/4040066.html
Copyright © 2020-2023  润新知