前言:C#中视图请求控制器的方法时传递了一系列数据,控制器中的方法是以键值对的形式来接收这些数据的。你可以直接用键的名字来接收这些数据,当然数据类型一定要对应上。如果传递的数据很多,以键的名字这种方式需要写很多参数来接收那些数据,这时就可以直接用一个包含有那些键的名字的成员字段的对象来进行接收,这样就可以不用写那么多参数来接收数据了。在Java中这样则不行,如果你没有使用特殊的传递数据的方式或接收数据的方式,它会将你传递过来的数据通通转成字符串类型,如果你传递一个object数据对象到servlet后使用getParameter(string arg0)获取数据,打印出来的结果可能就是一个字符串object或者null。网上已经有jar包已经实现了可以用对象接收数据,我这里是自己根据某一个工具方法改编出来,下面介绍一下我的方法。
下面是传递给Servlet的数组数据,包含两条数据的内容:我这里使用的是post提交:传参直接使用键值对的形式传过去,如:{ data : okData }。okData就是下图的数组。
Servlet中使用写好的方法(requestBean)处理数据并直接使用一个集合接收:
List<SellDetail> details = WebDataUtils.requestBean(request,SellDetail.class);
这个方法的代码很简单,思路主要就是通过键来找值然后把值赋给对象中的某个成员。这里还用到了一个jar包,主要是使用这个jar包的一个方法给对象的某个成员赋值,这个方法需要接受三个参数,第一个参数就是你用来接收数据的对象,第二个参数是这个对象中的某个成员的名称,第三个参数就是要给成员赋的值了。当然你要是不想用jar包也可以自己去写一个反射给它赋值。Jar包的名称:commons-beanutils-1.9.2.jar,
设置值的方法:BeanUtils.setProperty(Object bean, String name,Object value);
下面数贴出具体的代码:
public static <T> List<T