struts2中action的传值方式
来源:互联网 发布:mac版qq接收群文件 编辑:程序博客网 时间:2024/04/27 20:54
在struts2中action的传值方式一般存在以下三种:
方法1:先看请求:
<span style="white-space:pre"></span>localhost:8888/struts/person.action?name=tom&age=22在该请求中,存在name和age两个参数,那么只需要在相应的处理该参数的action类中定义name和age属性即可,还要相应的set和get方法:
<span style="white-space:pre"></span>private String name ;private int age ;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getInfo(){System.out.println("name===="+name);System.out.println("age====="+age);return SUCCESS;}在运行时,指定getInfo方法(默认是exectue方法)对参数进行处理,即可得到我们想要的结果。当然,我们可以更改请求的参数命名,如boyname,girlname,这是也不需要在乎在相应的action中参数的名称,但是必须保证所设的get和set方法是getBoyName和setBoyName,这是来自struts2的内部机制,在传入相应的参数时,struts2会去寻找相应的set和get方法,从而进行数据传输。
方法2:
创建一个Person类:
public class Person {private String name ;private int age ;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}那么在对应的action处理类中应该这么写:
public class ActionPerson extends ActionSupport{private static final long serialVersionUID = 1L;private Person person ;public String getInfo(){System.out.println("name====="+person.getName());System.out.println("age======="+person.getAge());return SUCCESS ;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}}ActionPerson看上去很奇怪,因为虽然有定义了Person的对象,却看不到被初始化的过程,当然,struts2又给我们做了。不过,此时,我们在请求传输的过程中,却需要这么写:
<span style="white-space:pre"></span>localhost:8888/struts/person1.action?person.name=tom&person.age=22在请求时,我们相当于调用了person.setName和person.setAge方法,可能是还是接触得很少,我本人还是对这种方法不是很理解,慢慢体味中。此时,我们会想,是不是我们请求的参数存在几个,我们就得写几个对象的属性呢?答案是否定的,这就涉及了另外一个内容--DTO。
(DTO data transforer object) 数据传输对象。显然,这玩意只是负责数据的传输,我们可以从另外的角度去理解这个问题,DTO就是所属的实体类加上某些动作。DTO相当于一个工具,将所传输进来的数据(有些可能是对象没有作用的)过滤掉。举个例子,我们在注册的时候,如果是实体类的话,User只需要包含name和password两个属性就可以了,但是在我们提交的时候,会存在一个密码确认,但是这个动作对user是没有作用(但是会随着请求传输进来),因此我们可以使用DTO将没用的去掉,将剩下的数据生成一个新的user对象。
3.方法3
继承ActionSupport,继承ModelDriven接口。
public class ActionPerson2 extends ActionSupport implements ModelDriven<Person>{private static final long serialVersionUID = 5086918296805304332L;private Person person = new Person();public Person getModel() {return person;}public String getInfo(){System.out.println("name====="+person.getName());System.out.println("age======"+person.getAge());return SUCCESS;}}加入泛型只是为了避免强制转换。实现ModelDriven接口只是要实现getModel抽象方法,因为该方法会返回泛型中的对象。
在请求端,使用第一次那种请求,
localhost:8888/struts/person.action?name=tom&age=22请求的参数使用的实体类的属性值,这样,就简单地完成了请求的目的。
0 0
- struts2中action的传值方式
- struts2中action的传值方式
- Struts2中Action的传值方式
- Struts2里面的action传值方式
- Struts2中Action的跳转方式
- Struts2中Action的实现方式
- Struts2.x学习二(Action的传值方式)
- Struts2 jsp页面和Action之间的传值方式
- struts2 action.struts2中action之间使用chain传值的探索
- Struts2的Action中方法的几种访问方式
- Struts2中action获取request、response、session的方式
- struts2中 Action获取表单参数的几种方式
- Struts2中action获取request、response、session的方式
- Struts2中action获取request、response、session的方式
- Struts2中action获取request、response、session的方式
- Struts2中action获取request、response、session的方式
- struts2中action的3种实现方式
- Struts2中action获取request、response、session的方式
- R基础
- 分享两段PHP代码,超实用POST和GET
- Makefile自动生成工具-----autotools的使用
- @Override是什么意思?
- redis.conf参数说明
- struts2中action的传值方式
- 友情链接始终被标榜为高质量的外链
- 分数加减法
- HDU2063 过山车 【二分图·最大匹配】
- 怎样使一个Android应用不被杀死?
- c++中sizeof的用法
- &与&&,|与||区别
- Kset和Kobject
- Android绘图机制(四)自定义控件