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

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" οnclick="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" οnclick="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中的任何一个属性.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值