真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SSH系列:(12)用戶管理-表單校驗(yàn)

在用戶的新增(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部分

    
    	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},
    				type:"post",
    				async:false,//非異步
    				success:function(msg){
    					if("true" != msg){
    						//帳號已經(jīng)存在
    						alert("帳號已經(jīng)存在。請使用其它賬號");
    						//定焦
    						$('#account').focus();
    						vResult = false;
    					}
    					else{
    						vResult = true;
    					}
    				}
    			});
    		}    		
    	}
    	
    	//提交表單
    	function doSubmit(){
    		var $name = $('#name');
    		if($name.val() == ""){
    			alert("用戶名不能為空!");
    			$name.focus();
    			return false;
    		}
    		
    		var $password = $('#password');
    		if($password.val() == ""){
    			alert("密碼不能為!");
    			$password.focus();
    			return false;
    		}
    		
    		//帳號校驗(yàn)
    		doVerify();
    		if(vResult){
    			//提交表單
    			document.forms[0].submit();
    		}
    	}
    

注意:上述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)的用戶
				List list = 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

List findUserByAccountAndId(String id, String account);

UserServiceImpl.java

	public List findUserByAccountAndId(String id, String account) {
		return userDao.findUserByAccountAndId(id,account);
	}

2.3、dao層

UserDao.java

List findUserByAccountAndId(String id, String account);

UserDaoImpl.java

	public List findUserByAccountAndId(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();
	}


當(dāng)前標(biāo)題:SSH系列:(12)用戶管理-表單校驗(yàn)
轉(zhuǎn)載來源:http://weahome.cn/article/jehipj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部