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的监听器

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

找到相应的action

转到相应的result

 最后转到hello.jsp

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类

找到xx.action_class
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




6、通配符

 * 和{ }的写法

分别访问链接

http://localhost:8080/_struts2_03_TongPeiFu/hello_add

http://localhost:8080/_struts2_03_TongPeiFu/hello_delete

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

*替代的部分用{1}按顺序标记
找到相应的method
不同的访问URL
最后展现相应的页面

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

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

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

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

参数类型自动转换,一一对应的规则只和set方法的后缀属性名相匹配
验证传递结果


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

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

接收参数的不是属性,而是自动new一个实体类的对象赋值给action类的对象属性
用来接收的实体类
传参检验


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

IoC:

随便提交一个表单

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


实现RequestAware, SessionAware, ApplicationAware三个接口,并重写三个set方法。

在JSP中获取结果
最后显示页面

容器:

action类改变



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

容器:

request可以取得页面的值

IoC:略




11、默认action

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




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容