json+Struts2+jQuery的登录验证

json+Struts2+jQuery的登录验证  

原文来源: http://blog.163.com/sliver_fg/blog/static/116124062201032343454696/(先粘过来看看)

2010-04-23 16:34:54|  分类: SSH框架|字号 订阅

花了两天时间来研究在Struts2中集成json,然后使用jQuery来实现ajax验证,今天终于大功告成。
我所学习的主要博客链接如 下:http://blog.csdn.net/zhqingyun163/archive/2010/01/18/5208766.aspx(这两个几乎一样,我试了没有成功!)
(记录:一天后终于解决加上

struts2-json-plugin-2.1.8.jar

struts2-junit-plugin-2.1.8.jar这两个包

去掉jsonplugin.jar

不过到现在我在ssh2中集成json还没有成功,如果有哪位大神弄出来的话,教教小弟!

2013-6-7今天终于解决了ssh2中集成json的问题,记得要有commons-lang否则会出错的

)
他 的博客上的包有些冲突,需要重新下载,使用json包的下载链接如下:http://www.163disk.com/fileview_15106.html。

我的loginAction代码如下:
public String login() throws Exception {
        
         // 用一个Map做例子
            Map<String, String> map = new HashMap<String, String>();
            
            //用户名唯一
            
            if(userService.findByUserName(userName).isEmpty()){
                map.put("name", "error1");
            }
            else {
                
                User user = (User)userService.findByUserName(userName).get(0);
                if(user.getUserStatus().equals(false))
                {
                    map.put("name", "error2");
                
                }
                
                else if(!user.getPassword().equals(password)){
                    map.put("name", "error3");
                
                }
                
                
                else{
                if(user.getType()==0){
                    map.put("name", "clerk");
                    
                }
                //用户为经理
                else if (user.getType()==1){
                    map.put("name", "manager");
                }
                //用户为系统管理员
                else
                    map.put("name", "admin");
                }
            }
            // 将要返回的map对象进行json处理
            JSONObject jo = JSONObject.fromObject(map);

            // 调用json对象的toString方法转换为字符串然后赋值给result
            this.result = jo.toString();

            return SUCCESS;
        
    }
, 其中的findByUserName()方法大家可以自己定义,我的是使用了SSH框架,在service层定义的。

Struts.xml 中的配置如下:
   <package name="default" namespace="" extends="json-default">
        <act ion name="login" class="loginAction" method="login">
               <result type="json">
               <param name="root">
               result
               </param>
            </result>        
        </act ion>
     </package>

在login.jsp中使用jQuery来实现ajax的验证效果,代码如下:

<script type="text/javas cript" src="<%=path %>/js/jquery.js">
    </script>
    <script type="text/javas cript">   
      $(document).ready( function() {   
           
        //使用 Ajax 的方式 判断登录   
        $("#btn_login").click( function() {   
               
            var url = 'login.act ion';   
             
            //获取表单值,并以json的数据形式保存到params中   
            var params = {   
                userName:$("#userName").val(),   
                password:$("#password").val()   
            };   
            //使用$.post方式       
            $.post(   
               
                url,        //服务器要接受的url   
                   
                params,     //传递的参数        
                   
                function(json){ //服务器返回后执行的函数 参数 da ta保存的就是服务器发送到客户端的数据   
                   
                   var member = ev al("("+json+")");    //包数据解析为json 格式
                   switch(member.name){
                       case "error1" : $('#span1').html("用户"+params.userName+"不存在!");break;
                       case "error2" : $('#span1').html("用户"+params.userName+"已注销!");break;
                       case "error3" : $('#span1').html("用户"+params.userName+"的密码不正确!");break;
                       case "clerk" : location.href="<%=path%>/clerkIndex.jsp";
                       case "manager" : location.href="<%=path%>/managerIndex.jsp";
                       case "admin" :  location.href="<%=path%>/adminIndex.jsp";
                   }
                
                },    
                   
                'json'  //数据传递的类型  json   
               
            );   
           
        });   
           
    });   

</script> 
  </head>
 
<body>
<div id="top"></div>

 <div id="main">
<div id="user">

<table width="100%" border="0" height="100%" cellpadding="0" cellspacing="0">
  <tr>
    <td width="30%"  height="30" align="right"><label for="userName">用户名:</label></td>
    <td width="70%" align="left"><input type="text" name="userName" id="userName" class="input1"></input>
    </td>
  </tr>
  
  <tr>
    <td width="30%"  height="30" align="right"><label for="password">密&nbsp;&nbsp;码:</label></td>
    <td width="70%" align="left"><input type="password" name="password" id="password" class="input1"></input>
    </td>
  </tr>
  
  <tr> <td height="30" align="right"></td>
    <td align="left"><span id="span1" class="errorMessage"></span></td>
  </tr>

  <tr>
    <td colspan="2" align="center">
    <input type="submit" name="sub" value="登 录" class="button" id="btn_login" />
    <input type="reset" name="reset" value="重 置" class="button" />
    </td>
  </tr>
</table>

</div>
</div>

<div id="bottom">copyright&copy;武汉大学国际软件学院  版权所有</div>
</body>
</html>

关 于json的在act ion的配置我一直弄不明白的是验证成功后,act ion是怎么进行跳转的。我在配置文件中于json的返回值一起配置,发现不起作 用。问了现场的尹经理,才知道ajax的验证需要在js代码中通过调用location.href方法来实行跳转,于是思路顿时清晰,一下搞定了。



网上一大堆 struts2+json 不过大多的json 插件 都是 jsonplugin.34.jar

struts2.18 自己集成了这个东东! struts2-json-plugin-2.1.8.1.jar

1.0 下载 struts2-json-plugin-2.1.8.1.jar 加入项目 (附件里面有哈)

2.0 <package name="XXX" extends="json-default" > 包

3.0 <result type="json"> 具体的action中

4.0 import org.apache.struts2.json.annotations.JSON;

@JSON(name = "goods") 属性好几个 序列化,换个名字等

@JSON(serialize=false) 对于spring 注入的 dao 或者其他属性 在其 get 方法上面 写这个

不序列化 否则 哼哼! 你挂了! (json 会对action 里面的 get 方面 封装结果的)

OK 你已经配置完毕! 可以开始用了! 祝君好运! 有问题 Email:[email protected]   


你可能感兴趣的:(jquery,Ajax,json,struts)