如何抽象Tomcat URL进行部署?

时间:2011-08-09 17:22:23

标签: svn url web-applications tomcat deployment

我们有一个本地运行的网络应用程序,因此在许多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?

任何想法都将不胜感激!

3 个答案:

答案 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与另一篇提示相关的帖子相关联,但在他的回答中没有,所以我加入了自己的帖子。