宅急送 第三天 
* 第一天 SSH整合,项目中常见问题解决 
* 第二天 easyui控件简单使用 、完整的用户管理模块 (登陆、设置密码、增删改查 )

一、SVN的使用 
需要服务器和客户端 两个软件 ,企业开发中,使用linux服务器
1、服务器
练习时,暂时将SVN服务器安装 windows (VisualSVN-Server-2.1.5.msi)------ 安装时不要使用含有中文 空格目录 (默认端口 443 、8443)

** 安装后访问地址 https://PC2011101416ajs:8443/svn/ 
** 建议使用  https://localhost:8443/svn 
 
建立仓库,可以以项目为单位 来建立 --- 存放和项目相关所有文档 (代码只是一个部分 )
建立用户 本机用户 yuy/123 
2、 客户端软件 TortoiseSVN 
可以在任何文件夹,导入import/检出checkout SVN仓库文档 ,进行版本控制

3、在myeclipse安装SVN插件 
去官网上下载SVN ----- 现在官网流行在线安装版 
site-1.8.8.zip 是SVN1.8.8 离线安装版

myeclipse 8.5以后插件安装 推荐,在dropins 目录进行安装 
* 传统安装,将插件覆盖安装目录 features 和 plugins 
* 现在推荐 在myeclipse/dropins  满足目录结构
插件目录/eclipse/features 和 plugins 
安装插件后 windows-preferences 中多了个SVN配置,在视图中多了SVN视图
建立与Respository 连接
将myeclipse工程 上传到仓库 ------ 右键工程 ---- team ---- share project (工程显示*和? 当前工程与仓库中不同 )
右键选中工程 ---- team --- 提交  (工程上出现小仓库图标,代表被管理了 )

标记tag和分支branch 
*** 当代码完成一定功能,在里程杯 为代码创建一个tag 标记 (标签记录当时各个文件对应版本,当项目升级出现问题,可以还原到指定tag)
**  代码完成通用功能后,建立另一个分支继续开发,一个代码可以创建多个分支,多个软件系统基于同一个公共代码

反编译插件 将class文件 解析为 java源代码 
将jad目录复制到myeclipse安装目录下dropins 目录 ,将jad.exe 复制到jdk/bin 目录
重启myeclipse ,在jadclipse中 配置jad.exe 路径 即可 完成反编译
window - preferences - 搜索jadclipse --- path to decompliler  (D:\Program Files\Java\jdk1.7.0_09\bin\jad.exe)

====================================================================================
二、 修改用户管理模块遗留的bug 
bug1 : flexjson 序列化日期对象时,将日期序列化 毫秒值 ----- 页面上回显不符合日期格式
在Domain类 User中添加 getBirthdayStr()方法
// 手动将日期格式化为字符串
@Transient
public String getBirthdayStr(){
if(birthday== null){
return null;
}
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.format(birthday);
}

***  JSONSerializer jsonSerializer = new JSONSerializer().transform(new DateTransformer("yyyy-MM-dd"), Date.class);

bug2 : 日期查询 ,提交请求参数获取不到 
<input type="text" id="birthday" name="beginBirthday" class="easyui-datebox" /> 
问题: $("#birthday").val() 无法获得选中日期 ???

<input type="text" class="combo-text validatebox-text" autocomplete="off" style="width: 133px; height: 20px; line-height: 20px;">
进行选择
<input type="hidden" class="combo-value" name="beginBirthday" value="2013-03-01"> 存放选中值 (name为原来指定值 )

解决方案  $("[name='beginBirthday']").val(); 使用name属性选择器就可以了

bug3 : 修改用户时,如果查询id对象用户比较密码,再更新提交用户,产生两个不同对象 有着相同标识符
@Override
public void updateUser(User user) {// 传递参数 是脱管对象
// 先查询
User existUser =  userDAO.findById(User.class, user.getId()); // 持久对象

if(!existUser.getPassword().equals(user.getPassword())){ // 用加密后的比
user.setPassword(MD5Utils.md5(user.getPassword()));
}
BeanUtils.copyProperties(user, existUser);
}
添加 查看用户和删除用户,不选中 提示信息 
function doView() {
alert("编辑用户");
var item = $('#grid').datagrid('getSelected');
if(item!=null){
console.info(item.id);
location.href = "${pageContext.request.contextPath}/user_view.action?id="+item.id; 
}else{
$.messager.alert("信息提示","查看用户必须选中一行用户信息","error");
}

}
function doDelete() {
alert("删除用户");
var ids = [];
var items = $('#grid').datagrid('getSelections');
if(items.length == 0){
$.messager.alert("信息提示","删除用户必须至少选中一行用户信息","error");
return ;
}
for(var i=0; i<items.length; i++){
   ids.push(items[i].id);    
}
}

====================================================================================
三、 宅急送 业务第一部分: 基础设置业务 
基础设置该部分业务,主要为系统其它功能提供一些 基础数据信息, 其它功能可以依赖基本数据信息来完成

1) ****  基础档案 (数据词典的功能 )
2)线路类型: 全国、全省、省内 、市内   -----------------  设置线路时 ,select 选择线路类型,查询线路数据词典 
3)取派员类型: 司机、小件员 
*** 数据词典与业务流程无关,只与业务数据相关

4)收派时间: 收件和派件的时间  (不同取派员 上班时间不同)
5)收派标准: 取派员能拿多少货物 0-5公斤  5-10公斤 
5)取派员设置 : 对取派员信息进行增删改查  (替班,谁有事,找其他取派员替班 )
6)车辆和线路设置  (忽略)
7)区域、分区、定区 :  当前宅急送业务能够覆盖省市区 (区域管理)、区域比较大(分区 路、街道、小区)、定区(是分区的集合,是取派员的送货范围)
8) 指定定区时,为取派员排班

****** 简化业务 (假设一个定区只有一个取派员负责,24小时上班 )

企业端进行数据建模时,最专业软件 PowerDesigner (sybase公司产品) --- 收费
pd 中新建model 有三种 : CDM 概念图 针对需求 、OOM 面向对象设计图 、PDM 物理数据模型图 (针对数据库)
*** 三种图直接可以相互转换

创建table ----- name属性给用户看的,code属性生成代码的 , 将相同数据类型定义为domain 
***  domain 例如很多表主键都是 int  ,又有很多表主键都是 uuid varchar(32) 
columns 定义表中列 
preview 查看生成SQL代码

导出 : database - generate database

基础设置部分数据表 :
users 操作系统用户 
收派标准表: 取派员使用收派标准 
create table bc_standard
(
   id                   varchar(32) not null,   // 编号 uuid生成
   name                 varchar(30),  // 标准名称 
   minweight            double,      // 最小重量
   maxweight            double,      // 最大重量
   deltag               char(1),     // 是否作废  1 作废, 0 正常使用
   user_id              int,         // 操作人 
   updatetime           timestamp,   // 更新时间 
   primary key (id)
);

=================  操作用户和标准之间 一对多,一个系统用户可以制定多个标准

取派员表 : 存放取派员信息
create table bc_staff
(
   id                   varchar(32) not null,   // 编号
   name                 varchar(20),   // 姓名
   telephone            int,   // 手机
   haspda               char(1),  // 是否有PDA 移动设备 
   deltag               char(1),  // 作废标志
   station              varchar(40), // 所属公司
   standard_id          varchar(32), // 采用取派标准 
   primary key (id)
);
================== 标准表和取派员表之间 一对多, 多个取派员使用同一个标准 
区域表 : 存放省 市 区信息
create table bc_region
(
   id                   varchar(32) not null,  // 编号
   province             varchar(50),  // 省
   city                 varchar(50), // 市
   district             varchar(50), // 区
   postcode             varchar(50), // 邮编
   shortcode            varchar(30), // 简码
   citycode             varchar(30), // 城市编码
   primary key (id)
);

分区表 : 区域太大了,完成取派任务 ,必须分区
create table bc_subarea
(
   id                   varchar(32) not null,  // 编号
   decidedzone_id       varchar(32),  // 定区编号
   region_id            varchar(32),  // 区域编号 
   addresskey           varchar(100), // 关键字
   startnum             varchar(30),  // 开始 楼、小区 、街道号 
   endnum               varchar(30),  // 结束 楼、小区、街道号
   single               char(1),      // 单双号 
   position             varchar(255), // 位置信息 
   primary key (id)
);

定区表 : 为取派员指定负责分区 
create table bc_decidedzone
(
   id                   varchar(32) not null,  // 编号
   name                 varchar(30),   // 名称
   staff_id             varchar(32),  // 取派员 
   primary key (id)
);

一个取派员负责多个定区 ,一个定区由一个取派员负责
一个区域别划分给多个分区
一个定区由多个分区组成

-----------------------------------------------------------------------------------------------------------------------------
基础档案设置 主表中 存放"取派类型"  子表中 存放 "司机" "小件员"  ------ 一对多关系
用户登录后,先建立收派标准 、再管理收派员信息 、 进行区域设置 、 进行分区 、 管理定区(为定区指定负责的收派员)

------------------------------------------------------------------------------------------------------------------------------
四、先根据 PDM设计。编写Java实体类 ,完成建表工作 
新增5个实体类 
Standard  标准
Staff   取派员
Region   区域
Subarea  分区
Decidedzone  定区

修改页面中ztree菜单 ------ menu.jso维护 
** 使用第三天新功能代码中 menu.json 替换员工工程的 
** 使用第三天新功能代码中 base 覆盖原有base 
** 页面假的数据 standard.json  、 staff.json

五。 基础设置 功能实现 
用户管理页面结构,在数据列表部分套入单独iframe,用链接方式访问 userinfo.jsp ,采用普通请求提交的方式,提交表单 
***  页面添加、修改 传统页面提交 ; 查询、删除 使用Ajax提交

收派标准、取派员、区域管理  ---- 将使用一个页面完成增删改查 
*** 将添加修改表单form 存放一个div中,使用窗口弹出  ----- 可以在一个页面内完成增删改查
*** 纯Ajax编程 (struts2标签库没用了 )

standard.jsp 设计
1、 引入easyui 需要所有 js和css
2、 页面布局整体一个部分 datagrid  -------  
<body class="easyui-layout" style="visibility:hidden">
<div region="center">
<table id="grid"></table> 
</div>   <!-- 只有中 -->
</body>
* 小技巧, 先将body隐藏 style="visibility:hidden" , 在页面加载后再显示 $("body").css({visibility:"visible"}); 
3、表格工具栏  iconCla 显示按钮图标  easyui/theme/icon.css
//工具栏
var toolbar = [ {
id : 'button-view',
text : '查询',
iconCls : 'icon-search',
handler : doView
}, {
id : 'button-add',
text : '增加',
iconCls : 'icon-add',
handler : doAdd
}, {
id : 'button-delete',
text : '删除',
iconCls : 'icon-cancel',
handler : doDelete
}];
* 点击三个按钮,分别调用 doView doAdd doDelete 三个方法

4、定义表格中列 
var columns = [{列一信息},{列二信息},{列三信息}];  //很多列
第一种 勾选id
{
field : 'id',
checkbox : true,  // 生成第一列勾选,用于删除、查看 
}
第二种 普通列
{
field : 'name',  // 返回json数据中属性名
title : '标准名称',  // 表格中列名
width : 120,   // 宽度
align : 'center'  // 居中
}
第三中 复杂json数据解析
// 特殊结构的显示 
{"id":"001","name":"0-10公斤","minweight":"0","maxweight":"10","updatetime":"1999-10-10 12:23:34","operator":{"username":"张三","station":"总公司"}}  =============================
{
field : 'operator.username',
title : '操作人',
width : 120,
align : 'center',
formatter : function(data,row, index){ // data 代表json中返回对应属性的数据 、row代表整个json数据
return row.operator.username;
}
}  
5、隐藏添加标准的div 编写form
<div class="easyui-window"> 弹出窗口 
分为两个部分 : 第一部分 保存按钮 、第二部分 表单(用于添加和修改)

=============== 添加标准 、标准列表查看 、标准删除

六 、收派标准代码实现
1、 添加收派标准窗口弹出 
<div class="easyui-window"></div>  
在js中设置窗口属性  
$('#addStandardWindow').window({
            title: '添加收派标准', 
            width: 400,
            modal: true,
            shadow: true,
            closed: true,
            height: 400,
            resizable:false
        });
通过 <div>中设置 style="top:..px; left:..px"

在StandardAction 进行输入数据校验 ------ name非空 ,minweight 大于0校验 , maxweight 必须大于 minweight (作业 fieldExpression)
在StandardService中 先判断minweight和maxweight对应记录是否存在, NamedQuery
定义Ajax通用结果页面 success.jsp  error.jsp

2、列表分页查询 (无条件)
分页条件  : page 页码、rows 每页多少条

查询Standard需要显示User信息,但是User信息在另一张表 
// 将其设置为 lazy=false 立即查询
@LazyToOne(LazyToOneOption.FALSE)
private User user;

3、 删除勾选id 
在js中  $("#grid").datagrid("getSelections"); 获得所有选中对象,再从对象获得id 拼接字符串发送到服务器

***** 作业,可以在查询时,不去查询作废的标准  /  在页面显示作废的标准(添加一列)


宅急送项目第三天笔记!(SVN插件和反编译插件)相关推荐

  1. 试验笔记 - Eclipse的.class反编译插件

    常用的反编译工具有: JAD Java Decompiler Download Mirror(?)http://varaneckas.com/jad/JadClipse (较好)http://jadc ...

  2. eclipse 反编译插件安装

    eclipse 反编译插件安装教程 eclipse 反编译插件 eclipse 反编译插件 每次在新电脑上都得百度安装教程,索性自己写一个记录一下算啦! 首先在eclipse的导航页打开help-&g ...

  3. eclipse安装JAVA反编译插件

    前言:在实际的开发中几乎都会使用到一些框架来辅助项目的开发工作,对于一些框架的代码我们总怀有一些好奇之心,想一探究竟,有源码当然更好了,对于有些JAR包中的代码我们就需要利用反编译工具来看一下了,下面 ...

  4. MyEclipse6.5的反编译插件的安装

    常用的几种反编译工具 1. JD-GUI[推荐] JD-GUI是属于Java Decompiler项目(JD项目)下个的图形化运行方式的反编译器. JD-Eclipse属于Java Decompile ...

  5. Eclipse安装反编译插件JD-Eclipse----(程序员何必要为难程序员呀!蓝瘦香菇)

    如果你觉得对你有用,请留下一个赞再走,谢谢!! 文章目录 一.看源码引发的吐槽大会 二.支招解决问题 三.成果展示,开心的飞起!! 四.分享交流 一.看源码引发的吐槽大会 想看jar包中的.class ...

  6. eclipse安装反编译插件(附jad下载)

    eclipse安装反编译插件(附jad下载) 博客分类: eclipse 一.eclipse反编译插件Jadclipse jadclips插件网站:    http://jadclipse.sourc ...

  7. (016)java后台开发之Eclipse安装反编译插件

    在java(015)中gson-2.2.4.jar 源码的查看基于Attach Source code 链接到源码库gson-2.2.4-source.jar 实现的.而我导入的servlet-api ...

  8. Eclipse Class Decompiler---Java反编译插件

    若转载,请标明出处http://www.cnblogs.com/last_hunter/p/5626779.html,谢谢! ------------------------------------- ...

  9. Eclipse反编译插件: Jodeclipse与JadClipse

    http://www.ieee.org.cn/dispbbs.asp?boardID=41&ID=51418 Eclipse反编译插件: Jodeclipse与JadClipse Jodecl ...

最新文章

  1. 清空控制台Console.log()信息
  2. 一个Demo学完Android中所有的服务
  3. 判断点是否处于多边形内的三种方法(转)
  4. 推荐:李沐开源新作,一起来《动手学深度学习》
  5. wxWidgets:wxMenu类用法
  6. 微软开始提供公共预览版Windows 8.1下载
  7. python 取余_玩转Python源码(一) quot;%squot;与“%d”
  8. linux 建议锁和强制锁
  9. Vue使用Axios Ajax封装渲染页面
  10. RAR for Linux 命令详解
  11. linux vim与less区别,linux中cat、more、less命令区别详解##less 最合适最好用,和vim一样好用...
  12. 一套鼠标键盘操作两台电脑的方法
  13. 美国计算机音乐专业,美国音乐博士解析
  14. python生成树状图_python 字典生成树状图
  15. 第一章:Swoole结构和流程
  16. 史上最全!支持EOS映射的交易所统计|关于EOS映射,你想知道的都在这
  17. javaScript 实现表格table分页
  18. iVX移动端应用开发指导与规范v2.0
  19. Conflux网络2022路线图
  20. datagrid 之修改

热门文章

  1. SharePoint 2013的限制(三)非法字符
  2. 计算机软件资格考试(软考攻略)
  3. 如果你一再做出错误的决定,很可能是认知出问题了
  4. 读《哈佛凌晨4点半》
  5. matlab引言,MatLab 2018a 官方教程
  6. cadence17.4在quick place器件时显示cannot find symbol
  7. Allegro 批量采集( 采集 产品)、批量offer刊登( 刊登 产品)、铺货上架利器-ERP
  8. mapbox 支持国家2000 坐标系的数据
  9. 计算机视觉学习笔记(四)homography 单应性矩阵的理解及求解
  10. 互联网络——基本的单极互联网络