struts转发与路径

17 篇文章 0 订阅

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值