收参,就是将浏览器表单页面输入的数据的值传到后台, 之前用request.getParameter()收参的时候整个过程是比较繁琐的,其缺点主要有:
1.servlet的api侵入到了action类中。Action跟servlet耦合性高。
2.程序员需要手动转换数据类型。
3.程序员需要手动封装成实体对象。
而struts2框架以其强大的功能和优雅的实现使我们的收参方式变得极为的简介轻巧。
下面介绍三种struts2中的收参方式:
1、零散数据的收集
前端页面和后台java代码如下:
首先要注意的是 表单页面中的name属性要和action中 的私有属性名字保持一致! 一定要一致,否则收不到参数,并且一定要提供getter()&&setter()方法,
然后这样Form中的数据就自动封装到了action类的属性里面。
2. 以对象形式收集数据
Action接受表单中的数据转换为实体对象
第一步,需要在entity包下先建立相应的实体类,并且提供相应的getter()&&setter()方法
第二步,在Action类中声明私有的对象引用。且也要提供相应的getter()&&setter()方法。
第三步,然后在页面表单name属性中就可以直接写引用名.属性名 然后台就可以获取到相应的值了。
获取用get方法获取,例如假如想获取姓名,那就是:person.getName()
3. 以数组或者集合形式收集数据
和第一种方式其实是差不多的,比如说一个多选框,多个多选框的name属性名要一致,
然后Action收集的时候建立一个私有的集合类型的引用,比如:private List< String> list;
并且提供list的getter和setter方法
就可以收集多个数据了,并且装进一个集合里面。
这三种方式都是struts封装好的,按照这种方式就可以自动接收input传进来的值了,想了解其实现原理可以参考
struts2工作原理:https://blog.csdn.net/MacWx/article/details/93845478