概念:
1. 转发(forward):其名字仅在程序内部可见,用户看不到。分为两种:针对一个action的局部转发,和全局转发。都需要配置;
2. 路径(path): 其名字不仅在程序内部可见,也能被最终用户看到,如.do和.jsp等。do要配置,jsp不需配置。
使用原则:
1. 为提高程序的灵活性,程序内部尽量使用转发名字,路径最好仅在配置文件中使用,不要把路径硬编码到action代码和html:link中;
2. 可以考虑把暴露给用户的jsp转换为do,以便在需要时使用其他的表现层,作为jsp的替代技术,如模板。
转换:
只能把 路径
-> 转发
,
配置成全局转发或action转发,用于以下两个场合:
1.
action 的 mapping.findForward(""); 局部转发或全局转发
2. <html:link forward=""> 全局转发
转换方法:
1. 把 .jsp 转换为 forward: 使用<forward name="xxx
"
path="/xxx.jsp
" />
2. 把 .do 转换为 forward: 使用<forward name="xxx
"
path="/xxx.do
" />
3. 需要时,可把暴露给用户的 .jsp 转换为 .do: 使用<action path="/xxx
"
forward="/xxx.jsp
"/>
一、Action 处理结束后,返回 Forward 有以下3种形式:
1. return mapping.findForward("
目标
");
//常规的根据名字转发
;
此处的目标
为该 action 定义的 forward 名称,或者全局的
forward 名称;
2. return new ActionForward("
目标
");
//任意路径转发
(不推荐使用,应把该路径配置为转发)
此处的目标
为 path ,可以任意指定 jsp 或 do;
3. return mapping.getInputForward();
//返回到输入位置
转发到 input 属性指定的来源位置; 一般用于business验证失败之后的转发
二、路径转换:把 .jsp 或 .do 路径封装转换为新的 .do 路径,有以下方法:
1. 使用常规的action方法; 需要编写一个action,转向到指定地方,并进行常规配置;
2. 无需编写Action,只需配置 <action path="
/dest
" forward="
/source.jsp
"/>
,把 /source.jsp
封装为 /dest.do
,
新的路径可用于(a) return new
ActionForward("/dest.do");
或(b) <html:link action
="/dest
">
或(c) <html:link page
="/dest.do
">
或(d) 浏览器访问的URL中时,推荐使用。
上述a,b,c方法不推荐使用,建议更换为forward。
三. 全局转发,可用于:
(a) return mapping.findForward
("全局转发名
");
(b) <html:link forward
="全局转发名
">
不可用于:浏览器访问的URL,以及其他需要path的地方
四. 把 index.do 配置为默认页面的方法:
1. 如果未配置 path为 /index 的 action,则可用上述
(二.1)方法定义一个路径转换;以便指向index.jsp或其他任意位置;
2. WebRoot 下面建一个文件名为 index.do ,内容任意;
3. web.xml 中配置 welcome-file 为 index.do