前台使用$.ajax()发送json数据,服务器响应后返回json数据实例(struts2+json+action)

    最近在做ping++,用到了服务端接收前端的json并且响应后发回json格式数据到前端的功能。现在就把我写的例子贴在这里,供大家参考。

下面是项目结构图:
下面是项目结构图
需要的jar:
需要的jar

//首先,贴上前端的代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
	$("#btnSend").click(function() {		
		$.ajax({
			type : "POST",
			url : '<%=basePath%>user/SendJsonAction.action',
			contentType : "application/json; charset=utf-8",
			data : JSON.stringify(GetJsonData()),
			dataType : "json",
			success : function(message) {
			    alert("从前端到后台再回来获取到的数据:"+message.id+" "+message.name+" "+message.age);				
			},
			error : function(message) {
				alert("提交数据失败!");
			}
		});
	});

	function GetJsonData() {
		var json = {
			"id" : "1",
			"name" : "zzc",
			"age" : "23"
		};
		return json;
	}
	
</script>  

然后贴上后台action以及实体类代码:

//先上action的
package com.zzc.json.action;

import com.opensymphony.xwork2.ActionSupport;
import com.zzc.po.Person;
/**
 * 
 * @author zzc
 * 项目描述:本项目用于实现后台发送json数据到前台的功能,这是其中一种实现方式,高手勿喷。
 */
public class JsonStrutsAction extends ActionSupport{
	/**作为前端发送来的数据接收变量*/
	private String id;
	private String name;
	private String age;
	
	/**需要作为json格式发送的变量或说对象*/
	Person person=null;
	
	/**下面是对应的setter和getter方法*/
	
	public String getName() {
		return name;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	
	/**切记person也需要setter和getter,不然客户端获取到的是null*/
	public Person getPerson() {
		return person;
	}
	public void setPerson(Person person) {
		this.person = person;
	}
	public String SendJson(){
		person=new Person();
		person.setAge("年龄:"+age);//这里你也可以在客户端以person.age表示,那样这里可以去掉了,下同
		person.setId("id:"+id);
		person.setName("姓名:"+name);		
		return SUCCESS;//事实上,这种方法的重点在于action配置部分,详见struts.xml
		
	}
}
//Person实体类
package com.zzc.po;
/**实体类*/
public class Person {
	private String id;
	private String name;
	private String age;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	
	
}

再来看看struts.xml的配置,事实上这一步才是关键,前面的大家都会的

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

<struts>
	<!--开发阶段用到的常量设置 ,开发阶段结束后必须注释 -->
	<!-- 重新加载struts.xml文件 -->
	<constant name="struts.configuration.xml.reload" value="true" />
	<!-- 打印更多的错误信息,便于查找错原因 -->
	<constant name="strusts.devMode" value="true" />
	<!-- 关闭静态态缓冲 -->
	<constant name="strusts.serve.static.browserCache" value="false" />
	<!-- 结束 -->
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	
	
	<package name="pay" namespace="/user" extends="json-default,struts-default">
			
 	 <!-- 改变反馈信息状态 -->
 	 <action name="SendJsonAction" class="com.zzc.json.action.JsonStrutsAction" method="SendJson">
 	        <interceptor-ref name="json"/>
            <result name="success" type="json">
                <param name="root">person</param>
            </result> 	 
 	 </action>
 	 <!-- 可以在浏览器输入http://localhost:8888/JsonStruts/user/SendJsonAction.action,若有输出也说明发送数据成功 -->
 	</package>	
</struts> 

再贴上最无聊的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>	
  
  	<!--配置Struts2  -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
   </filter-mapping>
   <!-- Struts2结束 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值