• S2SH整合JQuery+Ajax实现登录验证功能 . 天高地厚


    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  没有什么实际意义 主要是防止缓存影响异步刷新。。。初稿,功能实现了,后面可以慢慢改

  • 相关阅读:
    centos6.8添加crontab定时启动任务
    centos7用户最大进程限制导致的问题排查
    centos ftp 服务器搭建
    centos6.8的坑
    华为云centos服务器挂载云硬盘
    华为云windows开启特定端口
    华为云centos上命令
    排查机器服务无法使用步骤
    高(0.10.X以上版本)低(0.10.X以下版本)版本kafka如何共存
    PHP array_column重新构建二维数组
  • 原文地址:https://www.cnblogs.com/net2012/p/2886321.html
Copyright © 2020-2023  润新知