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

阅读更多

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

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

  • prototype-1.4.0.js
  • prototype-1.4.0.tar.gz

 

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文件:



    

 

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文件:





 

5、新建并手写一个build.xml(必须已经安装了Ant工具),并将build.xml放置到WEB-INF文件夹下 (MyEclipse内置了Ant)
build.xml文件:



    
        
            
        
        
    

    
        
            
            
        
    

 

 

总结:目录结构如下
  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文件:



    
    
        struts2
        org.apache.Struts2.dispatcher.FilterDispatcher
    
    
    
        struts2
        /*
    
    




2、编写表现层ajaxtest.jsp页面并放在与WEB-INF同一级目录下。
ajaxtest . jsp文件:

<%@ page language="java" contentType="text/html; charset=GBK"%>




使用JSON插件





 

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文件:



	
	
		
			
		
	

注意:

第一:配置

不使用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 (进行测试)

 

你可能感兴趣的:(Ajax,json,Struts,XML,Web)