struts2学习---中级篇

1:action的寻找顺序:

如果有三个action,一个name叫User_Add,一个name是User_*,一个name是*_*,你会发现,当你访问时,这3个action都会匹配.

此,首先匹配最精确的,其次按照代码的顺序匹配带*号的

2:action接收参数:三种方式,参考3,4,5

示例:当你输入url:http://localhost:8080/aaa时,点击页面的一个链接后,

url会变成:http://localhost:8080/aaa/user!add?name=mm&age=8  ,怎么会变成那样的?参考3

3:第一种:在自己的action类中,定义属性name和age,并写好get和set方法。

然后在写action的时候带入参数“login!add?name=1&age=8”即可

4:第二种:使用Domain Model(域模型)接收参数。如图:action类的属性是一个类

浏览器url如图:

但是,如果在用户登陆模块里,有密码确认该选项,域模型就行不通了。

此时:新建类UserDTO,如图:

然后在action里面定义dto属性,此时前台输入的参数就会和dto匹配了,在相应的方法里处理完之后,再生成dto对象生成一个user对象。

如何生成?从dto里面拿出对象,填到实体类user里面

DTO(数据传输对象)的执行过程:首先在action中把dto对象填充好,然后把这个dto整体交到domain中去,【new User(UserDTO dto)】。

何时用?当页面的参数和实体类属性不匹配的时候,有两种接收方式,一是利用属性单独接收,二就是用dto

5:第三种:用ModelDriven(模型驱动)接收参数(不常用,但是隐含了一种重要的思想):

在action类中实现了ModelDriven<User>接口,此时user必须自己new,并且必须有getModel()方法用以返回user

struts2如何将参数传递给user的?

struts2接收到两个参数后,就会去new action,会发现该action实现了一个ModelDriven接口,然后调用getModel方法,返回一个Model是user,拿到user之后就可以setName咯

6:struts2的中文解决办法:用2.0的filter

7:错误页面的反馈

8:简单的数据校验

9:后台向前台的页面传递值

10:<s:property>专门取value stack和stack context中的属性

value stack中的属性如何取?直接写他的名字即可。eg:<s:property value="errors"/>

posted @ 2013-03-21 11:31  歌颂者  阅读(550)  评论(0编辑  收藏  举报