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中的任何一个属性.
分享到:
相关推荐
在这个版本中,Struts引入了两个重要的插件:Convention Plugin和JSON Plugin,使得JSON支持和配置简化成为可能。接下来,我们将深入探讨这两个插件的功能和如何在实际项目中应用它们。 **Convention Plugin**: ...
Struts2.1.6-Lib: 深入理解Struts2框架核心与库文件 Struts2是一个流行的开源MVC(Model-View-Controller)框架,它为Java Web应用...在实际项目中,根据具体需求选择和配置这些库,可以进一步优化应用的性能和功能。
以下是关于Struts2.1.6版本的一些关键知识点: 1. **MVC架构**:Struts2遵循MVC设计模式,将应用分为模型、视图和控制器三个部分,使得代码结构清晰,易于维护。模型负责业务逻辑,视图负责显示结果,控制器则协调...
Struts 2.1.6支持XML和注解两种方式进行配置,使得配置更加灵活。 3. **Action**:Action是业务逻辑的载体,负责处理用户请求并返回结果。在Struts 2中,Action类可以是任何实现了Action接口或者继承自...
总的来说,Struts2.1.6提供了一套完善的Java Web开发解决方案,它的灵活性和强大的功能使其在众多Web框架中占有一席之地。然而,随着技术的发展,Struts2后续的版本已经修复了大量安全漏洞,因此在新的项目中,可能...
5. **日志和配置**: - `log4j.jar`:Log4j日志框架,用于记录应用运行过程中的信息,帮助调试和监控。 - `struts2-config-browser-plugin.jar`:配置浏览器插件,用于可视化查看和编辑Struts2的配置信息。 以上...
总之,Struts2.1.6版本是一个简洁但功能强大的Web开发框架,它通过灵活的配置和强大的插件体系,为开发者提供了高效、便捷的Java Web应用开发工具。在实际项目中,开发者可以根据需求选择合适的配置方式和扩展插件,...
在实际开发中,使用Struts2.1.6时,开发者需要理解以下关键概念和机制: - **Action类**:这是业务逻辑的载体,每个Action类对应一个用户请求,处理完业务逻辑后返回一个结果。 - **结果类型**:定义了Action执行后...
Struts2.1.6-all.zip 是一个包含Struts2框架版本2.1.6所有库文件的压缩包,主要用于Java Web开发。Struts2是一个开源的MVC(Model-View-Controller)框架,它继承了经典的Struts1框架,并在功能、性能和灵活性上进行...
在使用Struts 2.1.6时,需要了解其配置文件(struts.xml或struts-default.xml),Action类的设计,以及结果类型和拦截器的使用。此外,Struts 2的注解功能和约定优于配置(Convention over Configuration)原则也是...
在Struts2.1.6中,这通常通过`struts.xml`配置文件来实现。 3. **Interceptor**:拦截器是Struts2中的一个重要概念,它们在Action执行前后执行一些预处理或后处理任务,如日志记录、权限验证等。开发者可以自定义...
使用Struts2.1.6时,开发者需要根据项目需求选择合适的jar包和插件,并结合Struts2的配置文件(通常为struts.xml)进行应用的搭建和定制。此外,Struts2的安全性也是需要注意的一点,比如它曾出现过一个著名的远程...
通过深入研究Struts2.1.6的源代码,开发者可以学习到如何设计和实现一个高效、可扩展的MVC框架,理解其设计模式,如工厂模式、装饰者模式、责任链模式等,并能更好地利用框架提供的功能,提高开发效率。同时,对源...
- **拦截器**:Struts 2中的拦截器是实现业务逻辑和控制逻辑分离的重要机制,可以进行权限验证、日志记录、事务管理等操作。 - **Action与结果**:Action是业务逻辑的载体,处理用户请求并返回结果。结果则定义了...
在本文中,我们将深入探讨Struts2.1.6的关键特性、应用场景以及如何配置和使用这个版本。 首先,Struts2的核心特性包括: 1. **Action与Result**:Action是处理用户请求的业务逻辑组件,而Result则是Action执行后...
在这个特定的压缩包"struts2.1.6-7jar"中,包含了七个关键的JAR文件,这些文件是运行基于Struts2.1.6的Web应用所必需的。下面将详细介绍这七个JAR文件及其在Struts2框架中的作用。 1. **struts2-core.jar**:这是...
另外三大框架的添加顺序也需要注意下,我的添加顺序是 struts2.1.6、spring2.0、hibernate3.2 spring版本差异(包方面)没有研究过,大致雷同,也应该保持版本一致,即在同一个稳定发行包中下载的包。 以下包后面跟...
Struts2.1.6是Apache软件基金会的开源框架Struts2的一个版本,它基于Model-View-Controller(MVC)设计模式,主要用于构建Java Web应用程序。这个版本的发布为开发者提供了一系列示例应用,帮助他们更好地理解和学习...