在Tomcat中配置应用Context的一些差异与注意事项。

来源:互联网 发布:蒋经国 知乎 编辑:程序博客网 时间:2024/06/05 11:20
使用的是Struts框 架:1,用""作应用的DocBase,这时该应用的相对路径是从整个URL倒数第一个"/"开始的,这时在页面中写相对路径的时候注意要在前面加上"/",如:http:/login.do。在系统看来"/login.do"是相对路径,面应用的当前位置是在http://localhost/admin下面。2、用"/"作DocBase的时候,应用的相对路径是从整个URL顺数第一个"/"之后开始,这时在页面构造相对路径的时候不要在前面加了"/",如:http:/login.do。在系统看来,admin/login.do才是相对路径,如果把第一种情况的相对路径对应到这种情况上来,会出现http://localhost//login.do的情况。所以在配置工程的Context的时候因该认真考虑路径的问题。 这是个教训,以后在团队开发的时候一定要统一使用相同的配置。上面两种情况看起来相当,但是在调试的过程中导致了大量的路径的错误。3、类似的配置是DocBase后面以""结束的,和第1种情况相仿,DocBase后面以"/"结束的,和第二种情况相仿。4、两种配置的优缺点比较: 在工程中,常常会用到客户标签来构造一些URL,工程中Struts的Action通常会带有很长的名字和多个"/"分割符,如果使用""这种情况的配置,在构造URL的时候会产生混乱。比如说我们的Context本是http://localhost,有一个Action是这样的/admin/login.do,这时完整的路径就会是http:/login.do,如果页面中产生一个请求,是请求/admin/viewUser.do的话,浏览器会把完整的路径解释为:http:/admin/login.do,这就跟我们的用意相违背了,发生了错误。而使用"/"作为Bastpath的情况,就可以避免这种情况的出现,但是这种情况在Struts框架下的表单中构造完整路径的时候会产生严重的错误,可以认为是Struts的一个Bug,通过修改源码问题得以解决。 而""作为DocBase的问题解决方法也很简单,我们可以在请求中取得所配置的Context直接手动构造完整的路径,不交给浏览器去解释,可以避免出错。
原创粉丝点击