概念:
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