需要实现的功能是前端页面输入用户名,密码点击登录后如果输入正确转发到WEB-INF下的页面.如果输入错误则提示用户
思路:因为输入错误时需要用ajax局刷新技术提示用户.所以此处需要用ajax来传输数据
难点:这里棘手的地方在于验证用户名和密码正确时需要跳转到WEB-INF下的页面,因为基础不够扎实,一开 始一直在尝试在前端页面直接转发页面,事实上要转发到WEB-INF下的页面只能通过后台实现,所以此处ajax在收到后台的登录成功通知后访问welcome方法,在该方法中实现页面的跳转
方法:
1.前端页面在输入用户名和密码后点登录时调用ajax函数并将用户名和密码传至后台
function submit(){
var loginName = document.getElementById("loginName").value;
var loginPwd = document.getElementById("loginPwd").value;
$.ajax({
type: "post",
url: "${base}/doLogin",
data: {"loginName":loginName,"loginPwd":loginPwd},
dataType: "json",
async: false,
success:function(data){
var type = data.result_msg;
var login = data.login;
if (type.toString() == "1"){
location.href = "${base}/login!welcome?id="+login.id;
} else {
alert(data.result_msg);
}
},
error: function() {
alert("查询出错,请稍后再试");
}
});
}
2.struts 配置
<!-- 点击个人中心的登录 -->
<action name="login" class="com.vrswkj.action.LoginAction">
<result type="freemarker" name="login">/login.ftl</result>
<result type="freemarker" name="welcome">/WEB-INF/pages/welcome.ftl</result>
</action>
<!-- 个人中心之校验用户名密码 -->
<action name="doLogin" class="com.vrswkj.action.LoginAction" method="doLogin">
<result type="json">
<param name="root">dataMap</param>
</result>
</action>
3.java类
public String doLogin() {
dataMap = new HashMap<String, Object>();
Login loginTemp = new Login();
loginTemp.setLoginName(loginName);
loginTemp.setLoginPwd(loginPwd);
login = loginService.getLogin(loginTemp);
if (login != null) {
dataMap.put("login", login);
dataMap.put("result_msg", "1");// 1代表用户名和密码正确,可以登录
} else {
dataMap.put("result_msg", "用户名或者密码错误");
}
return SUCCESS;
}
public String welcome() {
Login loginTemp = new Login();
loginTemp.setId(id);
login = loginService.getLogin(loginTemp);
return "welcome";
}