在用戶的新增(add)、編輯(edit)中對用戶名(username)、密碼(password)進(jìn)行非空校驗(yàn)和帳號(account)的唯一性校驗(yàn)。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、點(diǎn)軍網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為點(diǎn)軍等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
需要注意的是在編輯頁面(editUI.jsp)中帳號(account)的唯一性校驗(yàn)要排除當(dāng)前編輯的帳號,不然將出現(xiàn)無法保存的情況。
1、JSP頁面
在jsp頁面中,分別進(jìn)行兩個時機(jī)的校驗(yàn),①是在編輯帳號(account)的表單域時需要到服務(wù)器中校驗(yàn)是否已經(jīng)存在輸入的帳號;②在提交(submit)表單時再次進(jìn)行校驗(yàn),避免在填寫表單時帳號已被使用的情況;
表單部分
addUI.jsp中Javascript部分
注意:上述javascript中的doVerify()方法中,$.ajax方法中的async參數(shù)為false,它的目的是實(shí)現(xiàn)帳號的同步驗(yàn)證,而不是異步驗(yàn)證。
editUI.jsp內(nèi)的Javascript部分有一點(diǎn)不同,就是:在進(jìn)行帳號(account)驗(yàn)證的時候,需要同時傳遞id過去。
var vResult = false; //檢驗(yàn)帳號唯一性 function doVerify(){ //1、獲取帳號 var account = $('#account').val(); if(account != null){ //2、校驗(yàn) $.ajax({ url:"${basePath}/tax/user_verifyAccount.action", data:{"user.account":account,"user.id":"${user.id}"},//注意:這里是用EL表達(dá)式取ValueStack上的值 type:"post", async:false,//非異步 success:function(msg){ if("true" != msg){ //帳號已經(jīng)存在 alert("帳號已經(jīng)存在。請使用其它賬號"); //定焦 $('#account').focus(); vResult = false; } else{ vResult = true; } } }); } }
知識點(diǎn)(1)EL表達(dá)式獲取ValueStack上的值
Struts2中EL表達(dá)式取值 http://blog.csdn.net/cuihaiyang/article/details/41950141 struts2 request內(nèi)幕 為什么在struts2用EL表達(dá)式可以取值http://www.tuicool.com/articles/bQzaEzI Struts2中的ModelDriven機(jī)制及其運(yùn)用 http://blog.csdn.net/li_tengfei/article/details/6098145 |
2、后臺(服務(wù)器端)
2.1、action層
UserAction.java
public void verifyAccount(){ try { //1、獲取賬號 if(user != null && StringUtils.isNotBlank(user.getAccount())){ //2、根據(jù)帳號到數(shù)據(jù)庫校驗(yàn)是否存在該帳號對應(yīng)的用戶 Listlist = userService.findUserByAccountAndId(user.getId(),user.getAccount()); String strResult = "true"; if(list != null && list.size()>0){ //說明該帳號已經(jīng)存在 strResult = "false"; } //輸出 HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/plain"); ServletOutputStream outputStream = response.getOutputStream(); outputStream.write(strResult.getBytes()); outputStream.close(); } } catch (IOException e) { e.printStackTrace(); } }
知識點(diǎn)(1)StringUtils
org.apache.commons.lang3.StringUtils 位于struts-2.3.29\commons-lang3-3.2.jar中 public static boolean isEmpty(CharSequence cs) { return cs == null || cs.length() == 0; } public static boolean isNotEmpty(CharSequence cs) { return !isEmpty(cs); } public static boolean isBlank(CharSequence cs) { int strLen; if(cs == null || (strLen = cs.length()) == 0) return true; for(int i = 0; i < strLen; i++) if(!Character.isWhitespace(cs.charAt(i))) return false; return true; } public static boolean isNotBlank(CharSequence cs) { return !isBlank(cs); } |
2.2、service層
UserService.java
ListfindUserByAccountAndId(String id, String account);
UserServiceImpl.java
public ListfindUserByAccountAndId(String id, String account) { return userDao.findUserByAccountAndId(id,account); }
2.3、dao層
UserDao.java
ListfindUserByAccountAndId(String id, String account);
UserDaoImpl.java
public ListfindUserByAccountAndId(String id, String account) { String hql = "from User where account=?"; if(StringUtils.isNotBlank(id)){ hql += " and id !=?"; } Query query = getSession().createQuery(hql); query.setParameter(0, account); if(StringUtils.isNotBlank(id)){ query.setParameter(1, id); } return query.list(); }