添加用户:
用户账号(输入)、用户名称(输入)、用户密码(输入)、用户类型(下拉)、用户单位名称(输入)、用户状态(单选)
用户类型:下拉选择框 有卫生局,卫生院,卫生室,供货商,系统管理员
前置条件(操作约束):
用户账号不允许重复
根据用户类型,输入单位名称必须存在对应的单位表
后置条件(数据库操作):
向sysuser表插入一条记录
1.2.1 dao
向sysuser表插入一条记录
使用逆向工程生成的mapper实现
1.2.2 service
接口功能:添加系统用户
操作参数:用户信息,使用SysuserCustom
接口约束:
用户账号不允许重复
根据用户类型,输入单位名称必须存在对应的单位表
代码:
注意在service进行数据合法性校验。(因为在页面的校验,可以通过脚本绕过去,但是service的校验绕不过去)
遇到异常要抛出异常信息。
// 查询监督单位名称是否正确
public UserjdfindUserjdByMc(String mc) throws Exception {
UserjdExampleuserjdExample = newUserjdExample();
UserjdExample.Criteria criteria= userjdExample.createCriteria();
// 设置条件根据账号查询
criteria.andMcEqualTo(mc);
List<Userjd> list = userjdMapper.selectByExample(userjdExample);
if (list != null && list.size()== 1) {
return list.get(0);
}
return null;
}
public voidinsertSysuser(SysuserCustom sysuserCustom) throws Exception {
//参数校验
//通用的参数合法校验,非空校验,长度校验
//...使用一些工具类来完成
//数据业务合法性校验
//账号唯一性校验,查询数据库校验出来
//思路:根据用户账号查询sysuser表,如果查询到说明账号重复
Sysusersysuser = this.findSysuserByUserid(sysuserCustom.getUserid());
if(sysuser!=null){
//账号重复
//抛出异常,可预知异常
throw new Exception("账号重复");
}
//根据用户类型,输入单位名称必须存在对应的单位表
Stringgroupid = sysuserCustom.getGroupid();//用户类型
Stringsysmc = sysuserCustom.getSysmc();//单位名称
if(groupid.equals("1") ||groupid.equals("2")){
//监督单位
//根据单位名称查询单位信息
Userjduserjd = this.findUserjdByMc(sysmc);
if(userjd==null){
//抛出异常,可预知异常
throw new Exception("单位名称输入错误");
}
}else if(groupid.equals("3")){
//卫生室
//根据单位名称查询单位信息
Useryyuseryy = this.findUseryyByMc(sysmc);
if(useryy==null){
//抛出异常,可预知异常
throw new Exception("单位名称输入错误");
}
}else if(groupid.equals("4")){
//供货商
//根据单位名称查询单位信息
Usergysusergys = this.findUsergysByMc(sysmc);
if(usergys==null){
//抛出异常,可预知异常
throw new Exception("单位名称输入错误");
}
}
//设置主键
sysuserCustom.setId(UUIDBuild.getUUID());
sysuserMapper.insert(sysuserCustom);
}
1.2.3 action
添加用户,写两个方法:
进入添加页面方法
此方法准备数据在添加页面显示。
提交方法:
调用service类提交,将service返回的结果在页面展示,如果service抛出异常,在action中捕获异常。
Action方法中注意对异常处理,异常信息就是service抛出的异常。
//添加用户提交
//提交结果转json输出到页面
//提交表单数据统一使用包装类
@RequestMapping("/addsysusersubmit")
public @ResponseBodyMap<String,Object> addsysusersubmit(SysuserQueryVo sysuserQueryVo)throws Exception{
//提示用户信息
Stringmessage = "操作成功!!";
int type=0;//成功
try {
//调用service执行用户添加
userService.insertSysuser(sysuserQueryVo.getSysuserCustom());
}catch(Exception e) {
//输出异常信息
e.printStackTrace();
//对应异常信息进行解析
message = e.getMessage();
type=1;//失败
}
//将执行结果返回页面
Map<String,Object> result_map= newHashMap<String, Object>();
result_map.put("type", type);
result_map.put("message",message);
return result_map;
}
1.2.4 页面
l 用户添加页面
在用户列表页面中,点击“添加”,打开添加页面。
使用如下方法打开一个新窗口:
//参数:窗口的title、宽、高、url地址
createmodalwindow("添加用户信息", 800, 250, '${baseurl}user/adduser.action');
createmodalwindow:使用jquery easyui的window组件,里边拼接一个html串,串就是ifram,ifram的链接就是用户添加的url
//datagrid 的工具栏
var toolbar_v = [ {
//工具栏
id : 'btnadd',
text : '添加',
iconCls : 'icon-add',
handler : function() {
//打开一个窗口添加用户界面
//参数窗口的title 宽高 url地址
createmodalwindow("添加用户信息",800,250,"${baseurl}user/addsysuser.action");
}
} ];
l 用户添加提交
页面提交给服务端是key/value数据,服务端返回是json。
为什么服务要返回json?
Json作为接口交互通用格式越来越流行,在页面通过js解析json数据非常方便。
本系统采用post提交,使用jquery提供一个ajax的form提交组件。
Jquery.from.min.js 文件
封装一个js方法,用于提交form表单的数据,进行ajax提交,内部使用上边form提交的组件。
/*
*form提交(post方式)
*
*formId form Id
*callbackfn 回调函数名(要求函数必须有参数且不能多与两个,一个参数时参数为响应文本,两个参数时第一个参数为响应文本)
*param 回调函数参数(如果为null,那么调用一个参数的回调函数,否则调用两个参数的回调函数)
*dataType:预期服务器返回的数据类型
*/
function jquerySubByFId(formId,callbackFn,param,dataType){
var formObj = jQuery("#" + formId);
var options = {
dataType: ("undefined"!=dataType&& null!=dataType)?dataType:"json",
success:function(responseText){
if(param === null){
callbackFn(responseText);
}else{
callbackFn(responseText,param);
}
}
};
formObj.ajaxSubmit(options);
}
在用户添加页面上编写提交方法:
function sysusersave(){
//准备使用jquery 提供的ajax Form提交方式
//将form的id传入,方法自动将form中的数据组成成key/value数据,通过ajax提交,提交方法类型为form中定义的method,
//使用ajax form提交时,不用指定url,url就是form中定义的action
//此种方式和原始的post方式差不多,只不过使用了ajax方式
//第一个参数:form的id
//第二个参数:sysusersave_callback是回调函数,sysusersave_callback当成一个方法的指针
//第三个参数:传入的参数,可以为空
//第四个参数:dataType预期服务器返回的数据类型,这里action返回json
//根据form的id找到该form的action地址
jquerySubByFId('userform',sysusersave_callback,null,"json");
}
//编写提交回调方法 此方法使用了dataGrid 的message 方法
function sysusersave_callback(data){
在回调方法中,使用jqueryeasyui的提示方法。