Struts2基础1

1、执行流程

2、namespace

3、action

4、JSP之间跳转路径问题

5、动态方法调用DMI

6、通配符

7、在action中用属性接收参数

8、在action中用Domain Model(域模型)接收参数

9、访问web元素——用容器或IoC取得Map类型的request、session和application

10、访问web元素——用容器或IoC取得HTTP真实类型的request、session和application

11、默认action



1、执行流程

当客户端在浏览器中访问URL地址

http://localhost:8080/_struts2_00_action/hello_action

URL地址的请求会通过HTTP协议发送给Tomcat

Tomcat收到请求后会找到相应的Web Application

_struts2_00_action

并且读相应的web.xml文档

被Struts2的监听器监听到

Struts2基础1_第1张图片
Struts2的监听器

接下来通过namespace在struts.xml中查到相应的package

找到相应的action

转到相应的result

 最后转到hello.jsp

Struts2基础1_第2张图片
namespace为/的package

Struts2可以使得客户端的请求和最后的展现页面分开。


2、namespace

namespace决定了action的访问路径,默认为"",可以接收所有路径的action访问,但是位列其他的namespace之后。

可以写为/,/xxx,/xxx/yyy,对应的action访问路径/action,/xxxaction,/xxx/yyy/action

最好是用模块命名。



3、action

访问action时,通过namespace的package找到对应action和对应的action类

Struts2基础1_第3张图片
找到xx.action_class
Struts2基础1_第4张图片
action类一般继承ActionSupport类并重写execute()方法

通过action类execute()方法的返回值找到对应的result的name(result不指定name的话,默认为SUCCESS)

也可不调用默认的execute()方法,通过指定其他任意方法,建议使用动态方法调用DMI。

每次访问必定new一个新的action


4、JSP之间跳转路径问题:

当JSP页面访问别的页面时,它不会看JSP真正的路径在哪里,它只看服务器映射在地址栏的URL地址。

所以不推荐使用相对路径,建议JSP页面中所有链接全部使用绝对路径。

在JSP中使用request获取为佳。



5、动态方法调用DMI

调用xx下hello_action的fff()方法,只要此方法返回值是String类型

也可通过method参数指定固定的方法,但不推荐使用,更推荐使用通配符方法。

http://localhost:8080/_struts2_02_DMI/xx/hello_action!fff

Struts2基础1_第5张图片



6、通配符

 * 和{ }的写法

分别访问链接

http://localhost:8080/_struts2_03_TongPeiFu/hello_add

http://localhost:8080/_struts2_03_TongPeiFu/hello_delete

在namespace中未找到相应的action,但有 * 匹配的action。

Struts2基础1_第6张图片
*替代的部分用{1}按顺序标记
Struts2基础1_第7张图片
找到相应的method
Struts2基础1_第8张图片
不同的访问URL
最后展现相应的页面

7、在action中用属性接收参数

用链接传递两个参数s和i

http://localhost:8080/_struts2_04_parameter_property/hello_action?s=s&i=9

在action类中定义两个同名属性,并设置set方法。Struts2将在调用action的方法前,自动调用set方法给两个属性赋值。

Struts2基础1_第9张图片
参数类型自动转换,一一对应的规则只和set方法的后缀属性名相匹配
验证传递结果


8、在action中用Domain Model(域模型)接收参数

http://localhost:8080/_struts2_05_parameter_DomainModel/hello_action?u.no=11&u.name=zb

Struts2基础1_第10张图片
接收参数的不是属性,而是自动new一个实体类的对象赋值给action类的对象属性
Struts2基础1_第11张图片
用来接收的实体类
传参检验


9、访问web元素——用容器或IoC取得Map类型的request、session和application

IoC:

随便提交一个表单

跳转到action类后 由Struts2注入赋值


Struts2基础1_第12张图片
实现RequestAware, SessionAware, ApplicationAware三个接口,并重写三个set方法。

Struts2基础1_第13张图片
在JSP中获取结果
最后显示页面

容器:

Struts2基础1_第14张图片
action类改变



10、访问web元素——用容器或IoC取得HTTP真实类型的request、session和application

容器:

Struts2基础1_第15张图片
request可以取得页面的值

IoC:略




11、默认action

当action不存在时,找到默认action。

Struts2基础1_第16张图片



你可能感兴趣的:(Struts2基础1)