用过struts的人,或者用过spring MVC的人,都知道domain model接受参数是多么的方便,而且又有依赖注入,简直是自动拿参数,再自动帮你转成java bean,但是也有不足的地方
说说struts接收json数据的时候
struts强大的面向对象的接受参数的格式是
class User{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
这个bean是一个常见的User类,有两个属性,username和password,并且有getter和setter方法
两种struts自带的domain model方法
Action中有一个User对象叫做user,想要struts得到前端的数据并自动转换成user的方法有两种:
-
{"user.username":"xxxx","user.password":"xxxx"}
前端传这样的数据过来,而且action中有setUser(User user)方法就可以了
-
{"user":"xxxx","user":"xxxx"}
也可以这样子传数据,在这里默认第一个value为username,第二个value为password
这个时候action中的setUser(User user)方法就要改成
public void setUser(String username,String password){
//根据这两个参数生成user对象
}
用json传输数据到后台时,不能用domain model
但是现在要求,要用json传数据到后台,上面两种虽然是Json的格式,但是并不是面向对象的json
如果想改成正确的json,比如:
{
"user": "{
"username": "xxxx",
"password": "xxxxx"
}"
}
这时候,struts的domain model是不起作用的
因为用struts注入的话,后台收到的格式应该是"变量名.字段名":"值",这样子才能正确赋值
而用正确的json传输的话,后台收到的是"变量名[字段名]":"值"
今天纠结了好久,想到了一个解决方法
Action里面的setUser()需要改成
public setUser(String json){
//这里将json字符串解析成User对象
}
需要注意的是,这个方法里面,收到的参数json应该是这样的格式
{
//正确的
"username": "xxxx",
"password": "xxxxx"
}
而不能是这
{
//错误的,fasterjson中的parseObject(String json,Class class)是无法解析的
"user": {
"username": "xxxx",
"password": "xxxxx"
}
}
所以前端送过来的json的最外层,首先要有个key,对应着action的一个需要接收json并解析成bean的成员名称,
并且这个key的value是个json字符串,value的最外层放着,这个bean的字段
说说前端送数据给后台的时候
JS里面有两个关于json的方法
- JSON.stringify(json)
- $.parseJSON(json)
第一个方法是将json对象转为json字符串,也就是转义的过程
第二个方法是将json字符串转为json对象,也就是去除转义的过程
传给后台的json字符串不能有过多的转义符,不然是无法去除转义的,更无法解析
分享到:
相关推荐
赠送jar包:struts2-json-plugin-2.3.24.jar; 赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-...
struts2-json-plugin,Struts JSON插件
该资源是使用struts2框架进行操作,返回json格式数据,前台通过ajax提交内容。
struts2整合json的插件struts2-json-plugin源码,不是jar包
如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择。... Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。
struts2与json整合,可进一步讨论
Struts2+Json+Android简单实现,StrutsJson为服务端代码,JSONDemo为Android端代码
struts2-json-plugin-2.2.3.1能用的包
jquery和struts2结合使用的jar包
介绍struts、ajax如何返回json数据 一首先引入Struts和json所需的jar包。 二编写页面 三编写action类 四Struts配置
struts2自带的json转换 倒入jar文件 struts.xml中 <package ......extends="json-default" <result type="json"/>
Struts2和JSON交互的例子,非常容易理解,Struts2和JSON交互的例子,非常容易理解。
当自己做出来时,感觉挺简单的,但想起自己刚开始做不会那会儿,真的挺悲哀的啊,在网上也搜了半天也没搜出个123,最终经过苦战终于做出来的,文档中重要部分都标红提示了,在此分享给童鞋们
一个运用Extjs,Struts2, json,iterator技术构建的iterator_jsonDemo2。iterator_jsonDemo1的链接:http://download.csdn.net/detail/cafebar123/8816409 运用了Extjs,Struts2, json,iterator技术, 将数据从...
struts2返回json数据类型
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
struts2所需的包和Struts2 json所需包,直接导进去就能用,很适合新手开发以及测试Struts2返回json格式的数据。
struts2和json整合需要的jar包
struts2 json plugin jar包
struts2返回json数据用query在页面接收