[Struts 2] 如何快速找出所访问页面的真实路径(转向哪个.jsp文件)?

问题

一个遗留的Java EE项目,使用Struts 2框架。项目文件数量众多,且架构略有点混乱。

 

现需要对项目中的部分JSP页面进行修改。问题在于:点击某个链接后,浏览器地址栏只显示“包名”和action的名称,例如:/StrutsDemo/math/toInput.do,无法快速得知到底跳转到了哪个JSP文件(/jsps/input.jsp)。

换句话说:Struts 2框架使用的是MVC架构,JSP文件的路径对于浏览器是不可见的。

 

尝试2种方法:

(1)由于项目中存在大量内容相似的JSP页面,无法通过查找页面内字符串的方法来定位对应页面。

(2)直接对Struts配置文件进行搜索:只能定位到对应的action,无法快速得知跳转到了哪个result。

而且对于使用通配符(*)作为名称的action,集成了多个result,就更加难以定位了。

 

      <action name="*" class="test.HotelAction" method="{1}">
          <result name="inputpage">/jsps/hotel/input_hotel.jsp</result>
		  ...
      </action>

思考

Struts 2遵循MVC架构。在MVC架构中,Model(JSP)对于View(客户端浏览器)不可见。但是Model(JSP)对于Controller (Struts 2)是可见的。因此,让Controller (Struts 2)输出调试日志即可。


解决方法

解法1:(最佳方案)

在log4j的配置文件中,Struts的日志输出级别改为debug,并重新部署项目。

 


然后,当点击某个链接时,Struts 2就会在控制台输出所访问URI对应的真实JSP路径了。

 


解法2:

(破坏MVC架构,且需改动多处代码,非最佳方案)


在<result>中加入type="redirect"

<action name="toLogin"class="loginAction"  
           method="toLogin">  
     <resultname="success" type="redirect">/loginBefore.jsp</result>  
</action>

参考:struts2 如何让地址栏显示jsp的真实路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值