`

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利用convention-plugin和json-plugin实现json零配置

    在这个版本中,Struts引入了两个重要的插件:Convention Plugin和JSON Plugin,使得JSON支持和配置简化成为可能。接下来,我们将深入探讨这两个插件的功能和如何在实际项目中应用它们。 **Convention Plugin**: ...

    struts2.1.6-lib

    Struts2.1.6-Lib: 深入理解Struts2框架核心与库文件 Struts2是一个流行的开源MVC(Model-View-Controller)框架,它为Java Web应用...在实际项目中,根据具体需求选择和配置这些库,可以进一步优化应用的性能和功能。

    struts2.1.6 所有jar包和源码

    以下是关于Struts2.1.6版本的一些关键知识点: 1. **MVC架构**:Struts2遵循MVC设计模式,将应用分为模型、视图和控制器三个部分,使得代码结构清晰,易于维护。模型负责业务逻辑,视图负责显示结果,控制器则协调...

    struts-2.1.6-sources

    Struts 2.1.6支持XML和注解两种方式进行配置,使得配置更加灵活。 3. **Action**:Action是业务逻辑的载体,负责处理用户请求并返回结果。在Struts 2中,Action类可以是任何实现了Action接口或者继承自...

    Struts2.1.6 jar包

    总的来说,Struts2.1.6提供了一套完善的Java Web开发解决方案,它的灵活性和强大的功能使其在众多Web框架中占有一席之地。然而,随着技术的发展,Struts2后续的版本已经修复了大量安全漏洞,因此在新的项目中,可能...

    struts2.1.6lib

    5. **日志和配置**: - `log4j.jar`:Log4j日志框架,用于记录应用运行过程中的信息,帮助调试和监控。 - `struts2-config-browser-plugin.jar`:配置浏览器插件,用于可视化查看和编辑Struts2的配置信息。 以上...

    struts2.1.6

    总之,Struts2.1.6版本是一个简洁但功能强大的Web开发框架,它通过灵活的配置和强大的插件体系,为开发者提供了高效、便捷的Java Web应用开发工具。在实际项目中,开发者可以根据需求选择合适的配置方式和扩展插件,...

    struts2.1.6架包

    在实际开发中,使用Struts2.1.6时,开发者需要理解以下关键概念和机制: - **Action类**:这是业务逻辑的载体,每个Action类对应一个用户请求,处理完业务逻辑后返回一个结果。 - **结果类型**:定义了Action执行后...

    Struts2.1.6-all.zip (lib)

    Struts2.1.6-all.zip 是一个包含Struts2框架版本2.1.6所有库文件的压缩包,主要用于Java Web开发。Struts2是一个开源的MVC(Model-View-Controller)框架,它继承了经典的Struts1框架,并在功能、性能和灵活性上进行...

    struts-2.1.6_jar包(全)

    在使用Struts 2.1.6时,需要了解其配置文件(struts.xml或struts-default.xml),Action类的设计,以及结果类型和拦截器的使用。此外,Struts 2的注解功能和约定优于配置(Convention over Configuration)原则也是...

    struts2.1.6所有jar包

    在Struts2.1.6中,这通常通过`struts.xml`配置文件来实现。 3. **Interceptor**:拦截器是Struts2中的一个重要概念,它们在Action执行前后执行一些预处理或后处理任务,如日志记录、权限验证等。开发者可以自定义...

    struts2.1.6的jar包

    使用Struts2.1.6时,开发者需要根据项目需求选择合适的jar包和插件,并结合Struts2的配置文件(通常为struts.xml)进行应用的搭建和定制。此外,Struts2的安全性也是需要注意的一点,比如它曾出现过一个著名的远程...

    struts2.1.6 源代码

    通过深入研究Struts2.1.6的源代码,开发者可以学习到如何设计和实现一个高效、可扩展的MVC框架,理解其设计模式,如工厂模式、装饰者模式、责任链模式等,并能更好地利用框架提供的功能,提高开发效率。同时,对源...

    最新 struts 2.1.6 jar 包

    - **拦截器**:Struts 2中的拦截器是实现业务逻辑和控制逻辑分离的重要机制,可以进行权限验证、日志记录、事务管理等操作。 - **Action与结果**:Action是业务逻辑的载体,处理用户请求并返回结果。结果则定义了...

    struts2.1.6必须架包

    在本文中,我们将深入探讨Struts2.1.6的关键特性、应用场景以及如何配置和使用这个版本。 首先,Struts2的核心特性包括: 1. **Action与Result**:Action是处理用户请求的业务逻辑组件,而Result则是Action执行后...

    struts2.1.6 必须的7个jar包

    在这个特定的压缩包"struts2.1.6-7jar"中,包含了七个关键的JAR文件,这些文件是运行基于Struts2.1.6的Web应用所必需的。下面将详细介绍这七个JAR文件及其在Struts2框架中的作用。 1. **struts2-core.jar**:这是...

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

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

    struts2.1.6apps

    Struts2.1.6是Apache软件基金会的开源框架Struts2的一个版本,它基于Model-View-Controller(MVC)设计模式,主要用于构建Java Web应用程序。这个版本的发布为开发者提供了一系列示例应用,帮助他们更好地理解和学习...

Global site tag (gtag.js) - Google Analytics