我们有一个本地运行的网络应用程序,因此在许多jsp中,我引用了http://localhost:8080/MyApp/index.html之类的东西。我们现在想要创建一个部署,但是通过许多不同语言的文件(html,jsp,xml等)并手动将localhost URL更改为实际部署URL似乎不方便 - 比如192.168.0.4:8080/MyApp /index.html。
人们在这做什么?理想情况下,我想选择使用这两个URL,以便我可以维护在我的机器上运行的webapp的本地版本,并且还可以在我的网络上运行已部署的机器。一个想法是在SVN中使用分支/标记作为部署,并仅在该分支中更改URL。这可能适用于dev + deploy服务器,但有没有更通用的方法来抽象webapp中使用的URL?
任何想法都将不胜感激!
答案 0 :(得分:1)
不要对域名和上下文路径进行硬编码。
动态解决它们。此信息可从HttpServletRequest
获取。 E.g。
String base = request.getRequestURL().toString().replace(request.getRequestURI().substring(1), request.getContextPath());
// ...
使用如下
<a href="${base}/index.html">
或使用HTML <base>
标记。另请参阅Browser can't access/find relative resources like CSS, images and links when calling a Servlet which forwards to a JSP以获取一些提示。
答案 1 :(得分:0)
当您链接到同一应用程序中的另一个资源时,通常不必引用Web应用程序中的完整URL(包括协议,主机,端口甚至上下文根)。相反,您应该能够使用相对URL。例如,您应该能够引用“index.html”,而不是引用“http:// localhost:8080 / MyApp / index.html”。
答案 2 :(得分:0)
我使用了这个解决方案:
${pageContext.request.contextPath}/some/path/index.html
BalusC与另一篇提示相关的帖子相关联,但在他的回答中没有,所以我加入了自己的帖子。