Struts2 框架总结(六) :ajax+json(注解方式)

使用xml配置文件配置ajax+json

使用ajax请求action

action界面要默认继承的包要是json-default

这里做一个简单的ajax验证登录功能,请求action就不需要返回字符串类型了

ajax的dataType如果是json,那么后台返回的界面一定要是json格式,不然可能不会执行回调函数

前台页面:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<% String base=request.getContextPath()+"/"; %>
<base href="base">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
$(function(){
	$("#submitButton").click(function(){
		//表单序列化,得到所有参数
		var params=$("#ff").serialize();
		$.ajax({
			url:"ajax/ajaxLogin",
			data:params,
			dataType:'json',
			type:"POST",
			success:function(data){
				alert(data.message)
			}
		})
	})	
})
	
</script>
</head>
<body>
	<form id="ff">
		<label>请输入账号:</label> <input type="text" name="username" />
		<label>请输入密码:</label> <input type="password" name="password" />		
		<button type="submit" id="submitButton">登录</button>
	</form>
</body>
</html>

后台:

package sdibt.fly.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;

@Namespace("/ajax")
@ParentPackage("json-default")
public class AjaxAction {
	private String username;
	private String password;
	
	@Action(value="ajaxLogin")
	public void ajaxLogin() throws IOException{
		System.out.println(username);
		System.out.println(password);
		
		HttpServletResponse response = ServletActionContext.getResponse();//获取response
		PrintWriter out = response.getWriter();//获取输出流
		out.print("{\"message\":\"ok\"}");
		out.close();
	}	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

如果后台界面要给前台传一个对象,可以用阿里的fastjson将对象转换成json字符串

User user = new User();
 user.setUsername(username);

user.setPassword(password)

String objJson = JSON.toJSONString(user);//转成json格式{"password":"wqe ","username":"ok"}

如果将集合转成json就是这样的格式

JSON.toJSONString(list)

[{"password":"we ","username":"ok"},{"password":"we ","username":"ww"}]

前台读取集合的json

success:function(data){
    alert(data[0].username)
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值