JSON插件提供了一种名为json的ResultType,一旦为某个Action指定了一个类型为json的Result,则该Result无需映射 到任何视图资源。因为JSON插件会负责将Action里的状态信息序列化成JSON格式的数据,并将该数据返回给客户端页面的JavaScript。
简单地说,JSON插件允许我们在JavaScript中异步调用Action,而且Action不再需要使用视图资源来显示该Action里的状态信息,而是由JSON插件负责将Action里的状态信息返回给调用页面——通过这种方式,就可以完成Ajax交互。
Struts2提供了一种可插拔方式来管理插件,安装Struts2的JSON插件与安装普通插件并没有太大的区别,一样只需要将Struts2插件的JAR文件复制到Web应用的WEB-INF/lib路径下即可。
安装JSON插件按如下步骤进行:
(1)登陆http://code.google.com/p/jsonplugin/downloads/list站点,下载Struts2的JSON插件的最新版本,当前最新版本是0.7,我们可以下载该版本的JSON插件。
(2)将下载到的jsonplugin-0.7.jar文件复制到Web应用的WEB-INF路径下,即可完成JSON插件的安装。
实现Actio逻辑import com.googlecode.jsonplugin.annotations.JSON;import com.opensymphony.xwork2.Action;public class JsonTestAction { private String username; private String password; private boolean success; private Map map = new HashMap(); public String checkLogin(){ if(this.getPassword()!="" && this.getUsername()!=""){ //第一种方式 将要返回给页面的数据放到HashMap里生成数据格式“{"map": //{"success":true},"username":"ww"}” //map.put("success", true); //第一种方式 将要返回给页面的数据放到变量里生成数据格式“{"map": //"success":true,"username":"ww"}” success = true; return Action.SUCCESS; }else{ return Action.INPUT; } } @JSON(serialize=false) public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public boolean isSuccess() { return success; } public Map getMap() { return map; } public void setMap(Map map) { this.map = map; }}在上面代码中,使用了JSON注释,注释时指定了serialize域,serialize域指定Action属性被序列化成JSON对象时是否序列化该属性。除此之外,JSON注释还支持如下几个域:
name: 设置成JSON对象的属性名
deserialize:设置是否反序列化该属性。
format:设置用于格式化输出、解析日期表单域的格式。例如"yyyy-MM-dd'T'HH:mm:ss"。
配置该Action的struts.xml文件代码如下:<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <package name="privilege" extends="json-default" namespace=""> <action name="user" class="login"> <result type="json"></result> </action> </package></struts>在上面配置文件中有两个值得注意的地方: 第一个地方是配置struts.i18n.encoding常量时,不再是使用GBK编码,而是UTF-8编码,这是因为Ajax的POST请求都是以UTF-8的方式进行编码的。
第二个地方是配置包时,自己的包继承了json-default包,而不再继承默认的default包,这是因为只有在该包下才有json类型的Result。
第三个地方是数据以ajax方式提交则Extjs会自动处理json数据,要是以非ajax方式提交数据,则会弹出保存数据的对话框,需要自己处理json类型数据
分享到:
相关推荐
在前端,EXTJS使用Ajax请求调用Struts2 Action,接收返回的JSON数据,然后动态渲染UI,展示所有订单及其对应的客户信息。 总结来说,ExtJs + Struts2 + JSON 的组合提供了一种高效、灵活的方法来构建富客户端Web...
JSON插件可以被集成到Struts2中,使得服务器端能够以JSON格式响应客户端的AJAX请求,从而实现动态页面更新。 ExtJS是一个JavaScript的富客户端框架,主要用于构建交互式Web应用。它支持JSON数据模型,可以方便地从...
- Struts 2中的JSON插件配置,使得Action可以方便地返回JSON响应。 4. **AJAX技术**: - AJAX(Asynchronous JavaScript and XML)允许在不刷新整个页面的情况下与服务器进行异步通信。 - ExtJS中的AJAX请求API...
综上所述,这个压缩包提供的资料可能涵盖了如何在Struts2中配置和使用Hibernate进行数据持久化,如何利用Spring进行依赖管理和数据访问,以及如何结合ExtJS创建富客户端界面并利用JSON进行前后端通信。对于想要深入...
在Struts2和ExtJS整合中,JSON起到桥梁作用,将服务器端的Action产生的数据转换为JSON格式,然后由ExtJS前端解析并显示在界面上。 整合Struts2、ExtJS和JSON的步骤通常包括以下几个部分: 1. **设置Struts2的JSON...
iterator_jsonDemo1的链接:http://download.csdn.net/detail/cafebar123/8816409 运用了Extjs,Struts2, json,iterator技术, 将数据从后台传到Extjs表现层(自带json相关jar包)。注释详细,供参考。 Use ...
然而,当使用 Struts2 的 JSON 插件时,它默认返回的对象格式与 ExtJS 需要的数组格式不符,如下所示: ```json {"cls":"folder","id":10,"leaf":false,"children":[{"cls":"file","id":11,"leaf":true,"children":...
ExtJS + Struts2 + Hibernate + JSON 登录程序是一个典型的Web开发...学习这个程序可以帮助开发者深入理解如何利用ExtJS构建用户界面,如何配置Struts2处理请求和返回JSON数据,以及如何使用Hibernate进行数据库操作。
在与ExtJS4结合使用时,Servlet通常用于接收前端发送的JSON数据请求,处理业务逻辑,并返回相应的JSON数据。 Struts2是一个基于MVC设计模式的Java Web框架,用于简化企业级应用开发。它提供了处理用户请求、控制...
struts2 json extjs 完整实例 struts2 json extjs 完整实例 完整可用 无错! struts2 json extjs 完整实例 struts2 json extjs 完整实例 完整可用 无错! struts2 json extjs 完整实例 struts2 json extjs 完整...
在与Struts2结合时,Struts2的JSON插件可以将服务器端的数据转换成JSON格式,方便ExtJS的组件直接使用,实现异步数据加载和页面动态更新。 总的来说,这个DEMO展示了如何将这些技术有效地整合,构建一个完整的Java ...
本文档将介绍如何使用Struts2框架结合JSON数据格式以及ExtJS前端库来实现动态分页功能。此方案不仅能够提高用户体验,还能够优化服务器资源的利用效率。 #### 二、关键技术点 1. **Struts2**: 是一个基于Java的...
为了使EXTJS4和STRUTS2能够通信,需要配置STRUTS2的JSON插件,使得ACTION可以返回JSON格式的数据,EXTJS4能解析这些数据更新界面。同时,需要在EXTJS4中设置适当的proxy,如Ajax proxy,指定URL到STRUTS2 ACTION,并...
`Struts2`可以通过其内置的JSON插件方便地将Java对象转换为JSON格式,然后发送给`ExtJS`,后者可以解析JSON数据并更新UI组件。 在这个例子中,开发者可能创建了一个`Struts2` Action,该Action处理来自`ExtJS`的...
本示例中,EXTJS、Struts2和JSON共同用于制作一个登录窗口。 首先,我们需要在项目中引入必要的库文件,如描述中所示,包括Struts2的核心库和其他依赖库,例如Commons-logging、Freemarker、Ognl等。这些库文件是...
总结以上,ExtJS动态树与Struts的结合使用,需要熟练掌握ExtJS TreePanel的配置,JSON数据的构造和解析,以及Struts2的Action和Result机制。通过Ajax请求,前端可以动态获取和更新树形数据,实现交互式用户界面。
这个示例中,ExtJS用于前端UI的构建,JSON作为数据交换格式,而Struts2则作为后端MVC框架处理请求和返回数据。 1. **ExtJS Tree**: ExtJS 是一个强大的JavaScript库,专门用于创建富客户端应用程序。其中的Tree组件...
3. **Struts2 JSON 插件**:为了在 Struts2 Action 中返回 JSON 数据,需要添加 Struts2 JSON 插件到项目中。在 Action 类中,使用 `@Result(type="json")` 注解来指示返回 JSON 结果。确保配置了插件的依赖并正确...
在Struts2中,我们可以创建一个Action类,处理请求,查询数据库获取树结构数据,并将其转换为JSON格式,然后通过Struts2的Result类型返回给前端。 为了实现这个功能,你需要遵循以下步骤: 1. **配置Struts2**:在...
2. **Struts2配置**:在Struts2中,你需要在`struts.xml`配置文件中定义Action,这些Action将处理来自前端的请求。同时,要配置拦截器,以实现Struts2的核心功能,如模型驱动、文件上传等。 3. **ExtJS集成**:在...