访问struts2的Action的方法有超链接(<a href="first.action">请求struts2</a>),表单提交等多种形式
struts2的struts.xml中package的namespace是逻辑地址,与webcontent下存放jsp的文件名无关
一、struts2的Action的工作流程:
jsp或html的表单提交——>
web.xml中配置的struts2过滤器根据表单action的内容进行过滤——>
先根据struts.xml中的action的name和class找到对应的actioin类——>
在action类中进行业务功能,并返回相应的值——>
struts.xml根据相应的值和处理结果——>
跳转到相应的jsp页面
二、Action接收来自表单的数据的方法(都是IOC注入):(推荐使用ModelDriven,最方便)
方法1.表单提交的数据⾃自动注⼊入action的相应属性(提供getter/setter⽅方法)
方法2.使⽤用DomainModel接收表单提交的数据
方法3.使⽤用ModelDriven来接收表单数据
三、一个action中不同业务逻辑处理方法的调用:(execute一般是用于单一业务逻辑,就算写成多个逻辑也很麻烦)
方法1.动态action正常的形式
action类中写不同业务逻辑的处理方法,jsp的表单中action="actionname!方法"
方法2.在struts.xml中配置action的method属性
action中内容为<action name="name1 " class="classname" method="方法1">
........
</action>
<action name="name2" class="classname" method="方法2">
........
</action>
..................
jsp的表单中action="action"(不需再写方法,因为struts.xml中规定访问这个action时直接调用这个action的某个方法)
方法3.使⽤用通配符
四、 在实际应用中,为了实现不同业务模块的划分通常使用namespace(webcontent中的jsp也是按模块划分),不写默认是根目录/。
struts.xml中<package name=" " namespace="/或者/user等" extends="struts-default">
..........(中可写多个action)
</package>
jsp的表单中action="user/check.action>
或超链接中<a href="admin/check.action>admin</a>
五、可在jsp中使用request/session/application展示信息
方法1.使用Map对象
在action类中 添加构造函数并在其中给request/session/application赋值,在execute()或业务处理方法中给request/session/application添加键值对
在jsp中使用request/session/application展示信息
方法2.实现RequestAware接口