天高地厚

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

S2SH整合JQuery+Ajax实现登录验证功能 .

Posted on 2013-01-31 09:11  天高地厚-GNU  阅读(1044)  评论(0编辑  收藏  举报

action

  1. package com.lk.action;  
  2.   
  3.   
  4.   
  5. import javax.annotation.Resource;  
  6.   
  7. import com.googlecode.jsonplugin.annotations.JSON;  
  8. import com.lk.service.StudentControl;  
  9. import com.opensymphony.xwork2.ActionSupport;  
  10.   
  11. public class LoginAjaxAction extends ActionSupport {  
  12.   
  13.     private String username;  
  14.     private StudentControl studentControl;  
  15.   
  16.     @JSON(serialize=false//setStudentControl利用了spring,很重要,让studentControl不序列化,如果序列化会报错   
  17.     public StudentControl getStudentControl() {//这个错,找了好久...ajax一直返回error   
  18.         return studentControl;  
  19.     }  
  20.   
  21.     @Resource(name="studentControl")  
  22.     public void setStudentControl(StudentControl studentControl) {  
  23.         this.studentControl = studentControl;  
  24.     }  
  25.   
  26.   
  27.     public String getUsername() {  
  28.         return username;  
  29.     }  
  30.   
  31.   
  32.     public void setUsername(String username) {  
  33.         this.username = username;  
  34.     }  
  35.   
  36.   
  37.     @Override  
  38.     public String execute() throws Exception {  
  39.         if(studentControl.getStudentById(Integer.parseInt(username))!=null){  
  40.             username = "用户存在";  
  41.         }else{  
  42.             username = "用户不存在";  
  43.         }  
  44.           
  45.         return "success";  
  46.     }  
  47. }  
package com.lk.action;



import javax.annotation.Resource;

import com.googlecode.jsonplugin.annotations.JSON;
import com.lk.service.StudentControl;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAjaxAction extends ActionSupport {

	private String username;
	private StudentControl studentControl;

	@JSON(serialize=false) //setStudentControl利用了spring,很重要,让studentControl不序列化,如果序列化会报错
	public StudentControl getStudentControl() {//这个错,找了好久...ajax一直返回error
		return studentControl;
	}

	@Resource(name="studentControl")
	public void setStudentControl(StudentControl studentControl) {
		this.studentControl = studentControl;
	}


	public String getUsername() {
		return username;
	}


	public void setUsername(String username) {
		this.username = username;
	}


	@Override
	public String execute() throws Exception {
		if(studentControl.getStudentById(Integer.parseInt(username))!=null){
			username = "用户存在";
		}else{
			username = "用户不存在";
		}
		
		return "success";
	}
}


上面的最重要的就是那个 @JSON(serialize=false)  。。。上面有注释。。。。

 

struts.xml

  1. <package name="ajax" extends="json-default">  
  2.        <action name="loginAjax" class="com.lk.action.LoginAjaxAction">  
  3.            <result type="json" />  
  4.        </action>              
  5.    </package>  
 <package name="ajax" extends="json-default">
        <action name="loginAjax" class="com.lk.action.LoginAjaxAction">
            <result type="json" />
        </action>            
    </package>


这里要说的就是 json-default是继承自struts-default ....

 

login.html

  1. //用户名 绑定的事件 焦点的移入和移出  
  2.             $("#un").bind({  
  3.                 focus:function(){  
  4.                     $(this).addClass("txtclick");  
  5.                 },  
  6.                 blur:function(){  
  7.                     var vtxt = $("#un").val();  
  8.                     if (vtxt.length == 0) {  
  9.                         $("#unerror").html("用户名不能为空");  
  10.                         $(this).removeClass("txtclick");   
  11.                       }else if(!isInteger(vtxt)){  
  12.                         //检测用户名格式是否正确    
  13.                         $("#unerror").html("格式不正确!");  
  14.                         $(this).removeClass("txtclick");   
  15.                       }else{  
  16.                         $.ajax({  
  17.                             url : "loginAjax",  
  18.                             dataType : "json",  
  19.                             data : {  
  20.                                 username : $(this).val(),  
  21.                                 time : Math.random()*1000  
  22.                             },  
  23.                             success : function(data){  
  24.                                 alert("成功"+data.username);  
  25.                             },  
  26.                             error : function(){  
  27.                                 alert("错误");  
  28.                             }  
  29.                         })  
  30.                       }  
  31.                     }  
  32.             });  
//用户名 绑定的事件 焦点的移入和移出
          	$("#un").bind({
          		focus:function(){
          			$(this).addClass("txtclick");
          		},
          		blur:function(){
          			var vtxt = $("#un").val();
          			if (vtxt.length == 0) {
                        $("#unerror").html("用户名不能为空");
                        $(this).removeClass("txtclick"); 
                  	  }else if(!isInteger(vtxt)){
                        //检测用户名格式是否正确  
                        $("#unerror").html("格式不正确!");
                        $(this).removeClass("txtclick"); 
                   	  }else{
                    	$.ajax({
                    		url : "loginAjax",
                    		dataType : "json",
                    		data : {
                    			username : $(this).val(),
                    			time : Math.random()*1000
                    		},
                    		success : function(data){
								alert("成功"+data.username);
							},
							error : function(){
								alert("错误");
							}
                    	})
                      }
          			}
          	});

上面的 time : Math.random()*1000  没有什么实际意义 主要是防止缓存影响异步刷新。。。初稿,功能实现了,后面可以慢慢改