[size=large][b]请大家指教一下,是否有什么办法能解决这种问题。[/b][/size]
标题描述的不是很清晰,下面是问题的发生情况:
1、过去系统中所有的跳转、JSP页面中图片的引用都以绝对路径来写,例如:MyJsp.jsp
[code="java"]
This is my JSP page.
跳转
[/code]
2、项目是部署到resin3.1.6中的webapps\ROOT目录中,resin.conf没有做修改:
[code="java"]
[/code]
3、访问路径即服务器地址,例如: http://localhost/MyJsp.jsp
在这种情况下,项目页面跳转,图片显示都没有问题,因为'/'直接是localhost
[size=medium][b]问题所在:[/b][/size]
当需要把项目发布为其他应用名的时候,问题显现出来,所有的图片和页面跳转都出现错误。例如:
a. 由于要在resin下部署其他应用,所以把已有应用发布到 resin/webapps/myapp/文件夹中
b. 当访问http://localhost/myapp/MyJsp.jsp时,aa1.gif无法显示,查看图片路径为:http://localhost/aa1.gif
c.点击跳转链接时,页面跳转到http://localhost/other.jsp,当然,肯定找不到这个页面,报404错误
以下是我目前的解决方案,但我感觉不是最优的。
通过虚拟主机的方式来解决这种问题。
[code="java"]
myapp.com
<root-directory>.</root-directory>
<web-app id="/" root-directory="webapps/myapp"/>
[/code]
[b]问题补充:[/b]
补充一下:
本人不想通过修改页面链接的方式来解决这个问题,因为如果要修改页面中链接路径的话,需要大量的工作量,我认为不是最好的方式。
谢谢firefly.li 的回答,您的方式确实可以,不过不是我想要的方式。
[b]问题补充:[/b]
--------感谢3楼energykey回答------------
你说的方式确实可以解决问题,但这个filter相当于是在项目之外的,那如果我在resin下部署多个应用,譬如webapps/test1,webapps/test2...
那如何来重写URL。所以我觉得这不是我想要的答案
其实我只是希望知道是否能够通过修改web.xml或者服务器的配置来解决这种绝对路径的问题。
也感谢4楼的回答
你说的这种方式我考虑过,也试验过,不过没有成功~~~
[b]问题补充:[/b]
再次感谢energykey的指点。以为真的有捷径。不过目前项目使用虚拟主机用起来还是很方便,这种绝对路径的写法到底是对是错我不是很清楚,我所知道的是这种绝对路径写起来很方便,所有的链接前面一个‘/’就全部从根目录开始,不用写那些讨厌的../....,更不用担心目录层次结构的更改,并且也有虚拟主机的方式来解决这种问题。
我想,在实际生成环境中,大部分的系统都会有自己的主机(至少是虚拟的)、有自己的域名,所以还是可以考虑延续这种方式。