`
huanxin2008
  • 浏览: 1107 次
社区版块
存档分类
最新评论

Struts2 + Ajax + JSON 整合

    博客分类:
  • Ajax
 
阅读更多

首先,我会想到以下两个问题:

1、Web端是如何通过Ajax发送异步请求的?又如何接收Server端响应的JSON数据?

2、Server端收到请求后,如何返回JSON数据?

 

一、使用Ajax发送异步请求,并接收Server端传回的响应数据:

 

先看JSP页面代码:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
	<head>
		<title>Struts+Ajax+JSON</title>
		<script type="text/javascript" src="ajax.js"></script>
	</head>
	<body>
		<h3>Struts2 + Ajax + JSON 整合</h3>
		<form action="json" method="get">
			username:<input type="text" id="username" name="user.username" /><br/>
			password:<input type="text" id="password" name="user.password" /><br/>
			<input type="button" onclick="getEmail()" value="查看Email"/><br />
		</form>
		<p>您的Email地址为:<span id="email"></span></p>
	</body>
</html>

   

前端实现Ajax的JS代码:

//创建XMLHttpRequest对象
function createXMLHttpRequest() {
	var xmlhttp;
	if(window.XMLHttpRequest) {
		xmlhttp = new XMLHttpRequest();
	} else {
		if(window.ActionXObject) {
			xmlhttp = new ActionXObject("Microsoft.XMLHTTP");
		} else {
			xmlhttp = new ActionXObject("Msxml2.XMLHTTP");
		}
	}
	return xmlhttp;
}

//发送GET请求
function sendGetRequest(url,callback){
	var xmlhttp = createXMLHttpRequest();
	xmlhttp.open("GET", url, true);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				//获取服务器的响应数据
				var data = xmlhttp.responseText;
				callback(data);
			} 
		} 
	};
	xmlhttp.send(null);
}

//获取Email地址
function getEmail() {
	var username = document.getElementById("username").value;
	var password = document.getElementById("password").value;
	var url = "json?user.username=" + username + "&user.password=" + password; 
	sendGetRequest(url, function(data){
		var obj = eval("(" + data + ")");
		document.getElementById("email").innerHTML = obj.user.email;
	});
}

 

 二、使用Struts2处理异步请求并返回JSON数据:

 

Struts2中的Action代码:

package com.json.action;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.apache.struts2.ServletActionContext;
import com.json.dto.User;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
	
	private User user;

	//此方法的返回类型为void
	public void execute() throws IOException {
		//打印请求中的user参数
		System.out.println(user.getUsername() + ":" + user.getPassword());
		
		//---发送JSON数据---
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		user.setEmail("user1234@qq.com");
		//创建JSON对象
		JSONObject json = new JSONObject();
		//把User对象放入Json对象中		
		json.accumulate("user", user);
		//把Json对象转成字符串并写入响应流
		out.print(json.toString());
		//可以打印JSON文本看一看
		System.out.print(json.toString());
		out.flush();
		out.close();
	}
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
}

 

Action中的User类的代码:

package com.json.dto;

public class User {
	private String username;
	private String password;
	private String email;
	
	public User() {}
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

 

struts.xml文件的配置: 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC 
	"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 
	"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="user" extends="struts-default">
		<action name="json" 
			class="com.json.action.UserAction" method="execute">
		</action>
	</package>
</struts> 

 

J2EE开发中使用JSON时需要导入以下5个jar包:

---------------------------------------

commons-lang-2.4.jar

commons-logging-1.1.1.jar

json-lib-2.4-jdk15.jar

ezmorph-1.0.6.jar

commons-collections-3.2.1.jar

---------------------------------------

已全部打包在附件内:

分享到:
评论

相关推荐

    ZTree+Struts2+ajax+json实现checkbox权限树

    综上所述,这个项目展示了如何整合前端的ZTree、Struts2框架,以及Ajax和JSON技术,实现一个动态的、基于checkbox的权限树,优化了权限管理的用户体验,同时通过存储过程减少了对数据库的频繁访问,提升了系统性能。

    用案例学Java Web整合开发:Java+Eclipse+Struts 2+Ajax

    Java Web整合开发是构建Web应用程序的关键技术,涵盖了Java语言、Eclipse集成开发环境(IDE)、Struts 2框架以及Ajax异步JavaScript和XML技术。这个主题深入探讨了这些技术如何协同工作,创建出高效、用户友好的Web...

    struts2+ajax+easyui+json+datagrid增删改查

    Struts2、Ajax、EasyUI、JSON 和 DataGrid 是现代Web开发中常用的技术组合,用于构建功能丰富的交互式用户界面。下面将详细解释这些技术及其在实现增删改查、分页和排序功能中的作用。 **Struts2** 是一个基于MVC...

    json2+jsonplugin struts2整合ajax时,使用json时需要的jar包

    在Struts2框架中整合Ajax以实现异步数据交互,JSON(JavaScript Object Notation)扮演了关键角色。JSON是一种轻量级的数据交换格式,它允许Web应用与服务器之间高效地传输数据,而无需进行繁琐的HTTP请求。在这个...

    struts2+json+ajax整合例子(导入即可运行,附带详细教程)

    Struts2、JSON和AJAX是Web开发中的关键技术,它们的整合可以实现高效的数据交互和动态页面更新。本文将深入探讨这些技术以及如何在实际项目中整合它们。 **Struts2** 是一个基于MVC(Model-View-Controller)设计...

    Struts+Jquery+Ajax+Json应用实例

    Struts、jQuery、Ajax以及JSON是Web开发中的四个关键技术,它们在构建动态、交互式的Web应用程序中发挥着重要...这就是Struts、jQuery、Ajax和JSON在实际应用中的典型整合,实现了前后端的无刷新通信,提高了用户体验。

    struts2+easyUI+ajax+json用户登验证

    Struts2、EasyUI、Ajax 和 JSON 是现代Web开发中常用的技术栈,它们结合使用可以构建出高效、交互性强的用户界面。以下是对这些技术及其在用户登录验证中的应用的详细解释。 **Struts2** 是一个基于MVC(Model-View...

    Struts2+Spring+Hibernate+Ehcache+AJAX+JQuery+Oracle 框架集成用户登录注册Demo工程

    3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录进行显示。 5.单数据源配置(兼容Tomcat和Weblogic)。 6.Hibernate...

    当当网struts2+ajax+css

    【当当网struts2+ajax+css】项目是一个基于Struts2框架、结合Ajax和jQuery技术实现的电商网站简化版。这个项目旨在提供一个学习和实践的平台,帮助开发者了解如何将这些技术有效地整合到实际应用中。下面将详细阐述...

    struts2+extjs+json整合实例

    在Struts2和ExtJS整合中,JSON起到桥梁作用,将服务器端的Action产生的数据转换为JSON格式,然后由ExtJS前端解析并显示在界面上。 整合Struts2、ExtJS和JSON的步骤通常包括以下几个部分: 1. **设置Struts2的JSON...

    struts2+json+ajax

    Struts2、JSON和Ajax是...通过理解Struts2、JSON和Ajax的基本原理,以及它们在实际项目中的整合方式,开发者可以构建出更加高效、交互性更强的Web应用。这个小例子就是一个很好的起点,帮助初学者理解和实践这些技术。

    struts2+jquery+json+ajax

    Struts2、jQuery、JSON和Ajax是Web开发中常见的技术栈,它们在构建动态、交互式的Web应用程序中扮演着重要角色。这篇博文可能是介绍如何将这些技术整合到一起,以提高用户界面的响应性和用户体验。 Struts2是一个...

    struts2+jquery+json+ajax的使用

    总结来说,这个"ProductSystem"项目通过整合Struts2、jQuery、JSON和Ajax技术,实现了高效的前后端数据交互,提供了动态的用户界面,是学习和实践这些技术的好例子。通过深入理解并实践这个项目,开发者可以更好地...

    struts2+spring+hibernate+jquery+json

    结合以上技术,"struts2+spring+hibernate+jquery+json"的整合使用意味着开发一个完整的、高效的Web应用。Struts2负责处理HTTP请求并调用业务逻辑,Spring提供依赖管理和数据访问支持,Hibernate作为持久化层与...

    struts2+json+jquery实现ajax数据的存取

    "Struts2+JSON+jQuery实现Ajax数据的存取"就是一个典型的示例,它结合了强大的MVC框架Struts2、轻量级的数据交换格式JSON以及高效的前端库jQuery,以实现网页上的无刷新数据交互。下面将详细介绍这三个技术及其在...

    struts2+json/ajax

    通过这种整合,开发者可以利用Struts2的强大功能处理后端业务逻辑,同时利用Ajax和JSON实现快速、无刷新的前端交互,提高用户体验。在实际开发中,还应注意安全问题,如防止XSS和CSRF攻击,以及正确处理JSONP跨域...

    一个简单的struts2+json+jquery 交互的例子

    当用户界面触发某个事件(比如点击按钮),jQuery会发起Ajax请求,Struts2 Action执行相关逻辑并生成JSON响应,最后jQuery将数据插入到网页中,完成一次完整的交互。 总结来说,这个例子展示了如何利用Struts2处理...

    Struts2之ajax初析的并结合jquery一个例子

    Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单,并且可以简单的融入到Struts2框架中,...

    Struts1.1+spring2.5+ibatis2.3+Ajax整合的源代码

    Struts1.1+Spring2.5+Ibatis2.3+Ajax整合是一个经典的Java Web开发框架组合,常用于构建企业级应用。这个源代码集合提供了如何将这四个技术有效地结合在一起的实例,以实现一个功能强大的、具有无刷新特性的用户界面...

    struts2+jquery+json 小例子

    - **前端交互**:jQuery通过AJAX与后台Struts2 Action通信,发送JSON请求并接收JSON响应。 - **数据展示**:Struts2 Action处理完业务逻辑后,返回JSON结果,jQuery解析后动态更新DOM展示数据。 博客链接中提到的...

Global site tag (gtag.js) - Google Analytics