Action
package org.sdibt.group.action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.sdibt.group.entity.User;
@ParentPackage("struts-default")//继承那个父类
@Namespace(value="/login")//命名空间
public class LoginAction {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
/**
* 判断用户登录
* @return
* @throws IOException
*/
@Action(value="login")
public void login() throws IOException{
//得到httpservlet里的response
HttpServletResponse response = ServletActionContext.getResponse();
PrintWriter out = response.getWriter();
/*
* 判断用户名和密码是否正确
* 这里只是做测试,用户名和密码是伪造的。
*/
if (user.getUserName().equals("zhangsan")&&user.getUserPassword().equals("ok")) {
out.print("{\"mess\":\"success\"}");//返回也是一个json对象
}else {
out.print("{\"mess\":\"fail\"}");//返回一个json对象
}
//关闭资源
out.close();
}
}
jsp页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="js/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
$(function(){
$("#btn").click(function(){
var ff=$("#fff").serialize();//将表单里的数据序列化
alert(ff);//打印一下
$.ajax({
url:"/strutsweb/login/login",
type:"post",
dataType:"json",//返回的类型必须为json
data:ff,//数据为序列化之后的。
success:function(data){
//data.mess是返回的json对象里面的值(在action里面设置)
if(data.mess=="success"){
//成功后页面跳转到登陆成功界面
window.location.href="/strutsweb/success.jsp";
}else{
//如果失败就在当前页面显示
$("#sp").css({"color":"red"});
$("#sp").html("用户名或密码错误");
}
}
})
});//单击事件
});
</script>
<title>Insert title here</title>
</head>
<body>
<form action="/strutsweb/login/login" id="fff" method="post">
<h1>用户登录:</h1>
用户名:<input id="usern" type="text" name="user.userName"/><br>
密码:<input id="pass" type="password" name="user.userPassword"/><br>
<span id="sp"></span><br>
<input id="btn" type="button" value="登陆"/>
</form>
</body>
</html>
User是一个实体类。
这样做的方法主要是将Action当做一个servlet。Action里面的方法返回值不再是String,而是void,因为返回String,必定要跳转页面,但是ajax不要跳转页面,所以返回 类型要改为void。
这种方式不需要配置文件(struts.xml),并且ParentPackage("struts-default")也不需要继承json-default