`
jimb
  • 浏览: 95594 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

view plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
<package name="json" namespace="/json" extends="json-default">   
    <!-- 测试Json的例子 -->   
    <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方式异步提交的.
示例代码如下:
view plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
<%@ 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" mce_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" mce_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" mce_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" mce_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的代码:

view plaincopy to clipboardprint?
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);//将JSON转化为一个对象,并且名为joson
window.alert("----------"+json.username);//打印出Username的值
window.alert("----------"+json.hashMap.pass);//拿到的是Map中的某个值.
可以很方便的取得JSON中的任何一个属性.

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/minjiaren/archive/2009/06/01/4232246.aspx

分享到:
评论

相关推荐

    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