JAVAEE——BOS物流项目03:学习计划、messager、menubutton、登陆拦截器、信息校验和取派员添加功能
1 学习计划
1、jQuery easyUI messager使用方式
n alert方法
n confirm方法
n show方法
2、jQuery easyUI menubutton使用方式
3、自定义拦截器实现用户未登录自动跳转到登录页面
n 创建拦截器
n 注册拦截器
4、基于ajax实现用户修改密码功能
n easyUI中validatebox校验功能
n 发送ajax请求
n 服务端修改数据库
5、基础设置部分需求分析
6、创建基础设置部分数据表
n 取派员表
n 区域表
n 分区表
n 定区表
7、取派员添加功能
n 扩展validatebox校验规则
n 页面调整、提交表单
n 服务端操作数据库
2 jQuery easyUI messager使用方式
2.1 alert

2.2 confirm

2.3 show

3 jQuery easyUI menubutton菜单使用
<!-- 制作菜单 -->
<a data-options="iconCls:'icon-help',menu:'#mm'" class="easyui-menubutton">控制面板</a> <!-- 使用div元素制作下拉菜单 -->
<div id="mm">
<div onclick="alert(1111)" data-options="iconCls:'icon-edit'">修改密码</div>
<div>联系管理员</div>
<div class="menu-sep"></div>
<div>退出系统</div>
</div>
4 自定义拦截器实现用户未登录自动跳转到登录页面
4.1 编写拦截器类
需要继承struts2框架的MethodFilterInterceptor

提供工具类:
/**
* BOS项目的工具类
* @author zhaoqx
*
*/
public class BOSUtils {
//获取session对象
public static HttpSession getSession(){
return ServletActionContext.getRequest().getSession();
}
//获取登录用户对象
public static User getLoginUser(){
return (User) getSession().getAttribute("loginUser");
}
} /**
* 自定义的拦截器,实现用户未登录自动跳转到登录页面
* @author zhaoqx
*
*/
public class BOSLoginInterceptor extends MethodFilterInterceptor{
//拦截方法
protected String doIntercept(ActionInvocation invocation) throws Exception {
//从session中获取用户对象
User user = BOSUtils.getLoginUser();
if(user == null){
//没有登录,跳转到登录页面
return "login";
}
//放行
return invocation.invoke();
}
}
4.2 配置拦截器
在struts.xml中配置
<interceptors>
<!-- 注册自定义拦截器 -->
<interceptor name="bosLoginInterceptor" class="com.itheima.bos.web.interceptor.BOSLoginInterceptor">
<!-- 指定哪些方法不需要拦截 -->
<param name="excludeMethods">login</param>
</interceptor>
<!-- 定义拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="bosLoginInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/> <!-- 全局结果集定义 -->
<global-results>
<result name="login">/login.jsp</result>
</global-results>
5 基于ajax实现用户修改密码功能
页面:WEB-INF/pages/common/index.jsp

5.1 easyUI中validatebox使用
提供的校验规则:
1、非空校验required="required"
2、使用validType指定
email: 正则表达式匹配电子邮件规则。
url: 正则表达式匹配的URL规则。
length[0,100]: 在x和x字符允许。
remote['http://.../action.do','paramName']: 发送ajax请求做验证值,返回“true”当成功。
<table cellpadding=3>
<tr>
<td>新密码:</td>
<td><input required="true" data-options="validType:'length[4,6]'" id="txtNewPass" type="Password" class="txt01 easy ui-validatebox" /></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input required="true" data-options="validType:'length[4,6]'" id="txtRePass" type="Password" class="txt01 easyui-validatebox" /></td>
</tr>
</table>
5.2 为确定按钮绑定事件
//为确定按钮绑定事件
$("#btnEp").click(function(){
//进行表单校验
var v = $("#editPasswordForm").form("validate");
if(v){
//表单校验通过,手动校验两次输入是否一致
var v1 = $("#txtNewPass").val();
var v2 = $("#txtRePass").val();
if(v1 == v2){
//两次输入一致,发送ajax请求
$.post("userAction_editPassword.action",{"password":v1},function(data){
if(data == '1'){
//修改成功,关闭修改密码窗口
$("#editPwdWindow").window("close");
}else{
//修改密码失败,弹出提示
$.messager.alert("提示信息","密码修改失败!","error");
}
});
}else{
//两次输入不一致,弹出错误提示
$.messager.alert("提示信息","两次密码输入不一致!","warning");
}
}
});
5.3 服务端处理
第一步:在UserAction中创建修改密码方法editPassword
/**
* 修改当前用户密码
* @throws IOException
*/
public String editPassword() throws IOException{
String f = "1";
//获取当前登录用户
User user = BOSUtils.getLoginUser();
try{
userService.editPassword(user.getId(),model.getPassword());
}catch(Exception e){
f = "0";
e.printStackTrace();
}
ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
ServletActionContext.getResponse().getWriter().print(f);
return NONE;
} 第二步:在UserService中提供修改密码方法
/**
* 根据用户id修改密码
*/
public void editPassword(String id, String password) {
//使用MD5加密密码
password = MD5Utils.md5(password);
userDao.executeUpdate("user.editpassword", password,id);
} 第三步:在BaseDao中提供通用更新方法
//执行更新
public void executeUpdate(String queryName, Object... objects) {
Session session = this.getSessionFactory().getCurrentSession();
Query query = session.getNamedQuery(queryName);
int i = 0;
for (Object object : objects) {
//为HQL语句中的?赋值
query.setParameter(i++, object);
}
//执行更新
query.executeUpdate();
} 第四步:在User.hbm.xml中定义更新语句
<query name="user.editpassword">
UPDATE User SET password = ? WHERE id = ?
</query>
6 基础设置部分需求分析
整个BOS项目分为基础设置、取派、中转、路由、报表、财务等部分。
基础设置部分对应需要规格说明书的2.6章节

6.1 基础档案设置
主要是针对本系统中的一些自定义项,需要参照录入,并作为统计分析和计算的维度,用户根据自己的需要动态设置的基础档案;对于自定义的档案支持多级定义;
本模块在其他的系统中也可以称为“数据字典”。

6.2 收派标准
将承接的货物,按照重量和体积两个标准,双纬度定义货物的标准。以便将不同标准的货物分给不同收取和派送能力的人员。由运营部门制定。
6.3 班车设置
将设置的线路和车辆建立对应关系。
6.4 取派员设置
小件员设置主要是设置小件员和快递员的资源信息,主要是为了自动下单和取派任务件使用;包括增加小件员的交通工具和通讯设备,以及取派的重量和体积标准。
使用角色为各级组织机构的系统管理人员在添加。
取派设置中包括小件员的替班信息设置。
以及被替班人信息的查询功能。
6.5 区域设置
此功能区域为行政区域列表,为价格、商务网站、工作单始发站、目的站等来源的基础数据。
6.6 管理分区
区域是由国家划分的行政区域,区域往往很大,不规则,不便于进行物人员分配。对于区域要进行细分,产生分区。
对管理分区进行维护,为定区管理,自动下单等后续操作提供基础数据支持。
打算引入一个复制功能按钮,用来增加信息基本相同的数据。
6.7 管理定区
定区是物流分配的基本单位,可以将客户信息、取派员信息、分区信息进行关联,为自动分单提供基础数据。

6.8 时间管理
上班时间的管理,根据取派人员的可上班时间,将区域取派任务在不同时限分配给不同的取派人员。建议时间管理由总公司部门管理,固化出各种上班时间点。下级厅点只有调用权限,没有修改权限。

使用myeclipse反转生成:

7 取派员添加功能
页面:WEB-INF/pages/base/staff.jsp
7.1 页面调整
第一步:扩展一个手机号的校验规则
<script type="text/javascript">
$(function(){
var reg = /^1[3|4|5|7|8][0-9]{9}$/;
//扩展手机号校验规则
$.extend($.fn.validatebox.defaults.rules, {
telephone: {
validator: function(value,param){
return reg.test(value);
},
message: '手机号输入有误!'
}
});
});
</script>
第二步:为手机号输入框应用规则


第三步:为保存按钮绑定事件,提交表单
//为保存按钮绑定事件
$("#save").click(function(){
//表单校验,如果通过,提交表单
var v = $("#addStaffForm").form("validate");
if(v){
//$("#addStaffForm").form("submit");没刷新页面
$("#addStaffForm").submit();
}
});
<form id="addStaffForm" action="staffAction_add.action" method="post">
因为PDA不勾选不会往后台输出值,所以要设置一个默认值

7.2 服务端实现
创建取派员对应的Action、Service、Dao
JAVAEE——BOS物流项目03:学习计划、messager、menubutton、登陆拦截器、信息校验和取派员添加功能的更多相关文章
- JAVAEE——BOS物流项目06:分页查询、分区导出Excel文件、定区添加、分页问题总结
1 学习计划 1.分区组合条件分页查询 n 分区分页查询(没有过滤条件) n 分区分页查询(带有过滤条件) 2.分区导出 n 页面调整 n 使用POI将数据写到Excel文件 n 通过输出流进行文件下 ...
- JAVAEE——BOS物流项目04:学习计划、datagrid、分页查询、批量删除、修改功能
1 学习计划 1.datagrid使用方法(重要) n 将静态HTML渲染为datagrid样式 n 发送ajax请求获取json数据创建datagrid n 使用easyUI提供的API创建data ...
- JAVAEE——BOS物流项目01:学习计划、搭建环境、主页设计(jQuery EasyUI)
1 学习计划 1.项目概述 项目背景介绍 2.搭建项目开发环境 数据库环境 maven项目搭建 svn环境搭建 3.主页设计(jQuery EasyUI) layout页面布局 accordion折叠 ...
- JAVAEE——BOS物流项目02:学习计划、动态添加选项卡、ztree、项目底层代码构建
1 学习计划 1.jQuery easyUI中动态添加选项卡 2.jquery ztree插件使用 n 下载ztree n 基于标准json数据构造ztree n 基于简单json数据构造ztree( ...
- JAVAEE——BOS物流项目08:配置代理对象远程调用crm服务、查看定区中包含的分区、查看定区关联的客户
1 学习计划 1.定区关联客户 n 完善CRM服务中的客户查询方法 n 在BOS项目中配置代理对象远程调用crm服务 n 调整定区关联客户页面 n 实现定区关联客户 2.查看定区中包含的分区 n 页面 ...
- JAVAEE——BOS物流项目09:业务受理需求分析、创建表、实现自动分单、数据表格编辑功能使用方法和工作单快速录入
1 学习计划 1.业务受理需求分析 n 业务通知单 n 工单 n 工作单 2.创建业务受理环节的数据表 n 业务通知单 n 工单 n 工作单 3.实现业务受理自动分单 n 在CRM服务端扩展方法根据手 ...
- JAVAEE——BOS物流项目05:OCUpload、POI、pinyin4J、重构分页代码、分区添加、combobox
1 学习计划 1.实现区域导入功能 n OCUpload一键上传插件使用 n 将文件上传到Action n POI简介 n 使用POI解析Excel文件 n 完成数据库操作 n 使用pinyin4J生 ...
- JAVAEE——BOS物流项目10:权限概述、常见的权限控制方式、apache shiro框架简介、基于shiro框架进行认证操作
1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n ...
- JAVAEE——BOS物流项目13:Quartz概述、创建定时任务、使用JavaMail发送邮件、HighCharts概述、实现区域分区分布图
1 学习计划 1.Quartz概述 n Quartz介绍和下载 n 入门案例 n Quartz执行流程 n cron表达式 2.在BOS项目中使用Quartz创建定时任务 3.在BOS项目中使用Jav ...
随机推荐
- git常见操作
本地仓库关联远程仓库 新建本地目录scala git init 这样就新建了一个本地仓库 在远端如github上新建仓库scala 关联远程仓库 git remote add origin git@g ...
- Anaconda更新和第三方包更新
更新Anaconda和它所包含的包 1.打开cmd,切换到Anaconda的Scripts目录下:./Anaconda3/Scripts 2.更新Anaconda conda update conda ...
- CSS3 background-size 属性
定义和用法 background-size 属性规定背景图像的尺寸. 默认值: auto 继承性: no 版本: CSS3 JavaScript 语法: object.style.background ...
- AVFrame转换到Mat,yuv420p转换到RGB源代码
FFmpeg中AVFrame到OpenCV中Mat的两种转换方法 方法一:查表法 void AVFrame2Img(AVFrame *pFrame, cv::Mat& img) { int f ...
- 再叙Java反射
Java中的反射 本文为反射的基础知识部分. 能够分析类能力的程序被称为反射(reflective). 反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,容许程序在运行时加载.探知. ...
- H5+混合移动app应用开发——坑我太甚
用了MUI之后,才发现,那坑比我想象之中的要多得多,有些是H5的坑,有些是plus的坑,接下来我一一来吐槽一番. IOS下面,上拉的时候,速度稍微快一点,表头自动隐藏,等你不拉的时候又自动显示 这种情 ...
- tomcat三种启动不同的启动方式
Linux下tomcat服务的启动.关闭与错误跟踪,通常通过以下几种方式启动关闭tomcat服务: 切换到tomcat主目录下的bin目录 1. 启动tomcat服务 方式一:直接启动 ./start ...
- Hystrix-request cache(请求缓存)
开启请求缓存 请求缓存在run()和construce()执行之前生效,所以可以有效减少不必要的线程开销.你可以通过实现getCachekey()方法来开启请求缓存. package org.hope ...
- linux_nginx_rewrite
什么是Nginx的rewrite? 实现URL地址重写,比较复杂的write需要开发来完成,伪静态处理实现是开发的工作, 这rewrite写在location中 指令语法: rewrite re ...
- Django_xamin注册model错误
可能出现的错误: 1. xadmin.sites.AlreadyRegistered: The model UserProfile is already registered 2. error:Fie ...