struts2+json 配置
来源:互联网 发布:protobuf 数组 编辑:程序博客网 时间:2024/06/03 22:47
平时在使用ajax发出请求从后台获取数据的时候,经常需要将数据转换为json格式,struts2自己提供了方便的jar包来对数据进行json格式转换,下面是配置详情.:
在struts2的基础上 配置 struts2还需要的包:
commons-lang-2.4.jar;
json-lib-2.3-jdk13.jar;
jsonplugin-0[1].32.jar;
ezmorph-1.0.2.jar;
commons-beanutils-1.7.0.jar;
另外,可以通过: @JSON(name="mymessage") 来给 action 中的get属性设 json节点 别名
通过给 属性设置: @JSON(serialize=false) 来给控制 哪些属性 不序列化输出.
excludeProperties :除了xx之外的集合
includeProperties : 包含xx的集合
wrapPrefix :json结果开头添加xx(比如<paramname="wrapPrefix">[</param>)
wrapSuffix :同上,只不过是结尾
ignoreHierarchy :转化时是否忽略继承关系true/false
enumAsBean : 是否将枚举当做一个bean处理
enableGZIP :是否支持gzip压缩输出
noCache :是否缓存
excludeNullProperties : 是否转化输出 null值
statusCode :设置响应代号比如 304
callbackParameter : JSONP跨域访问的回调设置
contentType : 输出类型
action.java 中的配置:
//将会被Struts2序列化为json字符串的对象
private
Map<String, Object> dataMap=
new
HashMap<String, Object>(); //初始化
public
Map<String, Object> getDataMap() {
Struts2序列化指定属性时,必须有该属性的getter方法,实际上,如果没有属性,而只有getter方法也是可以的return
dataMap;}//
方式1:通过action以视图方式返回JSON数据
public
String testByJSP() {
041
User user =
new
User();
042
user.setId(
"123"
);
043
user.setName(
"JSONActionJSP"
);
044
user.setPassword(
"123"
);
045
user.setSay(
"Hello world !"
);
046
JSONObject jsonObject=
new
JSONObject();
047
jsonObject.accumulate(
"user"
, user);
048
jsonObject.accumulate(
"success"
,
true
);
049
//这里在request对象中放了一个data,所以struts的result配置中不能有type="redirect"
050
ServletActionContext.getRequest().setAttribute(
"data"
, jsonObject.toString());
051
return
SUCCESS;
052
};
方式2:通过action以Struts2默认方式返回JSON数据
public
String testByAction() {
059
// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
060
dataMap.clear();
061
User user =
new
User();
062
user.setId(
"123"
);
063
user.setName(
"JSONActionStruts2"
);
064
user.setPassword(
"123"
);
065
user.setSay(
"Hello world !"
);
066
dataMap.put(
"user"
, user);
067
// 放入一个是否操作成功的标识
068
dataMap.put(
"success"
,
true
);
069
// 返回结果
070
return
SUCCESS;
071
}
方式3:以传统方式返回JSON数据
public
void
doAction()
throws
IOException{
078
HttpServletResponse response=ServletActionContext.getResponse();
079
//以下代码从JSON.java中拷过来的
080
response.setContentType(
"text/html"
);
081
PrintWriter out;
082
out = response.getWriter();
083
//将要被返回到客户端的对象
084
User user=
new
User();
085
user.setId(
"123"
);
086
user.setName(
"JSONActionGeneral"
);
087
user.setPassword(
"JSON"
);
088
user.setSay(
"Hello , i am a action to print a json!"
);
089
JSONObject json=
new
JSONObject();
090
json.accumulate(
"success"
,
true
);
091
json.accumulate(
"user"
, user);
092
out.println(json.toString());
093
// 因为JSON数据在传递过程中是以普通字符串形式传递的,所以我们也可以手动拼接符合JSON语法规范的字符串输出到客户端
094
// 以下这两句的作用与38-46行代码的作用是一样的,将向客户端返回一个User对象,和一个success字段
095
// String jsonString="{\"user\":{\"id\":\"123\",\"name\":\"JSONActionGeneral\",\"say\":\"Hello , i am a action to print a json!\",\"password\":\"JSON\"},\"success\":true}";
096
// out.println(jsonString);
097
out.flush();
098
out.close();
099
}
struts.xml 文件配置:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
02
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
03
"http://struts.apache.org/dtds/struts-2.0.dtd">
04
<
struts
>
05
<
package
name
=
"json"
extends
=
"json-default"
namespace
=
"/test"
>
06
<
action
name
=
"testByAction"
07
class
=
"cn.ysh.studio.struts2.json.demo.action.UserAction"
method
=
"testByAction"
>
08
<
result
type
=
"json"
>
09
<!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
10
<!-- 默认将会序列所有有返回值的getter方法的值,而无论该方法是否有对应属性 -->
11
<
param
name
=
"root"
>dataMap</
param
>
12
<!-- 指定是否序列化空的属性 -->
13
<!--
14
<param name="excludeNullProperties">true</param>
15
-->
16
<!-- 这里指定将序列化dataMap中的那些属性 -->
17
<!--
18
<param name="includeProperties">
19
userList.*
20
</param>
21
-->
22
<!-- 这里指定将要从dataMap中排除那些属性,这些排除的属性将不被序列化,一半不与上边的参数配置同时出现 -->
23
<!--
24
<param name="excludeProperties">
25
SUCCESS
26
</param>
27
-->
28
</
result
>
29
</
action
>
30
</
package
>
31
<
package
name
=
"default"
extends
=
"struts-default"
namespace
=
"/"
>
32
<
action
name
=
"testJSONFromActionByGeneral"
33
class
=
"cn.ysh.studio.struts2.json.demo.action.UserAction"
method
=
"doAction"
>
34
</
action
>
35
<
action
name
=
"testByJSP"
36
class
=
"cn.ysh.studio.struts2.json.demo.action.UserAction"
method
=
"testByJSP"
>
37
<
result
name
=
"success"
>/actionJSP.jsp</
result
>
38
</
action
>
39
</
package
>
40
</
struts
>
1 0
- struts2.2 json配置
- Struts2配置返回json
- struts2 json配置
- Struts2 Json 配置
- struts2中配置json
- struts2返回JSON配置
- Struts2 Json配置出错
- struts2+json 配置
- Struts2返回Json 配置
- struts2配置JSON(includeProperties)
- struts2返回json数据配置
- Struts2 配置JSON,记录下
- Struts2 返回json格式配置
- struts2配置JSON(上)
- struts2 配置JSON(includeProperties)
- Struts2 json插件返回json数据配置
- Struts2中Json插件的Action配置
- Struts2+jQuery+Json零配置实现ajax
- 禁掉UITextField的粘贴功能
- php接口接收发送数据(json)
- linux中的热插拔和mdev机制
- 【CodeForces 628A】Tennis Tournament(水题)
- Butterknife 简单使用
- struts2+json 配置
- sublime text3安装SublimeREPL,并配置python交互式终端快捷键
- Android:6.0运行时权限解析
- nginx页面加载不全或提示502bad gateway,nginx反向代理端口号丢失
- 利用log4j进行日志输出
- pam密码复杂度设置
- C 语言 实现的socket 通信
- 新博客
- UITabBarController简单的使用