首先,我会想到以下两个问题:
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的权限树,优化了权限管理的用户体验,同时通过存储过程减少了对数据库的频繁访问,提升了系统性能。
Java Web整合开发是构建Web应用程序的关键技术,涵盖了Java语言、Eclipse集成开发环境(IDE)、Struts 2框架以及Ajax异步JavaScript和XML技术。这个主题深入探讨了这些技术如何协同工作,创建出高效、用户友好的Web...
Struts2、Ajax、EasyUI、JSON 和 DataGrid 是现代Web开发中常用的技术组合,用于构建功能丰富的交互式用户界面。下面将详细解释这些技术及其在实现增删改查、分页和排序功能中的作用。 **Struts2** 是一个基于MVC...
在Struts2框架中整合Ajax以实现异步数据交互,JSON(JavaScript Object Notation)扮演了关键角色。JSON是一种轻量级的数据交换格式,它允许Web应用与服务器之间高效地传输数据,而无需进行繁琐的HTTP请求。在这个...
Struts2、JSON和AJAX是Web开发中的关键技术,它们的整合可以实现高效的数据交互和动态页面更新。本文将深入探讨这些技术以及如何在实际项目中整合它们。 **Struts2** 是一个基于MVC(Model-View-Controller)设计...
Struts、jQuery、Ajax以及JSON是Web开发中的四个关键技术,它们在构建动态、交互式的Web应用程序中发挥着重要...这就是Struts、jQuery、Ajax和JSON在实际应用中的典型整合,实现了前后端的无刷新通信,提高了用户体验。
Struts2、EasyUI、Ajax 和 JSON 是现代Web开发中常用的技术栈,它们结合使用可以构建出高效、交互性强的用户界面。以下是对这些技术及其在用户登录验证中的应用的详细解释。 **Struts2** 是一个基于MVC(Model-View...
3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录进行显示。 5.单数据源配置(兼容Tomcat和Weblogic)。 6.Hibernate...
【当当网struts2+ajax+css】项目是一个基于Struts2框架、结合Ajax和jQuery技术实现的电商网站简化版。这个项目旨在提供一个学习和实践的平台,帮助开发者了解如何将这些技术有效地整合到实际应用中。下面将详细阐述...
在Struts2和ExtJS整合中,JSON起到桥梁作用,将服务器端的Action产生的数据转换为JSON格式,然后由ExtJS前端解析并显示在界面上。 整合Struts2、ExtJS和JSON的步骤通常包括以下几个部分: 1. **设置Struts2的JSON...
Struts2、JSON和Ajax是...通过理解Struts2、JSON和Ajax的基本原理,以及它们在实际项目中的整合方式,开发者可以构建出更加高效、交互性更强的Web应用。这个小例子就是一个很好的起点,帮助初学者理解和实践这些技术。
Struts2、jQuery、JSON和Ajax是Web开发中常见的技术栈,它们在构建动态、交互式的Web应用程序中扮演着重要角色。这篇博文可能是介绍如何将这些技术整合到一起,以提高用户界面的响应性和用户体验。 Struts2是一个...
总结来说,这个"ProductSystem"项目通过整合Struts2、jQuery、JSON和Ajax技术,实现了高效的前后端数据交互,提供了动态的用户界面,是学习和实践这些技术的好例子。通过深入理解并实践这个项目,开发者可以更好地...
结合以上技术,"struts2+spring+hibernate+jquery+json"的整合使用意味着开发一个完整的、高效的Web应用。Struts2负责处理HTTP请求并调用业务逻辑,Spring提供依赖管理和数据访问支持,Hibernate作为持久化层与...
"Struts2+JSON+jQuery实现Ajax数据的存取"就是一个典型的示例,它结合了强大的MVC框架Struts2、轻量级的数据交换格式JSON以及高效的前端库jQuery,以实现网页上的无刷新数据交互。下面将详细介绍这三个技术及其在...
通过这种整合,开发者可以利用Struts2的强大功能处理后端业务逻辑,同时利用Ajax和JSON实现快速、无刷新的前端交互,提高用户体验。在实际开发中,还应注意安全问题,如防止XSS和CSRF攻击,以及正确处理JSONP跨域...
当用户界面触发某个事件(比如点击按钮),jQuery会发起Ajax请求,Struts2 Action执行相关逻辑并生成JSON响应,最后jQuery将数据插入到网页中,完成一次完整的交互。 总结来说,这个例子展示了如何利用Struts2处理...
Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单,并且可以简单的融入到Struts2框架中,...
Struts1.1+Spring2.5+Ibatis2.3+Ajax整合是一个经典的Java Web开发框架组合,常用于构建企业级应用。这个源代码集合提供了如何将这四个技术有效地结合在一起的实例,以实现一个功能强大的、具有无刷新特性的用户界面...
- **前端交互**:jQuery通过AJAX与后台Struts2 Action通信,发送JSON请求并接收JSON响应。 - **数据展示**:Struts2 Action处理完业务逻辑后,返回JSON结果,jQuery解析后动态更新DOM展示数据。 博客链接中提到的...