`

struts2.1.6中关于JSON的配置和使用

    博客分类:
  • S2SH
阅读更多

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
示例代码如下:

Xml代码 复制代码
  1. <package name="json" namespace="/json" extends="json-default">    
  2.        <!-- 测试Json的例子 -->    
  3.        <action name="jsonTest_*" class="jsonTest" method="{1}">    
  4.            <result name="jsonres" type="json"/>    
  5.        </action>    
  6.     </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方式异步提交的.
示例代码如下:

 

Java代码 复制代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>    
  2. <%@ page contentType="text/html; charset=UTF-8"%>    
  3. <%@ taglib prefix="s" uri="/struts-tags"%>    
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">    
  5. <html>    
  6.     <head>    
  7.        <title><s:text name="%{getText('regsiterpagetitle')}" />    
  8.        </title>    
  9.        <meta http-equiv="pragma" content="no-cache">    
  10.        <meta http-equiv="cache-control" content="no-cache">    
  11.        <meta http-equiv="expires" content="0">    
  12.        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    
  13.        <meta http-equiv="description" content="This is my page">    
  14.        <SCRIPT type="text/javascript"    
  15.            src="${pageContext.request.contextPath}/common/resource/jquery-1.2.6.js"></SCRIPT>    
  16.           
  17.        <SCRIPT type="text/javascript">    
  18.            function testJosn()    
  19.            {    
  20.               $.post(    
  21.               "${pageContext.request.contextPath}/json/jsonTest_jsontest.html",    
  22.               {username:"wangsh"},    
  23.               function (data)    
  24.               {    
  25.                   window.alert(data+"=====");    
  26.                   eval("json="+data);    
  27.                   window.alert("----------"+json.username);    
  28.                   $("#testjson").html(data);    
  29.               }    
  30.               );    
  31.            }    
  32.        </SCRIPT>    
  33.     </head>    
  34.     <body>    
  35.        <a    
  36.            href="${pageContext.request.contextPath}/json/jsonTest_jsontest.html">测试Json</a>    
  37.        <button name="测试JSON" id="testbut" onclick="testJosn();">    
  38.            测试JSON    
  39.        </button>    
  40.        <div id="testjson"></div>    
  41.     </body>    
  42. </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的代码:

Java代码 复制代码
  1. package com.wang.struts2.action;    
  2.   
  3. import java.util.HashMap;    
  4. import java.util.Map;    
  5.   
  6. import org.apache.commons.logging.Log;    
  7. import org.apache.commons.logging.LogFactory;    
  8.   
  9. import com.opensymphony.xwork2.ActionSupport;    
  10.   
  11. public class JosnTestAction extends ActionSupport    
  12. {    
  13.        private Log log = LogFactory.getLog(JosnTestAction.class);    
  14.        private String username;    
  15.        private String pass;    
  16.        private Map<String, String> hashMap = new HashMap<String, String>();    
  17.   
  18.        public String getUsername()    
  19.        {    
  20.               return username;    
  21.        }    
  22.   
  23.        public void setUsername(String username)    
  24.        {    
  25.               this.username = username;    
  26.        }    
  27.   
  28.        public Map<String, String> getHashMap()    
  29.        {    
  30.               return hashMap;    
  31.        }    
  32.   
  33.        public void setHashMap(Map<String, String> hashMap)    
  34.        {    
  35.               this.hashMap = hashMap;    
  36.        }    
  37.   
  38.        public String getPass()    
  39.        {    
  40.               return pass;    
  41.        }    
  42.   
  43.        public void setPass(String pass)    
  44.        {    
  45.               this.pass = pass;    
  46.        }    
  47.   
  48.        public String jsontest() throws Exception    
  49.        {    
  50.               hashMap.put("name"this.getUsername());    
  51.               hashMap.put("pass""qihuan");    
  52.               this.setPass("这是密码啊Password");    
  53.               log.info("===========测试JSON============");    
  54.               return "jsonres";    
  55.        }    
  56. }   
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方法)的.
我们可以采用简单的两行代码

Js代码 复制代码
  1. eval("json="+data);//将JSON转化为一个对象,并且名为joson    
  2. window.alert("----------"+json.username);//打印出Username的值    
  3. window.alert("----------"+json.hashMap.pass);//拿到的是Map中的某个值.   
eval("json="+data);//将JSON转化为一个对象,并且名为joson 
window.alert("----------"+json.username);//打印出Username的值 
window.alert("----------"+json.hashMap.pass);//拿到的是Map中的某个值. 

 
可以很方便的取得JSON中的任何一个属性.

分享到:
评论

相关推荐

    Struts2.1.6中关于JSON的配置和使用

    1,需要把jsonplugin-0.33.jar拷贝到Web-INF/lib目录下....2,在struts2.1.6的配置文件中进行配置,就是返回的类型是json,并且要为JSON数据单独创建一个Package,继承的包不再是struts-default,而是json-default

    struts2.1.6利用convention-plugin和json-plugin实现json零配置

    NULL 博文链接:https://fish119.iteye.com/blog/542614

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    另外三大框架的添加顺序也需要注意下,我的添加顺序是 struts2.1.6、spring2.0、hibernate3.2 spring版本差异(包方面)没有研究过,大致雷同,也应该保持版本一致,即在同一个稳定发行包中下载的包。 以下包后面跟...

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    jquery和struts2结合使用的jar包

    Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2+json+junit4所有的jar包大集合

    Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2+json+junit4所有的jar包,总共32个!

    Struts2.1.6+Hibernate3.3.1+Spring2.5.6整合jar包

    Struts2.1.6+Hibernate3.3.1+Spring2.5.6整合无冲突jar包

    struts-json.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漏洞升级到2.3.2

    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-...

    struts2+juery+ajax+json+进度条显示

    在原来的项目中集成juery的ajax功能,返回json串,结果报了一大堆版本冲突以及jar包缺失的问题,在网上查了老半天资料终于成功了,附传资源包以及我做的小例子大家共享下,注意版本一定要对应上。另外在ajax等待页面...

    json资源jsonplugin-0.33,2.1.8,2.1.6

    包含各种json资源包,json jsonplugin-0.33 struts2-json-plugin-2.1.8.1 struts2-json-plugin-2.1.6

    struts2所需jar包(另加入支持spring和json的两个包)

    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完成根据条件返回对象案例

    Struts-JSON-Jquery完成根据...提醒: 关于JAR包冲突,各位在使用中一定要注意,特别是xwork,版本如果是xwork-core-2.1.6以下可能会出问题 2),如果想查看没有返回值时的效果,在action中屏蔽user=getUserInfo()即可

    struts2的jar

    在struts2.1.6之前的版本: 添加相应的json包:json-lib.jar jsonplugin.jar 这里要注意很重要的一点,因为json大量引用了Apache commons的包,所以这里要一并加入

    最新Struts2 jar 架包

    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表达式语言...

    struts2的rest风格插件实例

    将 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 格式的数据,...

    Jquery flexigrid使用

    struts2.1.6+spring+hibernate+jquery+flexigrid+thickbox+mysql Struts2返回Json类型,分页显示在flexigrid表中 下载后进行评价获得积分:评价时要选择五角星才能获取积分,不然分数还是会被扣除

    struts必须jar包

    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.jar

    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表达式语言...

    struts2-extended-jars

    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; ...

    web项目常用jar包及说明.zip

    1.commons-fileupload.jar(commons项目中的关于文件上传的包, struts2.1.6版本后必须加入此文件) 2.commons-io.jar(commons项目(commons项目就是java中一些常用的公共的组件)的io子项目,是处理异常的) 3....

Global site tag (gtag.js) - Google Analytics