jsp中的基本路径
在我的应用程序中,我使用struts2,并创建一个基本操作来解决路径问题:jsp中的基本路径,jsp,servlets,path,base,Jsp,Servlets,Path,Base,在我的应用程序中,我使用struts2,并创建一个基本操作来解决路径问题: class BaseAction{ private String path; static{ HttpServletRequest request = ServletActionContext.getRequest(); path=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getC
class BaseAction{
private String path;
static{
HttpServletRequest request = ServletActionContext.getRequest(); path=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();+"/";
}
}
然后,所有其他操作都会扩展此baseaction
在我的jsp页面中,我添加路径作为基础:
xx.jsp:
....
<head>
<base href="<s:property value='path'/>">
<script ... src="res/test.js" />
</head>
。。。。
它在我自己的机器上运行良好
test.js可通过以下方式找到“http://localhost:8080/app/res/test.js"
但当其他人尝试访问我的应用程序时,他们会使用:
现在,浏览器仍然尝试通过下载test.js
"http://localhost:8080/app/res/test.js"
当然,它不能得到它。真正的路径应该是:
由于“路径”在操作中是硬代码,有没有办法解决这个问题?在
静态
初始化块中,我不希望您有可用的请求。我会:
<base href="${request.contextPath}" />
在
静态
初始化块中,我不希望您有可用的请求。我会:
<base href="${request.contextPath}" />
您正在基本路径中设置本地主机和端口,而不是远程主机和端口 这毕竟不是创建基本路径的好构造。我建议按如下方式创建它:
path = request.getRequestURL().toString().replace(request.getRequestURI(), request.getContextPath()) + "/";
或者只是很好地使用JSTL/EL
<c:set var="r" value="${pageContext.request}" />
<base href="${fn:replace(r.requestURL, r.requestURI, r.contextPath)}/" />
您正在基本路径中设置本地主机和端口,而不是远程主机和端口 这毕竟不是创建基本路径的好构造。我建议按如下方式创建它:
path = request.getRequestURL().toString().replace(request.getRequestURI(), request.getContextPath()) + "/";
或者只是很好地使用JSTL/EL
<c:set var="r" value="${pageContext.request}" />
<base href="${fn:replace(r.requestURL, r.requestURI, r.contextPath)}/" />
怎么样
<base href="${pageContext.request.contextPath}" />
怎么样
<base href="${pageContext.request.contextPath}" />
您能否验证其他人看到的HTML中的基本href是否正确?从静态初始值设定项访问Servlet上下文或请求似乎是自找麻烦。。。。正如从静态初始值设定项设置实例变量一样。这是如何编译的?在其他人看到的html页面中,base href仍然是“”,您能验证其他人看到的html中的base href是否正确吗?从静态初始值设定项访问Servlet上下文或请求似乎是自找麻烦。。。。正如从静态初始值设定项设置实例变量一样。这是如何编译的?在其他人看到的html页面中,基本href仍然是“”@hguser-我想我的答案仍然适用。谢谢,我明天会尝试一下。你是对的,我不应该在静态块中设置路径,它应该在每个请求中获得。@hguser-我想我的答案仍然适用。谢谢,我明天会试试。你是对的,我不应该在静态块中设置路径,它应该在每个请求中获得。你的意思是我不能使用静态块,我应该根据每个请求创建路径吗?我没有说过,我也不知道,因为我不做Struts2,但你至少告诉我它在本地工作,而不是远程工作,提取基路径的方法不正确(使用本地地址而不是远程地址),这确实证实了这种行为。你尝试过我的建议了吗?现在,我在家,明天我会尝试你的建议。:)你的意思是我不能使用静态块,我应该根据每个请求创建路径吗?我没有这么说,我也不知道,因为我不做Struts2,但你至少告诉我它在本地工作,而不是远程工作,这种行为确实通过提取基路径的错误方式得到证实(您使用的是本地地址而不是远程地址)。您是否尝试了我的建议?现在,我在家,明天我将尝试您的建议。:)