大纲:作用,数据结构,创建
1、Struts_ActionForward 模型层组件
- 作用:封装转向信息
- 在action的excute方法中创建,通过ActionMapping创建
- 由struts使用,
excute的返回值是actionForward类型,struts通过ActionForwardConfig方法对actionForward里的转向信息进行分析,拿到相应的转向路径及其转向方式,由struts进行跳转到相应的结果页面
1、数据结构 封装了3个属性:name,path,redirect
actionForward继承forwardConfig
源码:
public ActionForward(String name, String path, boolean redirect) {
super();
setName(name);
setPath(path);
setRedirect(redirect); //默认为false,服务端跳转
}
//配置
<forward name="login" path="/login.jsp" redirect="true"/>
public ActionForward findForward(String name) {
ForwardConfig config = findForwardConfig(name);
if (config == null) {
config = getModuleConfig().findForwardConfig(name);
}
return ((ActionForward) config);
}
//配置
<forward name="login" path="/login.jsp" redirect="true"/>
3、引入全局配置的原因:减少配置量
全局和局部配置都存在时,以局部为主
全局配置信息,
<global-forwards>
<forward name="login" path="/login.jsp" redirect="true"/>
</global-forwards>
ModuleConfig封装整个配置文件
public ModuleConfig getModuleConfig() {
return (this.moduleConfig);
}
4、创建actionForward的两种方式:
- 配置信息创建ActionForward mapping.findForward(“login”);
产生的问题:通过配置信息创建的ActionForward不允许在程序中修改 - 手动创建ActionForward对象,actionForward提供了无参的构造方法
name=null
path=null
redirect=false
5、使用request和response进行跳转
注意:
1、跳转页面前要加上项目名 request.getContextPath() 拿到项目名
request.getRequestURI() 项目名后面的字符串(包括项目名)
2、return null
6、动态ActionForward( DynaActionForward)
在运行时动态生成跳转路径
ActionForward af = new ActionForward();
af.setPath("/page" + page + ".jsp?name=Tom");
return af;