一、Action搜索的顺序:
先进行package是否存在,如果存在则判断Action是否存在,如果不存在则在namespeace的packafe里寻找action;没有则报错
如果不存在则检查上一级路径的package是否存在(到默认的/namespace)重复判断package是否存在
二、动态调用的方法(Action)
作用:为了解决一个Action对应多个请求的处理,以免Action过多
(1)、在struts.xml中的<action>里添加method属性,method属性对应着Action中的方法名
《不推荐使用的方法》(2)、在struts.xml中的<struts></struts>中加入<constant name="struts.enable.DynamicMethodInvocation" vallue="true">
<result name="name名称">/返回的页面</result>并且将Action中该方法的返回值改为在result中的name
(3)、通配符方式(官方推荐使用的方式)
在struts.xml中的<action>标签的name中可以使用(*)星号占位符,进行占位,在{1}然后用花括号 输入的是占位符输入的内容
三、指定多个配置文件:
在struts.xml中配置使用<include file="其他的suruts.xml的文件"></include>标签进行配置
如何在struts2中配置字符编码:
在struts.xml使用<constant name="struts.i18n.encoding" value="字符集"></constant>标签进行配置
四、默认的Action(当用户输入错误的Action的时候,默认的Action调用)
<default-action-refname="index"></default-action-ref>
<action name = "index"><result>/jsp路径</result>
PS:如果项目里运用了"通配符号",首先会去和统配符先匹配,如果没有才会寻找默认的Action。
五、Struts2中改后缀的三种方式:
在struts.xml中的<starts></starts>配置
(1)、<constant name="struts.action.extension" vlaue="html"></constant>
在struts.properties中配置
(2)、struts.action.extension=" "," "," "; //可以添加多个后缀名
在web.xml中的过滤器<filter></filter>中进行配置
(3)、<init-param>
<param-name>struts.action.extension<param-name>
<param-value>html</param-value>
</init-param>
六、接受参数的三种方法
(1)、使用Action的属性自动获取表单提交过来的属性
(2)、使用DomainModel接受参数
建立一个实体类,在Action中进行声明,通过他的get、set方法,通过user.getUserName获取用户名; 将<from>表单中<input>中的name改为user.username
//代表这个username是传入到USER这个实体类中的
(3)、使用ModelDriver接口接受参数
建立实体类,在Action中实现Mode(Driven) <泛型> 接口 , 实现接口中的方法返回实体类对象 //这样就不需要在表单中说明是在哪个类里的了
七、Action返回的处理结果类型(字符串类型)
Struts2的处理流程: 用户请求-->struts框架-->控制器(Action)-->Struts框架-->视图资源
<result name="success">/返回的视图页面</result>
ruseult 中的 name 就是result元素的逻辑视图名称
SUCCESS:Action正确执行完成,返回对应的视图,success是name的默认值
NONE:表示Action正确执行完成,但不返回任何视图
ERROR:表示Action执行失败,返回到错误的视图
LOGIN:Aciton因为用户没登陆的原因没有正确的执行,将返回该登陆视图,要求用户进行登录验证
INPUT: Action的执行,需要从前端获取界面获得参数,INPUT就代表这个参数的输入的界面,一般在应用中,会对这些参数进行验证, 如验证没通过,自动返回该视图