知识大全 JSP在Struts 2中使用JSON Ajax支持
Posted 属性
篇首语:男儿欲遂平生志,五经勤向窗前读。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JSP在Struts 2中使用JSON Ajax支持相关的知识,希望对你有一定的参考价值。
JSP在Struts 2中使用JSON Ajax支持 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JSON插件提供了一种名为json的ResultType 一旦为某个Action指定了一个类型为json的Result 则该Result无需映射到任何视图资源 因为JSON插件会负责将Action里的状态信息序列化成JSON格式的数据 并将该数据返回给客户端页面的JavaScript
简单地说 JSON插件允许我们在JavaScript中异步调用Action 而且Action不再需要使用视图资源来显示该Action里的状态信息 而是由JSON插件负责将Action里的状态信息返回给调用页面——通过这种方式 就可以完成Ajax交互
Struts 提供了一种可插拔方式来管理插件 安装Struts 的JSON插件与安装普通插件并没有太大的区别 一样只需要将Struts 插件的JAR文件复制到Web应用的WEB INF/lib路径下即可
安装JSON插件按如下步骤进行
( )登陆站点 下载Struts 的JSON插件的最新版本 当前最新版本是 我们可以下载该版本的JSON插件
( )将下载到的jsonplugin jar文件复制到Web应用的WEB INF路径下 即可完成JSON插件的安装
实现Actio逻辑
假设wo en输入页面中包含了三个表单域 这三个表单域对于三个请求参数 因此应该使用Action来封装这三个请求参数 三个表单域的name分别为field field 和field
处理该请求的Action类代码如下
public class JSONExample
//封装请求参数的三个属性
private String field ;
private transient String field ;
private String field ;
//封装处理结果的属性
private int[] ints = ;
private Map map = new HashMap();
private String customName = custom ;
//三个请求参数对应的setter和getter方法
public String getField ()
return field ;
public void setField (String field )
this field = field ;
//此处省略了field 和field 两个字段的setter和getter方法
//封装处理结果的属性的setter和getter方法
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;
public String execute()
map put( name yeeku );
return Action SUCCESS;
在上面代码中 使用了JSON注释 注释时指定了name域 name域指定Action属性被序列化成JSON对象的属性名 除此之外 JSON注释还支持如下几个域
serialize 设置是否序列化该属性
deserialize 设置是否反序列化该属性
format 设置用于格式化输出 解析日期表单域的格式 例如 yyyy MM dd T HH:mm:ss
配置该Action与配置普通Action存在小小的区别 应该为该Action配置类型为json的Result 而这个Result无需配置任何视图资源
配置该Action的struts xml文件代码如下
<?xml version= encoding= GBK ?>
<!DOCTYPE struts PUBLIC
//Apache Sofare Foundation//DTD Struts Configuration //EN
>
<struts>
<constant name= struts i n encoding value= UTF />
<package name= example extends= json default >
<action name= JSONExample class= lee JSONExample >
<result type= json />
</action>
</package>
</struts>
在上面配置文件中有两个值得注意的地方
第一个地方是配置struts i n encoding常量时 不再是使用GBK编码 而是UTF 编码 这是因为Ajax的POST请求都是以UTF 的方式进行编码的
cha138/Article/program/c/201404/30451相关参考