前段时间做项目用到了json,今天我抽时间写了一个struts+ajax+json的例子.
个人感觉ajax+json在很大程度上降低了网络和服务器的IO,是一个很不错的组合!
1:json的lib我用的是json-lib-2.1-jdk15.jar,它可以在
2:struts用的是1.2
3:用到了js第三方prototype.js,主要用它包装的ajax对象,大家也没必要用这个,可以直接在js里用XMLHttpRequest。
以下是例子中所用到的相关文件:
Java代码
/////////////////////////////////////// toolhxw.js
/**
@hxw 20080602
*/
//回调函数 简单回调函数
function showesay(dataResponse)
{
var data = eval('(' + dataResponse.responseText + ')');
var str='';
str+='<ul>';
str+='<li>'+data.param1;+'</li>';
str+='<li>'+data.param2;+'</li>';
str+='</ul>';
document.getElementById("content").innerHTML=str;
}
//回调函数 复杂回调函数
function showcomplex(dataResponse)
{
var data = eval('(' + dataResponse.responseText + ')');
var str='';
for(var i=0;i<data.js.length;i++)
{
str+='<ul>';
str+='<li>'+data.js[i].id+'</li>';
str+='<li>'+data.js[i].age+'</li>';
str+='<li>'+data.js[i].name+'</li>';
str+='<li>'+data.js[i].address+'</li>';
str+='</ul>';
}
document.getElementById("content").innerHTML=str;
}
//获取简单的json数据
function getesay(){
var url = 'test.do';
var pars = 'method=getEasy';
var ajax = new Ajax.Request(
url,
{method:'post',parameters:pars,onComplete:showesay}
);
}
//获取对象级复杂数据
function getcomplex(){
var url = 'test.do';
var pars = 'method=getComplex';
var ajax = new Ajax.Request(
url,
{method:'post',parameters:pars,onComplete:showcomplex}
);
}
///////////////////////////////////////struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings >
<action path="/test" parameter="method" type="com.json.struts.action.TestAction">
</action>
</action-mappings>
<message-resources parameter="com.json.struts.ApplicationResources" />
</struts-config>
////////////////////////////////TestAction.java
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.json.struts.action;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import net.sf.json.*;
/**
* @author hxw
*
*/
public class TestAction extends DispatchAction {
/**
* 获取简单组合数据
*/
public ActionForward getEasy(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html; charset=GBK");
try
{
PrintWriter out = response.getWriter();
//这里的数据拼装一般是从数据库查询来的
JSONObject jsonObject = new JSONObject();
jsonObject.put("param1", "变量一");
jsonObject.put("param2", "变量二");
out.print(jsonObject.toString());
out.flush();
out.close();
return null;
}catch(Exception e)
{
e.printStackTrace();
return null;
}
}
/**
* 获取复杂组合数据
*/
public ActionForward getComplex(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html; charset=GBK");
try
{
PrintWriter out = response.getWriter();
JSONObject obj = new JSONObject();
JSONArray js = new JSONArray();
//这里的数据拼装一般是从数据库查询来的
for(int i=0;i<3;i++)
{
JSONObject objtemp = new JSONObject();
objtemp.put("id", i);
objtemp.put("age", "23");
objtemp.put("name", "test"+i);
objtemp.put("address", "test");
js.add(objtemp);
}
obj.put("js",js);
out.print(obj.toString());
}catch(Exception e)
{
e.printStackTrace();
System.out.print("消费明细json存储异常");
}
return null;
}
}
////////////////////////////test.jsp
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>json练习</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="js/prototype.js"></script>
<script type="text/javascript" src="js/toolhxw.js"></script>
</head>
<body>
<div id="func" >
<a href='javascript:getesay()'>获取简单组合数据</a>
<a href='javascript:getcomplex()'>获取复杂组合数据</a>
</div>
<div id="content">
正在获取内容...
</div>
</body>
</html>
/////////////////////////////////////// toolhxw.js
/**
@hxw 20080602
*/
//回调函数 简单回调函数
function showesay(dataResponse)
{
var data = eval('(' + dataResponse.responseText + ')');
var str='';
str+='<ul>';
str+='<li>'+data.param1;+'</li>';
str+='<li>'+data.param2;+'</li>';
str+='</ul>';
document.getElementById("content").innerHTML=str;
}
//回调函数 复杂回调函数
function showcomplex(dataResponse)
{
var data = eval('(' + dataResponse.responseText + ')');
var str='';
for(var i=0;i<data.js.length;i++)
{
str+='<ul>';
str+='<li>'+data.js[i].id+'</li>';
str+='<li>'+data.js[i].age+'</li>';
str+='<li>'+data.js[i].name+'</li>';
str+='<li>'+data.js[i].address+'</li>';
str+='</ul>';
}
document.getElementById("content").innerHTML=str;
}
//获取简单的json数据
function getesay(){
var url = 'test.do';
var pars = 'method=getEasy';
var ajax = new Ajax.Request(
url,
{method:'post',parameters:pars,onComplete:showesay}
);
}
//获取对象级复杂数据
function getcomplex(){
var url = 'test.do';
var pars = 'method=getComplex';
var ajax = new Ajax.Request(
url,
{method:'post',parameters:pars,onComplete:showcomplex}
);
}
///////////////////////////////////////struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings >
<action path="/test" parameter="method" type="com.json.struts.action.TestAction">
</action>
</action-mappings>
<message-resources parameter="com.json.struts.ApplicationResources" />
</struts-config>
////////////////////////////////TestAction.java
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.json.struts.action;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import net.sf.json.*;
/**
* @author hxw
*
*/
public class TestAction extends DispatchAction {
/**
* 获取简单组合数据
*/
public ActionForward getEasy(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html; charset=GBK");
try
{
PrintWriter out = response.getWriter();
//这里的数据拼装一般是从数据库查询来的
JSONObject jsonObject = new JSONObject();
jsonObject.put("param1", "变量一");
jsonObject.put("param2", "变量二");
out.print(jsonObject.toString());
out.flush();
out.close();
return null;
}catch(Exception e)
{
e.printStackTrace();
return null;
}
}
/**
* 获取复杂组合数据
*/
public ActionForward getComplex(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html; charset=GBK");
try
{
PrintWriter out = response.getWriter();
JSONObject obj = new JSONObject();
JSONArray js = new JSONArray();
//这里的数据拼装一般是从数据库查询来的
for(int i=0;i<3;i++)
{
JSONObject objtemp = new JSONObject();
objtemp.put("id", i);
objtemp.put("age", "23");
objtemp.put("name", "test"+i);
objtemp.put("address", "test");
js.add(objtemp);
}
obj.put("js",js);
out.print(obj.toString());
}catch(Exception e)
{
e.printStackTrace();
System.out.print("消费明细json存储异常");
}
return null;
}
}
////////////////////////////test.jsp
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>json练习</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="js/prototype.js"></script>
<script type="text/javascript" src="js/toolhxw.js"></script>
</head>
<body>
<div id="func" >
<a href='javascript:getesay()'>获取简单组合数据</a>
<a href='javascript:getcomplex()'>获取复杂组合数据</a>
</div>
<div id="content">
正在获取内容...
</div>
</body>
</html>
大家将这几个文件拷贝到你的myeclipse的web项目中,发布运行即可。
分享到:
相关推荐
总的来说,这个实例展示了如何在Struts和AJAX环境中使用JSON进行数据交互。通过AJAX,前端可以异步地向服务器发送请求,获取JSON数据,然后在不刷新整个页面的情况下更新部分视图。而Struts框架则负责处理请求,调用...
本资源提供了一个完整的 Ajax+Struts 应用的源码,这为我们深入理解这两种技术的结合提供了宝贵的实例。 Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页的...
本项目是关于“Ajax+Struts”实现分页的一个实例,旨在利用这两种技术的优势,提供一个高效、动态且用户友好的分页解决方案。 首先,让我们来理解一下核心概念: 1. **Ajax(Asynchronous JavaScript and XML)**...
6. Struts2与Ajax的集成,使用JQuery的$.ajax()或$.getJSON()方法 7. 请求与响应的处理,包括参数传递和数据封装 8. 实例演示:使用Struts2+Jquery+Ajax实现动态加载数据或表单验证 "struts2 jar"文件包含了Struts2...
总结来说,这个实例演示了如何利用Ajax、JSON和Struts2框架在客户端与服务器之间传递和展示List数据,无需刷新整个页面。通过这种方式,可以提高用户体验,使Web应用更加动态和交互性更强。在实际开发中,这样的技术...
在"Struts+Jquery+Ajax+Json应用实例"中,前端使用jQuery库来监听用户事件,比如点击按钮。当事件触发时,jQuery通过Ajax发送一个HTTP请求到后端的Struts Action。在Struts框架中,这个Action会处理请求,执行必要的...
在这个实例中,“整合jquery+json+struts2异步提交”是一个典型的前端与后端交互的示例,利用了jQuery的Ajax功能和Struts2框架处理JSON数据。下面我们将详细探讨这些技术及其相互配合的工作原理。 **jQuery** 是一...
【Java+Ajax+Struts2的Web网页聊天】是一个典型的前后端交互的Web应用程序实例,主要结合了Java后端处理、Ajax异步通信以及Struts2框架的技术来实现即时通讯功能。下面将详细阐述这三个技术在构建Web网页聊天中的...
这个压缩包中的资源,"SSH+jQuery+json 实现的Ajax操作,绝对精华,代码简练清晰,绝对能看明白",显然提供了一个使用这些技术实现Ajax级联操作的实例。下面将详细介绍这些技术及其在Ajax操作中的应用。 **SSH ...
例如,Struts2可以通过Action类返回JSON格式的结果,前端JavaScript或者jQuery可以通过Ajax请求获取这些数据,然后动态更新页面。这种模式下,Struts2负责服务器端的业务处理和数据封装,而jQuery则在客户端处理数据...
实例”是针对初学者的一个项目,旨在帮助他们理解并掌握如何在Eclipse开发环境中,结合Struts框架来运用Ajax技术。下面我们将详细探讨这一主题。 首先,我们需要了解Ajax的基本概念。Ajax的核心是通过JavaScript与...
学会struts+jq+ajax+json只要4步‵‵经过作者的总结超级简单 1. 导入struts2 及json包 asm-3.3.jar asm-commons-3.3.jar asm-tree-3.3.jar commons-fileupload-1.2.2.jar commons-io-2.0.1.jar commons-lang3-3.1....
在示例中,Struts2处理Ajax请求,返回必要的JSON或XML数据,供前端JavaScript进行解析和展示。 4. **tabpanel**:tabpanel是一种用户界面元素,允许在一个固定的空间内展示多个视图或内容面板。用户可以通过点击...
在本例中,Struts2将与ExtJS交互,接收前端的Ajax请求,调用后端服务,执行CRUD操作,并将结果以JSON或其他格式返回给前端。Struts2的拦截器机制也使得我们可以方便地添加自定义的业务逻辑或验证规则。 最后,ExtJS...
**AjaxStruts2Json实例详解** 在Web开发中,用户界面的实时性和互动性变得越来越重要,这使得异步更新技术如Ajax(Asynchronous JavaScript and XML)被广泛应用。Ajax允许网页在不重新加载整个页面的情况下与...
使用Struts2和jQuery EasyUI实现简单CRUD系统,从零开始,从基础的ajax与Struts2的使用json格式进行交互开始。
Struts2、Hibernate3、JQuery、Ajax以及Json是Web开发中的重要技术栈,它们各自在Web应用程序中扮演着不同的角色。在这个“三级联动”项目中,这些技术被巧妙地结合在一起,实现了数据的动态交互和展示。 Struts2是...
本实例展示了如何在Struts2框架下,通过Ajax发送请求获取JSON数据,并将数据返回到JSP页面,以填充下拉列表(`<s:select/>`标签)。 1. **Struts2配置**: 在`struts.xml`配置文件中,我们需要定义一个Action,...
在Flexigrid实例中,服务器端的Struts2将处理后的数据转换为JSON格式,这些数据包括表格所需的行数据、列信息等,然后通过Ajax请求发送给前端。 jQuery是一个广泛使用的JavaScript库,简化了HTML文档遍历、事件处理...
在这个"struts1+JSON实例"中,我们将深入探讨如何结合Struts1、JSON以及Ajax技术来实现一个功能丰富的学生选课系统。 首先,我们需要理解数据库设计的基础知识。在MySQL中,学生选课系统可能包括如下的表:`...