日期:2014-05-20  浏览次数:20787 次

struts2 和ajax 结合,实现登录验证的问题!
模块简述:做一个登录验证,由于开始的框架是ssh2,最开始只是初步搭建起页面,当要实现登录验证(验证用户名密码是否错误、验证用户名密码框是否为空)的时候,选择了ajax在前台向后台传递数据,然后通过action来进行验证用户为空(返回null,因为ajax和struts2结合,不能刷新页面,刚好我判断的是用户不存在的情况下,由AJAX向前台返回out.print(),再通过回调函数来alert)

问题描述:一切都没有问题,唯一一个疑惑百思不得其解,当我netUser 验证不为null的时候,可以return “success”,进入主菜单,但是为什么我用if限制了条件,netUser 已经不为null了,但是还是会alert一下,才进入主页面,一下为代码:


public String execute() throws IOException {

Net_User netUser = netUserService.autheication(username, password);//验证方法


HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html; charset=utf-8");
//response.setHeader("Cache-Control", "no-cache");// 清除缓存
//response.addHeader("pragma", "no-cache"); 
//response.addHeader("cache-control", "no-cache,must-revalidate"); 
//response.addHeader("expires", "0"); 



String username_test =ServletActionContext.getRequest().getParameter( "username");
String password_test =ServletActionContext.getRequest().getParameter( "password");
PrintWriter out = null;
out = response.getWriter();

if (netUser == null && (username_test !="" ) &&( password_test  !="" )){
//response.setHeader("Cache-Control", "no-cache");// 清除缓存
System.out.println(netUser);
out.print(1); //这里出现问题,当我netUser 不为空,还是会alert
return null;

}else if ((netUser == null && username_test == ""&& password_test !="") ||(netUser == null && password_test == ""&& username_test !="") ||(netUser == null && username_test == ""&& password_test =="")) {
//response.setHeader("Cache-Control", "no-cache");// 清除缓存
out.print(2);
return null;

}



response.setHeader("Cache-Control", "no-cache");// 清除缓存
ServletActionContext.getRequest().getSession().setAttribute("user",
netUser);
String test = netUser.getProvince();
String test1 = netUser.getCity();
String test2 = netUser.getDistrict();
String test3 = netUser.getStreet();
String test4 = netUser.getStreetname();
String test5 = netUser.getSerialnumber();
String test6 = netUser.getPower();
System.out.println(test + "," + test1 + "," + test2 + "," + test3 + ","
+ test4 + "," + test5 + "," + test6);
System.out.println("good !");

return "success";//这里出现问题,当我netUser 不为空,还是会alert,对应上面的条件

}






var xmlHttp;

function createXmlHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}

function ver() {
//1:创建XMLHttpRequest对象
createXmlHttpRequest();
//2:取出要传递的值
var username = document.getElementById("username").value;
var url = "login.action?action=loginAction&username=" + username
+ "&timestamp=" + new Date().getTime();