Struts2+Ajax登录出现的问题请教,大神指点

AbuCoder 2019-05-19 09:47:00
今天把Struts2+spring+mybatis整合了,想用struts2实现登录时老是出错,请大家帮忙看看,万分感谢!!
出现的错误截图

User.java
public class User {
private String usernametext;
private String passwordtext;

public String getUsernametext() {
return usernametext;
}

public void setUsernametext(String usernametext) {
this.usernametext = usernametext;
}

public String getPasswordtext() {
return passwordtext;
}

public void setPasswordtext(String passwordtext) {
this.passwordtext = passwordtext;
}

@Override
public String toString() {
return "User [usernametext=" + usernametext + ", passwordtext=" + passwordtext + "]";
}

UserDao.java
public class UserDao {
public User find(User user) {
System.out.println("用户名:" + user.getUsernametext());
System.out.println("密码:" + user.getPasswordtext());
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
con = MYDBUtil.getConnection();
User user2 = null;
String sql = "select * from sa_opperson where usernametext=? and passwordtext=?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, user.getUsernametext());
pstmt.setString(2, user.getPasswordtext());
rs = pstmt.executeQuery();
if (rs.next()) {
System.out.println("进入到next");
user2 = new User();
user2.setUsernametext(rs.getString("usernametext"));
System.out.println(rs.getString("usernametext"));
user2.setPasswordtext(rs.getString("passwordtext"));
System.out.println(rs.getString("passwordtext"));
} else {
System.out.println("不知道啥情况");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
MYDBUtil.close(rs, pstmt, con);
}
return user2;
}

MianAction.java
@ParentPackage("json-default")
@Results({ @Result(type = "json") })
@Namespace("/")
public class MainAction extends ActionSupport {
private User user;
private UserDao userDao = new UserDao();
/**
*
*/
private static final long serialVersionUID = -7117776030528395774L;

@Action(value = "login")
public String execute() throws Exception {
checkLogin();
return SUCCESS;
}

private String checkLogin() throws Exception {
// 用户登录Action方法
System.out.println("开始执行");
String forward = null;
User user2 = userDao.find(user);
if (user2 != null) {
forward = "success";
System.out.println("登录成功");
} else {
forward = "failure";
System.out.println("登录失败");
}
return forward;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

AJax登陆请求
function login(){
var uname=$("#usernametext").val();
var pwd=$("#passwordtext").val();
console.log(uname+pwd);
$.ajax({
url : "/ejoin/login.action",
async : false,
type : "post",
data : {
usernametext:uname,
passwordtext:pwd
},
dataType : "json",
success : function(redata) {
console.log(redata);
},
error : function() {
alert("遇到错误!!")
}
});
}
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
AbuCoder 2019-05-26
  • 打赏
  • 举报
回复
引用 1 楼 freekaiQaQ 的回复:
很久没碰strust2了,只提供想法,不一定对哈。希望能帮到你 方法 1> 上图中的参数加上引号试试。 data : { 'usernametext':uname, 'passwordtext':pwd }, 2> loginAction 里面 引入user 属性,set 、get 方法。 ajax 传参 data : { 'user.usernametext':uname, 'user.passwordtext':pwd },
感谢您的回复。您的回复对我有了很大帮助。现在修改的代码如下 MainAction
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.apache.ibatis.session.SqlSession;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import com.ejoin.base.utils.CaptchaCodeUtil;
import com.ejoin.db.DBUtils;
import com.opensymphony.xwork2.ActionSupport;

@ParentPackage("json-default")
@Results({ @Result(type = "json") })
@Namespace("/")
public class MainAction extends ActionSupport {
	private String scode;
	private String spassword;
	private String captchainput;
	/**
	 * 
	 */
	private static final long serialVersionUID = -7117776030528395774L;

	@Action(value = "login")
	public String execute() throws Exception {
//		System.out.println(captchainput);
//		System.out.println(CaptchaCodeUtil.getCpatcha());
		if (captchainput.toUpperCase().equals(CaptchaCodeUtil.getCaptcha().toUpperCase())) {
			checkLogin();
			System.out.println("验证码正确,进行登录验证");
		} else {
			System.out.println("验证码错误");
		}
		return SUCCESS;
	}

	private boolean checkLogin() {
		String sql = "select * from sa_opperson where scode=?";
		SqlSession session = DBUtils.getSession("sa");
		try {
			PreparedStatement ps = session.getConnection().prepareStatement(sql);
			ps.setString(1, scode);
			ResultSet rs = ps.executeQuery();
			if (rs.next()) {
				String pwd = rs.getString("spassword");
				if (pwd.equals(spassword)) {
					System.out.println(scode+":登陆成功");
					return true;
				}
			}
			rs.close();
			ps.close();
//			session.commit(true);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return false;
	}


	public String getScode() {
		return scode;
	}

	public void setScode(String scode) {
		this.scode = scode;
	}

	public String getSpassword() {
		return spassword;
	}

	public void setSpassword(String spassword) {
		this.spassword = spassword;
	}

	public String getCaptchainput() {
		return captchainput;
	}

	public void setCaptchainput(String captchainput) {
		this.captchainput = captchainput;
	}

}
login.js
$(document).ready(function() {
	 createCaptcha();
})
function createCaptcha() {
	//初始化验证码显示
	var img=document.getElementById("captcha_iamage");
	img.src="/ejoin/getSecurityCode.action"
	img.onclick=function(){
		var date=new Date().getTime();
		img.src="/ejoin/getSecurityCode.action?tmp="+date;
	}
}
function login() {
	var uname = $("#usernametext").val();
	var pwd = $("#passwordtext").val();
	var pwd_md5=hex_md5(pwd);
	var captchainput=$("#captcha_input").val();
	$.ajax({
		url : "/ejoin/login.action",
		type : "post",
		data : {
			'scode' : uname,
			'spassword' : pwd_md5,
			'captchainput' : captchainput
		},
		dataType : "json",
		success : function(redata) {
			console.log(redata);
		},
		error : function() {
			alert("遇到错误,请检查!!")
		}
	});
}
后续的代码就不上传了 效果图
freekaiQaQ 2019-05-20
  • 打赏
  • 举报
回复
报错信息提示的还算清楚的。 NPE -->UserDao 12行。 --> 说明 数据库连接对象 conn 为null 。 还有 sql中占位符传入参数的数据格式有问题。 可以把sql 打印出来看一看。
freekaiQaQ 2019-05-20
  • 打赏
  • 举报
回复
引用 2 楼 Rahman510 的回复:
[quote=引用 1 楼 freekaiQaQ 的回复:] 报错信息提示的还算清楚的。 NPE -->UserDao 12行。 --> 说明 数据库连接对象 conn 为null 。 还有 sql中占位符传入参数的数据格式有问题。 可以把sql 打印出来看一看。
你好,感谢您的回复。这种不是前段传过来的值接收不到么?那个第12行是我贴的代码12行,不是报错那个的12行,请看下面那个图。麻烦您了。 [/quote] 很久没碰strust2了,只提供想法,不一定对哈。希望能帮到你 方法 1> 上图中的参数加上引号试试。 data : { 'usernametext':uname, 'passwordtext':pwd }, 2> loginAction 里面 引入user 属性,set 、get 方法。 ajax 传参 data : { 'user.usernametext':uname, 'user.passwordtext':pwd },
AbuCoder 2019-05-20
  • 打赏
  • 举报
回复
引用 1 楼 freekaiQaQ 的回复:
报错信息提示的还算清楚的。 NPE -->UserDao 12行。 --> 说明 数据库连接对象 conn 为null 。 还有 sql中占位符传入参数的数据格式有问题。 可以把sql 打印出来看一看。
你好,感谢您的回复。这种不是前段传过来的值接收不到么?那个第12行是我贴的代码12行,不是报错那个的12行,请看下面那个图。麻烦您了。

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧