http://prototype.conio.net/dist/
下载(对Ajax支持的prototype--js函数库):
http://code.google.com/p/jsonplugin/downloads/list
下载(Struts2的JSON插件):
----------------------------------------------------------
第一:手动建立项目结构(类似于MyEclipse创建Web Pro项目的后台操作)
1、新建文件夹结构如下:
Struts2json
|______WEB-INF
|_______classes
|_______src
|_______lib
2、复制Tomcat里conf文件夹里的web.xml到WEB-INF文件夹下,并修改web.xml文件
web.xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
</web-app>
3、将刚才下载解压后Struts2下的lib文件夹里
commons-logging-1.0.4.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.11.1.jar
xwork-2.0.4.jar
拷贝到Struts2json下lib文件夹里,并将 jasonplugin-0.25.jar 也拷贝到Struts2json/WEB-INF/lib文件夹下。
将 prototype-1.4.0.js 拷贝到Struts2json文件夹下。
4、找到Strust2里src\apps\showcase\src\main\resources(就是解压后里面的实例)的struts.xml文件复制到Struts2json下classes文件夹下,并修改struts.xml文件 ,或直接在classes文件夹下新建一个
struts.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>
5、新建并手写一个build.xml(必须已经安装了Ant工具),并将build.xml放置到WEB-INF文件夹下 (MyEclipse内置了Ant)
build.xml文件:
<?xml version="1.0"?>
<project name="struts" basedir="." default="">
<path id="classpath">
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
<pathelement path="."/>
</path>
<target name="compile" description="Compile all source code">
<javac destdir="classes" debug="true"
deprecation="false" optimize="false" failonerror="true">
<src path="src"/>
<classpath refid="classpath"/>
</javac>
</target>
</project>
总结:目录结构如下
Struts2t
|______WEB-INF
|_______classes
|______struts.xml
|_______src
|_______lib
|_______ commons-logging-1.0.4.jar
|_______ freemarker-2.3.8.jar
|_______ ognl-2.6.11.jar
|_______ struts2-core-2.0.11.1.jar
|_______ xwork-2.0.4.jar
|_______ jsonplugin-0.25.jar
|_______web.xml
|_______build.xml
|______prototype-1.4.0.js
----------------------------------------------------------
第二:编写核心代码
1、Struts2核心就是控制器,为Struts2添加核心Filter配置在web.xml文件中(拦截所有Web请求并由FilterDispatcher初始化)
web.xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.Struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
2、编写表现层ajaxtest.jsp页面并放在与WEB-INF同一级目录下。
ajaxtest . jsp文件:
<%@ page language="java" contentType="text/html; charset=GBK"%>
<script src="prototype-1.4.0.js" type="text/javascript">
</script>
<script language="JavaScript">
function gotClick()
{
//请求的地址
var url = 'JSONExample.action';
//将form1表单域的值转换为请求参数
var params = Form.serialize('form1');
//创建Ajax.Request对象,对应于发送请求
var myAjax = new Ajax.Request(
url,
{
//请求方式:POST
method:'post',
//请求参数
parameters:params,
//指定回调函数
onComplete: processResponse,
//是否异步发送请求
asynchronous:true
});
}
function processResponse(request)
{
$("show").innerHTML = request.responseText;
}
</script>
<html>
<head>
<title>使用JSON插件</title>
</head>
<body>
<form id="form1" name="form1" method="post">
<INPUT TYPE="text" name="field1" id="field1"/><br>
<INPUT TYPE="text" name="field2" id="field2"/><br>
<INPUT TYPE="text" name="field3" id="field3"/><br>
<INPUT TYPE="button" value="提交" onClick="gotClick();"/>
</form>
<div id="show">
</div>
</body>
</html>
3、编写POJO(Action)在src下新建文件夹org,在org下新建文件夹jee(这里是建立包名),并新建类JSONExample.java放置在src/org/jee文件夹下。
JSONExample . java文件:
package org.jee;
import java.util.HashMap;
import java.util.Map;
import com.opensymphony.xwork2.Action;
import com.googlecode.jsonplugin.annotations.JSON;
public class JSONExample
{
private int[] ints = {10, 20};
private Map map = new HashMap();
private String customName = "custom";
private String field1;
//'transient'不会被序列化
private transient String field2;
//没有setter和getter方法的字段不会被序列化
private String field3;
public String execute()
{
map.put("name", "yeeku");
return Action.SUCCESS;
}
public String getField1() {
return field1;
}
public void setField1(String field1) {
this.field1 = field1;
}
public String getField2() {
return field2;
}
public void setField2(String field2) {
this.field2 = field2;
}
public String getField3() {
return field3;
}
public void setField3(String field3) {
this.field3 = field3;
}
public int[] getInts() {
return ints;
}
public void setInts(int[] ints) {
this.ints = ints;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
@JSON(name="newName")
public String getCustomName()
{
return this.customName;
}
}
4、在struts.xml里配置Action,修改classes文件
struts.xml文件:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"/>
<package name="example" extends="json-default">
<action name="JSONExample" class="org.jee.JSONExample">
<result type="json"/>
</action>
</package>
</struts>
注意:
第一:配置
<constant name="struts.i18n.encoding" value="UTF-8"/>
不使用GBK编码,而使用UTF-8编码,因为Ajax的POST请求都以UTF-8的方式进行编码的。
第二:配置包时,继承了json-default包,不再继承默认的default包,因为只有在json-default包下才有json类型的Result。
5、将Struts2t整个文件夹拷贝到Tomcat/webapps文件夹下
总结:目录结构如下
Struts2t
|______WEB-INF
|_______classes
|______org
|_____jee
|______JSONExample.class
|______struts.xml
|_______src
|______org
|_____jee
|______JSONExample.java
|_______lib
|_______ commons-logging-1.0.4.jar
|_______ freemarker-2.3.8.jar
|_______ ognl-2.6.11.jar
|_______ struts2-core-2.0.11.1.jar
|_______ xwork-2.0.4.jar
|_______ jsonplugin-0.25.jar
|_______web.xml
|_______build.xml
|______prototype-1.4.0.js
|______ajaxtest.jsp
----------------------------------------------------------
三、测试
1、启动Tomcat6
2、http://localhost:8080/struts2t (进行测试)
分享到:
相关推荐
综上所述,通过以上步骤,我们已经在Struts2中实现了使用Ajax获取并展示JSON数据的功能。这个过程包括了引入必要的库、创建前端页面、编写后端Action类以及配置Struts2的Action。当你运行项目并点击按钮时,浏览器将...
在Struts2框架中整合Ajax以实现异步数据交互,JSON(JavaScript Object Notation)扮演了关键角色。JSON是一种轻量级的数据交换格式,它允许Web应用与服务器之间高效地传输数据,而无需进行繁琐的HTTP请求。在这个...
【标题】"ZTree+Struts2+ajax+json实现checkbox权限树"涉及的技术栈主要集中在前端的ZTree,后端的Struts2框架,以及数据交互中的Ajax和JSON。这个项目的核心目标是构建一个可复选的权限树形结构,用户通过勾选节点...
然而,Struts2 JSON插件还提供了许多高级特性,如自定义JSON序列化策略、处理复杂类型、支持国际化等。在实际开发中,你可以根据项目需求灵活运用这些特性,提高开发效率并优化应用性能。 总的来说,Struts2的JSON...
1. **版本不匹配**:检查使用的Struts2版本与JSON插件版本是否兼容。 2. **依赖冲突**:检查项目中是否存在多个版本的相同依赖项,例如多个版本的commons-lang等。 3. **配置问题**:检查Struts2的配置文件(如...
1. 在Struts2中,确保已经添加了JSON插件,如struts2-json-plugin,以便支持JSON结果类型。 2. 配置Struts2的struts-default.xml,启用JSON结果类型。 3. 前端需要设置Content-Type为"application/json",以表明发送...
4. **与AJAX集成**:JSON插件使得Struts2与jQuery、Dojo等库的AJAX请求无缝集成,能够快速响应前端的动态请求。 在提供的压缩包中,有两个不同版本的JSON插件:`jsonplugin-0.34.jar` 和 `jsonplugin-0.32.jar`。...
在Struts2中,我们可以使用Struts2的JSON插件来方便地处理JSON响应。 为了在Struts2中实现Ajax和JSON功能,我们需要以下关键的`jar包`: 1. `struts2-core.jar`:这是Struts2的核心库,包含了框架的基本组件和功能...
总结,Struts2和jQuery的Ajax JSON数据交换涉及以下几个关键步骤:配置Struts2的JSON插件,编写返回JSON数据的Action,使用jQuery发起Ajax请求并处理返回的JSON数据。通过这种方式,可以实现客户端与服务器之间的...
在Struts中,可以使用Struts2的JSON插件(Struts2-Json-plugin)来支持JSON的序列化和反序列化,使得服务器端的Java对象可以直接转换为JSON格式,发送到客户端,然后由JavaScript解析并操作。 在Struts-AJAX-JSON-...
6. **整合Struts2 JSON插件**:`struts2-json-plugin-2.3.4.1.jar`是Struts2用于JSON支持的插件。确保这个插件已添加到项目的类路径中,它能帮助Struts2更方便地处理JSON数据,并将其作为Action结果返回。 7. **...
- 引入Struts2的核心库和JSON插件库到项目中。 - 在`struts.xml`配置文件中启用JSON结果类型,并配置相应的拦截器栈。 ```xml <constant name="struts.enable.SlashesInActionNames" value="true"/> ...
总的来说,Struts 2的JSON插件是实现JSON支持的关键组件,它使得Struts 2能够无缝地与JSON数据交互,从而提高了Web应用的交互性和效率。正确配置和使用JSON插件,可以帮助开发者构建更高效的AJAX应用或RESTful API。
5. **构建JSON响应**:在Action类中,可以使用Struts2的JSON插件(struts2-json-plugin)自动将Java对象转换为JSON。例如: ```java package com.example; public class AjaxAction extends ActionSupport { ...
在Struts2中集成JSON支持,首先需要添加相应的依赖,比如struts2-json-plugin,这个插件提供了JSON结果类型。当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给...
需要添加Struts2的JSON插件支持,然后定义一个方法,如`execute()`,返回`json`结果类型: ```java @Action(value = "struts2Action") @Result(name = "json", type = "json") // 指定返回JSON结果 public ...
这使得Struts2能识别以`.json`结尾的请求,并使用JSON插件处理。 3. **使用注解返回JSON**: 现在,我们可以在Action类上使用`@Action`注解,并在方法上使用`@Result`注解,指定结果类型为`json`。例如: ```...
2. **Struts2 JSON插件**: 该插件支持JSON数据格式的序列化和反序列化。 - 推荐使用版本:`struts2-json-plugin-2.2.3.jar` - 获取方式:可以从Maven仓库或Struts2官方网站下载。 #### 三、实现步骤 接下来我们将...
要使用JSON插件,你需要下载并添加相应的JAR文件到项目的类路径中,例如`jsonplugin-0.33.jar`和其他Struts2的核心库。 为了实现返回一个结果对象,首先我们需要创建一个JavaBean作为值对象。在这个例子中,我们...
在Struts2中,我们可以使用JSON插件来方便地序列化和反序列化Java对象为JSON格式,从而实现在Ajax请求中发送和接收数据。 **3. jQuery库** jQuery是一个高效、简洁的JavaScript库,它简化了HTML文档遍历、事件处理...