ssh ajax验证用户名密码,SSH系列:用户管理-表单校验

在用户的新增(add)、编辑(edit)中对用户名(username)、密码(password)进行非空校验和帐号(account)的唯一性校验。

需要注意的是在编辑页面(editUI.jsp)中帐号(account)的唯一性校验要排除当前编辑的帐号,不然将出现无法保存的情况。

1、JSP页面

在jsp页面中,分别进行两个时机的校验,①是在编辑帐号(account)的表单域时需要到服务器中校验是否已经存在输入的帐号;②在提交(submit)表单时再次进行校验,避免在填写表单时帐号已被使用的情况;

表单部分

                    

addUI.jsp中Javascript部分

注意:上述javascript中的doVerify()方法中,$.ajax方法中的async参数为false,它的目的是实现帐号的同步验证,而不是异步验证。

editUI.jsp内的Javascript部分有一点不同,就是:在进行帐号(account)验证的时候,需要同时传递id过去。var vResult = false;    //检验帐号唯一性    function doVerify(){    //1、获取帐号    var account = $('#account').val();    if(account != null){    //2、校验    $.ajax({    url:"${basePath}/tax/user_verifyAccount.action",    data:{"user.account":account,"user.id":"${user.id}"},//注意:这里是用EL表达式取ValueStack上的值    type:"post",    async:false,//非异步    success:function(msg){    if("true" != msg){    //帐号已经存在    alert("帐号已经存在。请使用其它账号");    //定焦    $('#account').focus();    vResult = false;    }    else{    vResult = true;    }    }    });    }        }

知识点(1)EL表达式获取ValueStack上的值Struts2中EL表达式取值

http://blog.csdn.net/cuihaiyang/article/details/41950141

struts2 request内幕 为什么在struts2用EL表达式可以取值

http://www.tuicool.com/articles/bQzaEzI

Struts2中的ModelDriven机制及其运用

http://blog.csdn.net/li_tengfei/article/details/6098145

2、后台(服务器端)

2.1、action层

UserAction.javapublic void verifyAccount(){try {//1、获取账号if(user != null && StringUtils.isNotBlank(user.getAccount())){//2、根据帐号到数据库校验是否存在该帐号对应的用户List list = userService.findUserByAccountAndId(user.getId(),user.getAccount());String strResult = "true";if(list != null && list.size()>0){//说明该帐号已经存在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();}}

知识点(1)StringUtilsorg.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 

2.2、service层

UserService.javaList findUserByAccountAndId(String id, String account);

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

2.3、dao层

UserDao.javaList findUserByAccountAndId(String id, String account);

UserDaoImpl.javapublic 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();}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值