struts json前后台交互
struts json前后台交互
在做以struts为控制器的服务器的时候,我们如何与安卓等手机用户交互呢,
通常是通过JS的json来发送数据,
这些json对象在struts插件下转成了后台的对象列表list 或set,当然也可以转成一个实体对象,
另外,实体对象中可以包含List 和Set。
今天,就让我们来浅谈JS与后台交互该如何去玩。
首先,让我们来看看前台的接口怎么写30、接口30功能:获取项目人员列表(根据项目)URL:
http://localhost:8888/xxx/xxx/WhbAction_xxx.do HTTP Method:GET 请求参数:projectID 返回结果:登录人所属项目的项目名及id的json数据 { "projectPerson": [ { <--! 每个person对象需要3个属性 -->
"id": "1",
"Account":"xiancai"
"Name": "Tom",
},
{
"id": "1",
"Name": "Tom",
"Account":"xiancai"
},
{
"id": "1",
"Name": "Tom",
"Account":"xiancai"
},
{
"id": "1",
"Name": "Tom",
"Account":"xiancai"
},
{
"id": "1",
"Name": "Tom",
"Account":"xiancai"
},
{
"id": "1",
"Name": "Tom",
"Account":"xiancai"
},
]
}
这就是典型json 字符串格式了吧。
说明:
每个大括号可以表示成为一个Map对象
中括号表示一个数组,在后台就是list或者Set
中括号中又有大括号,即表示list中装了Map类型对象。
现在,让我们来看看后台java代码该如何写:
public String getProjectPerson() { dataMap = new HashMap<String, Object>(); System.out.println(projectId); List<Map<String, String>> mapList = new ArrayList<Map<String, String>>(); projectUsers = dailyaccountservice.getProjectUsers(Integer.parseInt(projectId)); Iterator<Zt_User> i = projectUsers.iterator(); while (i.hasNext()) { Map<String, String> projectMap = new HashMap<String, String>(); Zt_User zuser = i.next(); projectMap.put("Id", zuser.getId().toString()); projectMap.put("Name", zuser.getRealname()); projectMap.put("Account",zuser.getAccount()); mapList.add(projectMap); } dataMap.put("projectPerson", mapList); return "getJson"; }
大家可以看到,一般我后台要根据前台接口文档写数据,前台要求什么数据,我就返回什么数据,在后台做一个包装的过程。
一个大的MAP 包装LIST,list中又包装很多的MAP。每一个MAP 算一个对象。