为什么web应用不在tomcat根目录下时,iframe src链接的地址就不工作

一个基于struts1.x的应用,web页面有如下代码

[code="html"]



[/code]
即有一个iframe链接到一个action。
action的代码如下
[code="java"]
public ActionForward include(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
return new ActionForward("/admin/main.jsp");
}
[/code]
现在有如下问题,当把这个应用部署在tomcat6.x的根目录下,即访问地址是
http://localhost/index.jsp
的时候毫无问题,action执行了正常的跳转。src链接到了main.jsp

但是如果把该应用发布到一个文件夹下
http://localhost/test/index.jsp
就无法执行了,iframe里嵌入了tomcat反馈的400错误。
而且经过我测试,此时的include方法没有得到执行,请问这是怎么回事呢

3个回答

"/"就是web应用的根目录,也就是http://[ip]:[port]/
用相对目录(不使用"/"或者"../")或者指定项目名才能得到
http://[ip]:[port]/[project_name]/

你可以把斜杠去掉试试看,或者 前加一个
testPath
这样鼠标移上去可以看到链接的地址,从而判断相对路径的层级

h248980496
h248980496 其实一楼的回复已经对了,只是没有授之以渔而已
7 年多之前 回复
abcbuzhiming
abcbuzhiming 你说的办法是对的,我通过你的办法找到了真正的地址,原来存在一个上下文地址问题,当web应用发布在某个目录下的时候,使用/action会跑到网站根目录下,也就是不带那个发布目录,得到的跳转地址,也不带发布目录,于是就400了,在这去掉这个斜杠就搞定了
7 年多之前 回复

return new ActionForward("/admin/main.jsp");

应该跟这个有关系,试试改为
return new ActionForward("admin/main.jsp");

abcbuzhiming
abcbuzhiming 实践证明,这个地址不算数,实际得到的地址和action被呼叫的地址有关系,也就是说,当action认为自己在哪个目录,它会以自己所在的目录加上forwoard地址,如果这个目录恰好不对,就完蛋
7 年多之前 回复

除了楼上说的要改,iframe的src也得改吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐