JSON的优点众所周知,在此不作叙述.
JSON在AJAX的应该比较的多些,下面结合一下struts2.1.6和大家分享一下
1,需要把jsonplugin-0.33.jar拷贝到Web-INF/lib目录下.
关于这个JAR包是JSON在struts2.1.6插件包.里面有我们要用到的struts-plugin.xml,关于这个JAR包,经过本人的测试和网上的搜索,得出最新的0.7版本在cglib方面存在着问题,建议大家使用0.33版本.
2,在struts2.1.6的配置文件中进行配置,就是返回的类型是json,并且要为JSON数据单独创建一个Package,继承的包不再是struts-default,而是json-default
示例代码如下:
- <package name="json" namespace="/json" extends="json-default">
-
-
<action name="jsonTest_*" class="jsonTest" method="{1}">
-
<result name="jsonres" type="json"/>
-
</action>
-
</package>
<package name="json" namespace="/json" extends="json-default">
<!-- 测试Json的例子 -->
<action name="jsonTest_*" class="jsonTest" method="{1}">
<result name="jsonres" type="json"/>
</action>
</package>
3,前台页面用Ajax接收到的是JSON数据格式,
{"hashMap":{"name":"wangsh","pass":"qihuan"},"pass":"这是密码啊Password","username":"wangsh"}.
本人的前采用的是Jquery1.2.6中的Ajax Post方式异步提交的.
示例代码如下:
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
-
<%@ page contentType="text/html; charset=UTF-8"%>
-
<%@ taglib prefix="s" uri="/struts-tags"%>
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
-
<title><s:text name="%{getText('regsiterpagetitle')}" />
- </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="${pageContext.request.contextPath}/common/resource/jquery-1.2.6.js"></SCRIPT>
-
-
<SCRIPT type="text/javascript">
- function testJosn()
- {
- $.post(
-
"${pageContext.request.contextPath}/json/jsonTest_jsontest.html",
-
{username:"wangsh"},
- function (data)
- {
-
window.alert(data+"=====");
-
eval("json="+data);
-
window.alert("----------"+json.username);
-
$("#testjson").html(data);
- }
- );
- }
- </SCRIPT>
- </head>
- <body>
- <a
-
href="${pageContext.request.contextPath}/json/jsonTest_jsontest.html">测试Json</a>
-
<button name="测试JSON" id="testbut" onclick="testJosn();">
- 测试JSON
- </button>
-
<div id="testjson"></div>
- </body>
- </html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><s:text name="%{getText('regsiterpagetitle')}" />
</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="${pageContext.request.contextPath}/common/resource/jquery-1.2.6.js"></SCRIPT>
<SCRIPT type="text/javascript">
function testJosn()
{
$.post(
"${pageContext.request.contextPath}/json/jsonTest_jsontest.html",
{username:"wangsh"},
function (data)
{
window.alert(data+"=====");
eval("json="+data);
window.alert("----------"+json.username);
$("#testjson").html(data);
}
);
}
</SCRIPT>
</head>
<body>
<a
href="${pageContext.request.contextPath}/json/jsonTest_jsontest.html">测试Json</a>
<button name="测试JSON" id="testbut" onclick="testJosn();">
测试JSON
</button>
<div id="testjson"></div>
</body>
</html>
可能细心的朋友已看到了:
eval("json="+data);
window.alert("----------"+json.username);
以上的代码是何义呢?
Data是Action返回的数据.
以下是Action的代码:
- package com.wang.struts2.action;
-
-
import java.util.HashMap;
-
import java.util.Map;
-
-
import org.apache.commons.logging.Log;
-
import org.apache.commons.logging.LogFactory;
-
-
import com.opensymphony.xwork2.ActionSupport;
-
-
public class JosnTestAction extends ActionSupport
- {
-
private Log log = LogFactory.getLog(JosnTestAction.class);
-
private String username;
-
private String pass;
-
private Map<String, String> hashMap = new HashMap<String, String>();
-
-
public String getUsername()
- {
-
return username;
- }
-
-
public void setUsername(String username)
- {
-
this.username = username;
- }
-
-
public Map<String, String> getHashMap()
- {
-
return hashMap;
- }
-
-
public void setHashMap(Map<String, String> hashMap)
- {
-
this.hashMap = hashMap;
- }
-
-
public String getPass()
- {
-
return pass;
- }
-
-
public void setPass(String pass)
- {
-
this.pass = pass;
- }
-
-
public String jsontest() throws Exception
- {
-
hashMap.put("name", this.getUsername());
-
hashMap.put("pass", "qihuan");
-
this.setPass("这是密码啊Password");
-
log.info("===========测试JSON============");
-
return "jsonres";
- }
- }
package com.wang.struts2.action;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.opensymphony.xwork2.ActionSupport;
public class JosnTestAction extends ActionSupport
{
private Log log = LogFactory.getLog(JosnTestAction.class);
private String username;
private String pass;
private Map<String, String> hashMap = new HashMap<String, String>();
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public Map<String, String> getHashMap()
{
return hashMap;
}
public void setHashMap(Map<String, String> hashMap)
{
this.hashMap = hashMap;
}
public String getPass()
{
return pass;
}
public void setPass(String pass)
{
this.pass = pass;
}
public String jsontest() throws Exception
{
hashMap.put("name", this.getUsername());
hashMap.put("pass", "qihuan");
this.setPass("这是密码啊Password");
log.info("===========测试JSON============");
return "jsonres";
}
}
也就是说服务器返加在的数据是所有的Action属性,当然要提供读写器(get和Set方法)的.
我们可以采用简单的两行代码
- eval("json="+data);
-
window.alert("----------"+json.username);
-
window.alert("----------"+json.hashMap.pass);
eval("json="+data);//将JSON转化为一个对象,并且名为joson
window.alert("----------"+json.username);//打印出Username的值
window.alert("----------"+json.hashMap.pass);//拿到的是Map中的某个值.
可以很方便的取得JSON中的任何一个属性.
分享到:
相关推荐
1,需要把jsonplugin-0.33.jar拷贝到Web-INF/lib目录下....2,在struts2.1.6的配置文件中进行配置,就是返回的类型是json,并且要为JSON数据单独创建一个Package,继承的包不再是struts-default,而是json-default
NULL 博文链接:https://fish119.iteye.com/blog/542614
另外三大框架的添加顺序也需要注意下,我的添加顺序是 struts2.1.6、spring2.0、hibernate3.2 spring版本差异(包方面)没有研究过,大致雷同,也应该保持版本一致,即在同一个稳定发行包中下载的包。 以下包后面跟...
jquery和struts2结合使用的jar包
Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2+json+junit4所有的jar包,总共32个!
Struts2.1.6+Hibernate3.3.1+Spring2.5.6整合无冲突jar包
json-lib-2.2.1-jdk15.jar, ognl-2.7.3.jar, struts2-core-2.1.8.1.jar, struts2-json-plugin-2.2.1.jar, xwork-core-2.1.6.jar 避免版本不一致导致的问题,将我项目中所涉及的包上传分享以供下载~
struts2-json-plugin-2.3.20.jar xwork-core-2.3.20.jar ognl-3.0.6.jar javassist-3.11.0.GA commons-lang3-3.2.jar 2、 删除的jar包 struts2-core-2.1.8.1.jar struts2-spring-plugin-2.1.8.1.jar xwork-core-...
在原来的项目中集成juery的ajax功能,返回json串,结果报了一大堆版本冲突以及jar包缺失的问题,在网上查了老半天资料终于成功了,附传资源包以及我做的小例子大家共享下,注意版本一定要对应上。另外在ajax等待页面...
包含各种json资源包,json jsonplugin-0.33 struts2-json-plugin-2.1.8.1 struts2-json-plugin-2.1.6
struts2开发需要的jar包有commons-fileupload-1.2.1.jar,commons-logging-1.1.3.jar,freemarker-...另外加入了对spring和json支持的两个jar包:struts2-spring-plugin-2.1.8.1.jar和struts2-json-plugin-2.1.8.jar
Struts-JSON-Jquery完成根据...提醒: 关于JAR包冲突,各位在使用中一定要注意,特别是xwork,版本如果是xwork-core-2.1.6以下可能会出问题 2),如果想查看没有返回值时的效果,在action中屏蔽user=getUserInfo()即可
在struts2.1.6之前的版本: 添加相应的json包:json-lib.jar jsonplugin.jar 这里要注意很重要的一点,因为json大量引用了Apache commons的包,所以这里要一并加入
xwork-core-2.1.6.jar Command模式框架,WebWork和Struts2都基于xworkcommons-logging-1.0.4.jar Java日志工具类包 freemarker-2.3.15.jar 表现层框架,定义了struts2的可视组件主题 ognl-2.7.3.jar OGNL表达式语言...
将 Struts 2 项目下 struts2-convention-plugin-2.1.6.jar、struts2-rest-plugin-2.1.6.jar 两个 JAR 包复制到 Web 应用的 WEB-INF/lib 路径下。 由于 Struts 2 的 REST 插件还需要将提供 XML、JSON 格式的数据,...
struts2.1.6+spring+hibernate+jquery+flexigrid+thickbox+mysql Struts2返回Json类型,分页显示在flexigrid表中 下载后进行评价获得积分:评价时要选择五角星才能获取积分,不然分数还是会被扣除
xwork-core-2.1.6.jar Command模式框架,WebWork和Struts2都基于xworkcommons-logging-1.0.4.jar Java日志工具类包 freemarker-2.3.15.jar 表现层框架,定义了struts2的可视组件主题 ognl-2.7.3.jar OGNL表达式语言...
xwork-core-2.1.6.jar Command模式框架,WebWork和Struts2都基于xworkcommons-logging-1.0.4.jar Java日志工具类包 freemarker-2.3.15.jar 表现层框架,定义了struts2的可视组件主题 ognl-2.7.3.jar OGNL表达式语言...
struts-json-plugin-2.1.8.jar; xwork-core-2.1.6.jar; xwork-core-2.2.1.jar; commons-io-1.3.2.jar; freemarker-2.3.16.jar; ognl-2.7.3.jar; ognl-3.0.jar; commons-pool.jar; commons-fileupload-1.2.1.jar; ...
1.commons-fileupload.jar(commons项目中的关于文件上传的包, struts2.1.6版本后必须加入此文件) 2.commons-io.jar(commons项目(commons项目就是java中一些常用的公共的组件)的io子项目,是处理异常的) 3....