【发布时间】:2011-03-30 11:07:07
【问题描述】:
在我的应用程序中,我使用了 struts2,并创建了一个基本动作来解决路径问题:
class BaseAction{
private String path;
static{
HttpServletRequest request = ServletActionContext.getRequest(); path=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();+"/";
}
}
然后所有其他动作扩展这个基本动作。
在我的jsp页面中,我添加了路径作为基础:
xx.jsp:
....
<head>
<base href="<s:property value='path'/>">
<script ... src="res/test.js" />
</head>
它在我自己的机器上运行良好。
http://localhost:8080/app test.js 可以通过“http://localhost:8080/app/res/test.js”找到
但是当其他人尝试访问我的应用时,他们会使用:
现在,浏览器仍然尝试通过以下方式下载 test.js "http://localhost:8080/app/res/test.js"
当然,它不能得到它。真正的路径应该是: http://192.168.x.x:8080/app/res/test.js
既然,“路径”是行动中的硬代码,有什么办法解决这个问题吗?
【问题讨论】:
-
您能否验证其他人看到的 HTML 中的基本 href 是否正确?从静态初始化程序访问 Servlet 上下文或请求似乎是自找麻烦。
-
... 从静态初始化程序设置实例变量也是如此。那是怎么编译的?
-
在别人看到的html页面中,base href仍然是"localhost:8080/app"