首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts2学习札记(二)——请求参数的接收

2012-06-26 
Struts2学习笔记(二)——请求参数的接收?? ?接收参数的三种方法?一.通过action的属性接收参数?public class

Struts2学习笔记(二)——请求参数的接收

?

? ?接收参数的三种方法

?

一.通过action的属性接收参数

?

public class UserAction extends ActionSupport {private String name;private int age;public String add() {System.out.println("name=" + name);System.out.println("age=" + age);return SUCCESS;}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中设置与请求参数同名的属性,核心控制器会主动调用该action相应的setXXX进行相关设置请求的路径类似于.../servletContextPath/namespace/user?name=aaa&age=5

?


二.通过Domain Model接收参数

?

public class User {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 class UserAction extends ActionSupport {private User user;private String nickname;public String add() {System.out.println("name=" + user.getName());System.out.println("age=" + user.getAge());                System.out.println("nickname=" + nickname);return SUCCESS;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}        public void setNickname(String nickname){                this.nickname = nickname;        }        public String getNickname(){                return nickname;        }}
?

我们先看与之相关的请求页面的格式.../servletContextPath/namespace/user?user.name=aaa&user.age&nickname
与第一种方法不同的是,我们在action中直接使用了User对象,在查询字符串中是以user.name这种形式给出域模型(Domain Model)User的属性值。核心控制器检查到这种形式也会创建action并对齐属性进行响应的设置。


三.通过Model Driver接收参数

?

public class User {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 class UserAction extends ActionSupport implements ModelDriven<user>{private User user = new User();public String add() {System.out.println("name=" + user.getName());System.out.println("age=" + user.getAge());return SUCCESS;}@Overridepublic User getModel() {return user;}}
?

?访问格式:.../servletContextPath/namespace/user?name=aaa&age=5,我们看到这种形式与第一种形式是一样的。
注意到他的两个重要操作:1.action类对ModelDriven<?>的实现,这里需要指定它的泛型类型2.在重写的方法中返回需要进行设置的user对象,在User类中写好setXXX和getXXX方法
核心控制器的操作流程大致是:1.创建action业务控制器2.通过getModel()得到user对象3.调用user的setXXX方法设置其属性值.
值得一提的是,核心控制器不会再创建User对象,因此我们必须在action中创建,如上user=new User();

?

?

热点排行