3.1 Struts2执行过程
1、获取Struts2资源
2、在应用程序中导入Struts2的类库
3、在web.xml中配置StrutsPrepareAndExecuteFilter
4、编写Action类进行配置
5、配置返回结果与物理视图资源的关系
6、编写结果视图
web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Action类
核心控制器(Filter):用于拦截用户的请求 ,对请求进行处理
业务控制器(Action):调用相应的Model类实现业务吃了,返回结果
Struts.xml
<struts>
<constant name="struts.ui.theme" value="simple"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="struts.LoginAction">
<result name="success" type="dispatcher">guanli.jsp</result>
<result name="input">login.jsp</result>
</action>
</package>
</struts>
Result
1、当web容器接收到请求后,将请求交由在web中配置的Struts2框架的控制器StrutsPrepareAndExecuteFilter(控制器)
2、由StrutsPrepareAndExecuteFilter确定请求对于的Action(业务控制器)
3、框架根据Action返回的结果字符串,由StrutsPrepareAndExecuteFilter选择对于的result,将结果呈现给用户
Action只负责返回结果,不与视图关联
Struts2配置文件
处理中文乱码:
<constant name="struts.il8n.encoding" value="UTF-8"></constant>
Struts2的包:
<package name="default" namespace="/" extends="struts-default">
name:必需且唯一,指定包的名称
extends:指定要扩展的包
namespace:可选,定义包中的Action的命名空间
Struts-default.xml:Struts2的默认配置文件,提供默认值,自动加载
struts-plugin.xml:Struts2插件使用的配置文件
3.2 Action的配置
作用:
1、封装工作单元
2、数据转移场所
3、返回结果字符串
method属性:
例:
<action name="login" class="struts.LoginAction" method="login">
<result name="success" type="dispatcher">guanli.jsp</result>
<result name="input">login.jsp</result>
<result name="error">error.jsp</result>
</action>
调用login.action之后,执行login方法,根据返回结果字符串返回结果视图
Action动态方法调用
<action name="Struts" class="struts.StrutsAction">
<result name="login">guanli.jsp</result>
<result name="Guanli">guanli.jsp</result>
<result name="Details">details.jsp</result>
<result name="Fabu">guanli.jsp</result>
<result name="Update">guanli.jsp</result>
<result name="Register">login.jsp</result>
</action>
这种方法的使用可以减少xxxAction的数量,但是会带来安全隐患
使用方法:Struts!login.action
通配符:
<action name="*house" class="struts.StrutsAction" method="{1}">
<result name="success">{1}.jsp</result>
<result name="input">{1}.jsp</result>
<result name="error">error.jsp</result>
</action>
调用方法:loginhouse.action,配置该action元素时,还指定了method属性
默认的Action:
<default-action-ref name="defaultAction">
<action>
<result name="error">error.jsp</result>
</action>
</default-action-ref>
3.3 Result的配置
常用结果类型
dispatcher:result默认结果类型,以转发方式请求指定的视图资源,请求中包含的数据信息依然存在
redirect:以重定向方式请求指定的视图资源,请求中包含的数据信息将丢失
redirectAction:以重定向方式请求指定的视图资源,请求中包含的数据信息将丢失,主要重定向到另一个Action
动态结果
通过指定方法返回的值,指定执行哪一个Action(业务控制器)
全局结果
<struts>
<constant name="struts.ui.theme" value="simple"></constant>
<package name="default" namespace="/" extends="struts-default">
<global-result>
<result name="error">error.jsp</result>
<result name="login" type="redirect">login.jsp</result>
</global-result>
</package>
</struts>