☆Struts2+JQuery+Json整合


一:前台界面

1.index.jsp

<%@ page language="java" pageEncoding="GBK"%>
<%
	String path = request.getContextPath();
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>Struts2+JQuery+JSON</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	
	
	<script type="text/javascript" src="<%=path %>/js/jquery-1.7.1.min.js"></script>
	<script type="text/javascript" src="<%=path %>/js/index.js"></script>
	
	
  </head>
  
  <body>
    <input id="getMessage" type="button" value="获取单个值"/>  
    <input id="getUserInfo" type="button" value="获取UserInfo对象"/>  
    <input id="getList" type="button" value="获取List对象"/>  
    <input id="getMap" type="button" value="获取Map对象"/>  
    <br>
    <br>
      <input id="getStr" type="button" value="==>传递获取Str==>"/>  
    <br>
    <!-- 要显示信息的层 -->
    <div id="message"></div>
    <form>
    	用户ID:<input name="userInfo.userId" type="text"/><br/>
    	用户名:<input name="userInfo.userName" type="text"/><br/>
    	密   码:<input name="userInfo.password" type="text"/><br>
    	<input id="regRe" type="button" value="注册"/>
    </form>
  </body>
</html>

2.index.js

//初始加载页面时
$(document).ready(function(){
	//为获取单个值的按钮注册鼠标单击事件
	$("#getMessage").click(function(){
		$.getJSON("jsontest!returnMessage.action",function(data){
			//通过.操作符可以从data.message中获得Action中message的值
			$("#message").html("<font color='red'>"+data.message+"</font>");
		});
	});
	//为获取UserInfo对象按钮添加鼠标单击事件
	$("#getUserInfo").click(function(){
		$.getJSON("jsontest!returnUserInfo.action",function(data){
			//清空显示层中的数据
			$("#message").html("");
			//为显示层添加获取到的数据
			//获取对象的数据用data.userInfo.属性
			$("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")
					     .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")
					     .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")
		});
	});
	//为获取List对象按钮添加鼠标单击事件
	$("#getList").click(function(){
		$.getJSON("jsontest!returnList.action",function(data){
			//清空显示层中的数据
			$("#message").html("");
			//使用jQuery中的each(data,function(){});函数
			//从data.userInfosList获取UserInfo对象放入value之中
			$.each(data.userInfosList,function(i,value){
				$("#message").append("<div>第"+(i+1)+"个用户:</div>")
						 .append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")
					     .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")
					     .append("<div><font color='red'>密码:"+value.password+"</font></div>");
			});
		});
	});
	//为获取Map对象按钮添加鼠标单击事件
	$("#getMap").click(function(){
		$.getJSON("jsontest!returnMap.action",function(data){
			//清空显示层中的数据
			$("#message").html("");
			//使用jQuery中的each(data,function(){});函数
			//从data.userInfosList获取UserInfo对象放入value之中
			//key值为Map的键值
			$.each(data.userInfosMap,function(key,value){
				$("#message").append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")
					     .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")
					     .append("<div><font color='red'>密码:"+value.password+"</font></div>");
			});
		});
	});
	//向服务器发送表达数据
	$("#regRe").click(function(){
		//把表单的数据进行序列化
		var params = $("form").serialize();
		//使用jQuery中的$.ajax({});Ajax方法
		$.ajax({
			url:"jsontest!gainUserInfo.action",
			type:"POST",
			data:params,
			dataType:"json",
			success:function(data){
				//清空显示层中的数据
			$("#message").html("");
			//为显示层添加获取到的数据
			//获取对象的数据用data.userInfo.属性
			$("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")
					     .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")
					     .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")
			}
		});
	});
	
	
	//==>向服务器发送字串,加工后带回
	$("#getStr").click(function(){
		//使用jQuery中的$.ajax({});Ajax方法
		$.ajax({
			url:"jsontest!returnStr.action",
			type:"POST",
			data:"message="+"m1"+"&message222="+"m2",
			dataType:"json",
			success:function(data){
				//清空显示层中的数据
				$("#message").html("");
				//为显示层添加获取到的数据
				$("#message").html("<font color='red'>"+data.message+"</font>");
			}
		});
	});	
	//==>向服务器发送字串,加工后带回
	
});






二:后台Struts2处理

1.JsonJqueryAction.java

package com.jsonjquery.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import com.jsonjquery.dao.IJsonJqueryDao;
import com.jsonjquery.model.UserInfo;
import com.jsonjquery.service.IJsonJqueryService;
import com.opensymphony.xwork2.ActionSupport;

public class JsonJqueryAction extends ActionSupport {

	private static final long serialVersionUID = 3518833679938898354L;
	
	private IJsonJqueryService jsonJqueryService;

	private String message;		//使用json返回单个值
	//==>第二个参数
	private String message222;		
	//==>第二个参数
	private UserInfo userInfo; 		//使用json返回对象
	private List<UserInfo> userInfosList;		//使用josn返回List对象
	private Map<String,UserInfo> userInfosMap; 	//使用json返回Map对象
	//为上面的的属性提供get,Set方法
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
	public UserInfo getUserInfo() {
		return userInfo;
	}
	public void setUserInfo(UserInfo userInfo) {
		this.userInfo = userInfo;
	}
	public List<UserInfo> getUserInfosList() {
		return userInfosList;
	}
	public void setUserInfosList(List<UserInfo> userInfosList) {
		this.userInfosList = userInfosList;
	}
	public Map<String, UserInfo> getUserInfosMap() {
		return userInfosMap;
	}
	public void setUserInfosMap(Map<String, UserInfo> userInfosMap) {
		this.userInfosMap = userInfosMap;
	}
	public String getMessage222() {
		return message222;
	}
	public void setMessage222(String message222) {
		this.message222 = message222;
	}
	public IJsonJqueryService getJsonJqueryService() {
		return jsonJqueryService;
	}
	public void setJsonJqueryService(IJsonJqueryService jsonJqueryService) {
		this.jsonJqueryService = jsonJqueryService;
	}

	
	
	/**
	 * <p>
	 * 	返回单个值
	 * <p>
	 * @return
	 */
	public String returnMessage(){
		this.message = "Ajax返回单个值";//jsonJqueryService.returnMessage();
		return "message";
	}
	/**
	 * <p>
	 * 	返回UserInfo对象
	 * </p>
	 * @return
	 */
	public String returnUserInfo(){
		userInfo = new UserInfo();
		userInfo.setUserId(10000);
		userInfo.setUserName("张三");
		userInfo.setPassword("000000");
		return "userInfo";
	}
	/**
	 * <p>
	 * 	返回List对象
	 * </p>
	 * @return
	 */
	public String returnList(){
		userInfosList = new ArrayList<UserInfo>();
		UserInfo u1 = new UserInfo();
		u1.setUserId(10000);
		u1.setUserName("张三");
		u1.setPassword("000000");
		UserInfo u2 = new UserInfo();
		u2.setUserId(10001);
		u2.setUserName("李四");
		u2.setPassword("111111");
		UserInfo u3 = new UserInfo();
		u3.setUserId(10002);
		u3.setUserName("王五");
		u3.setPassword("222222");
		UserInfo u4 = new UserInfo();
		u4.setUserId(10003);
		u4.setUserName("赵六");
		u4.setPassword("333333");
		userInfosList.add(u1);
		userInfosList.add(u2);
		userInfosList.add(u3);
		userInfosList.add(u4);
		return "list";
	}
	/**
	 * <p>
	 * 	返回Map对象
	 * </p>
	 * @return
	 */
	public String returnMap(){
		userInfosMap = new HashMap<String,UserInfo>();
		UserInfo u1 = new UserInfo();
		u1.setUserId(10000);
		u1.setUserName("张三");
		u1.setPassword("000000");
		UserInfo u2 = new UserInfo();
		u2.setUserId(10001);
		u2.setUserName("李四");
		u2.setPassword("111111");
		UserInfo u3 = new UserInfo();
		u3.setUserId(10002);
		u3.setUserName("王五");
		u3.setPassword("222222");
		UserInfo u4 = new UserInfo();
		u4.setUserId(10003);
		u4.setUserName("赵六");
		u4.setPassword("333333");
		userInfosMap.put(u1.getUserId()+"", u1);
		userInfosMap.put(u2.getUserId()+"", u2);
		userInfosMap.put(u3.getUserId()+"", u3);
		userInfosMap.put(u4.getUserId()+"", u4);
		return "map";
	}
	/**
	 * <p>
	 * 	获得对象,也就是通过表达获得对象(异步的)
	 * </P>
	 * @return
	 */
	public String gainUserInfo(){
		System.out.println("用户ID:"+userInfo.getUserId());
		System.out.println("用户名:"+userInfo.getUserName());
		System.out.println("密码:"+userInfo.getPassword());
		return "userInfo";
	}


	
	//==>前台传来str加工后返回
	//==>特别要注意函数命名: 不能以get/set开头
	public String returnStr(){
		this.message = message +"_" + message222 + "_" +"加工ed";
		return "message";
	}
	//==>前台传来str加工后返回
}


2.struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

	<package name="default" namespace="/" extends="json-default">
	    	<action name="jsontest" class="com.jsonjquery.action.JsonJqueryAction">
	    		<!-- 返回单个值的result -->
	    		<result name="message" type="json"></result>
	    		<!-- 返回UserInfo对象的 -->
	    		<result name="userInfo" type="json"></result>
	    		<!-- 返回List对象的 -->
	    		<result name="list" type="json"></result>
	    		<!-- 返回Map对象的 -->
	    		<result name="map" type="json"></result>
	    	</action>
	    </package>

</struts>    


3.UserInfo.java

package com.jsonjquery.model;

import java.io.Serializable;
/**
 * <p>
 * 	用户实体类
 * </p>
 *
 */
public class UserInfo implements Serializable {

	private static final long serialVersionUID = 3952189513312630860L;
	
	private int userId;
	private String userName;
	private String password;
	public int getUserId() {
		return userId;
	}
	public void setUserId(int userId) {
		this.userId = userId;
	}
	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;
	}
}

















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值