struts2注解方式使用ajax技术

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

猜你喜欢

转载自blog.csdn.net/Quan_qqqq/article/details/80371899