`
SevenRedCity
  • 浏览: 61756 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

(二)Struts2的Ajax支持(使用JSON插件实现)

阅读更多

http://prototype.conio.net/dist/

下载(对Ajax支持的prototype--js函数库):

 

http://code.google.com/p/jsonplugin/downloads/list
下载(Struts2的JSON插件):

  jsonplugin-0.25.jar Struts 2 JSON Plugin 0.25


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

第一:手动建立项目结构(类似于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 (进行测试)

 

5
2
分享到:
评论
2 楼 lk617238688 2010-09-25  
学习! 
1 楼 e_sky 2008-07-10  
  学习了...

相关推荐

    Struts2 ajax json使用介绍

    综上所述,通过以上步骤,我们已经在Struts2中实现了使用Ajax获取并展示JSON数据的功能。这个过程包括了引入必要的库、创建前端页面、编写后端Action类以及配置Struts2的Action。当你运行项目并点击按钮时,浏览器将...

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

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

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

    【标题】"ZTree+Struts2+ajax+json实现checkbox权限树"涉及的技术栈主要集中在前端的ZTree,后端的Struts2框架,以及数据交互中的Ajax和JSON。这个项目的核心目标是构建一个可复选的权限树形结构,用户通过勾选节点...

    使用Struts2的JSON插件来实现JSON数据传递

    然而,Struts2 JSON插件还提供了许多高级特性,如自定义JSON序列化策略、处理复杂类型、支持国际化等。在实际开发中,你可以根据项目需求灵活运用这些特性,提高开发效率并优化应用性能。 总的来说,Struts2的JSON...

    Struts2 + jQuery+JSON 实现ajax

    1. **版本不匹配**:检查使用的Struts2版本与JSON插件版本是否兼容。 2. **依赖冲突**:检查项目中是否存在多个版本的相同依赖项,例如多个版本的commons-lang等。 3. **配置问题**:检查Struts2的配置文件(如...

    使用struts2 和ajax进行传递json数据

    1. 在Struts2中,确保已经添加了JSON插件,如struts2-json-plugin,以便支持JSON结果类型。 2. 配置Struts2的struts-default.xml,启用JSON结果类型。 3. 前端需要设置Content-Type为"application/json",以表明发送...

    struts2的json插件

    4. **与AJAX集成**:JSON插件使得Struts2与jQuery、Dojo等库的AJAX请求无缝集成,能够快速响应前端的动态请求。 在提供的压缩包中,有两个不同版本的JSON插件:`jsonplugin-0.34.jar` 和 `jsonplugin-0.32.jar`。...

    struts2 ajax json

    在Struts2中,我们可以使用Struts2的JSON插件来方便地处理JSON响应。 为了在Struts2中实现Ajax和JSON功能,我们需要以下关键的`jar包`: 1. `struts2-core.jar`:这是Struts2的核心库,包含了框架的基本组件和功能...

    Struts2 与Jquery Ajax的json数据交换的典型范例

    总结,Struts2和jQuery的Ajax JSON数据交换涉及以下几个关键步骤:配置Struts2的JSON插件,编写返回JSON数据的Action,使用jQuery发起Ajax请求并处理返回的JSON数据。通过这种方式,可以实现客户端与服务器之间的...

    struts-ajax-json-struts包

    在Struts中,可以使用Struts2的JSON插件(Struts2-Json-plugin)来支持JSON的序列化和反序列化,使得服务器端的Java对象可以直接转换为JSON格式,发送到客户端,然后由JavaScript解析并操作。 在Struts-AJAX-JSON-...

    struts2的Ajax实现注册验证

    6. **整合Struts2 JSON插件**:`struts2-json-plugin-2.3.4.1.jar`是Struts2用于JSON支持的插件。确保这个插件已添加到项目的类路径中,它能帮助Struts2更方便地处理JSON数据,并将其作为Action结果返回。 7. **...

    AjaxStruts2Json实例

    - 引入Struts2的核心库和JSON插件库到项目中。 - 在`struts.xml`配置文件中启用JSON结果类型,并配置相应的拦截器栈。 ```xml &lt;constant name="struts.enable.SlashesInActionNames" value="true"/&gt; ...

    struts 2.0 与 2.1 需要的json插件

    总的来说,Struts 2的JSON插件是实现JSON支持的关键组件,它使得Struts 2能够无缝地与JSON数据交互,从而提高了Web应用的交互性和效率。正确配置和使用JSON插件,可以帮助开发者构建更高效的AJAX应用或RESTful API。

    struts2_ajax_json

    5. **构建JSON响应**:在Action类中,可以使用Struts2的JSON插件(struts2-json-plugin)自动将Java对象转换为JSON。例如: ```java package com.example; public class AjaxAction extends ActionSupport { ...

    struts2+json

    在Struts2中集成JSON支持,首先需要添加相应的依赖,比如struts2-json-plugin,这个插件提供了JSON结果类型。当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给...

    JQuery发送Ajax请求Struts2,并返回JSON的例子

    需要添加Struts2的JSON插件支持,然后定义一个方法,如`execute()`,返回`json`结果类型: ```java @Action(value = "struts2Action") @Result(name = "json", type = "json") // 指定返回JSON结果 public ...

    Struts2使用Annotation返回Json

    这使得Struts2能识别以`.json`结尾的请求,并使用JSON插件处理。 3. **使用注解返回JSON**: 现在,我们可以在Action类上使用`@Action`注解,并在方法上使用`@Result`注解,指定结果类型为`json`。例如: ```...

    struts2 + ajax + json的结合使用

    2. **Struts2 JSON插件**: 该插件支持JSON数据格式的序列化和反序列化。 - 推荐使用版本:`struts2-json-plugin-2.2.3.jar` - 获取方式:可以从Maven仓库或Struts2官方网站下载。 #### 三、实现步骤 接下来我们将...

    Struts2+JSON_实现AJAX_返回对象和列表

    要使用JSON插件,你需要下载并添加相应的JAR文件到项目的类路径中,例如`jsonplugin-0.33.jar`和其他Struts2的核心库。 为了实现返回一个结果对象,首先我们需要创建一个JavaBean作为值对象。在这个例子中,我们...

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

    在Struts2中,我们可以使用JSON插件来方便地序列化和反序列化Java对象为JSON格式,从而实现在Ajax请求中发送和接收数据。 **3. jQuery库** jQuery是一个高效、简洁的JavaScript库,它简化了HTML文档遍历、事件处理...

Global site tag (gtag.js) - Google Analytics