从Intellij将web应用部署为tomcat中的ROOT.war应用

从Intellij将web应用部署为tomcat中的ROOT.war应用,tomcat,web-applications,deployment,intellij-idea,Tomcat,Web Applications,Deployment,Intellij Idea,我如何将应用程序部署到Intellij中的tomcat作为ROOT.war 我部署了两个应用程序,两个应用程序的页面代码如下: <c:url value="/someLink"/> 而部署在上下文路径/something上的另一个应用程序给出以下结果: /someLink http://localhost:8080/something/someLink 如何确保部署在上下文路径/上的应用程序也能完成此操作? 最终的结果是这样的 http://localhost:8080/som

我如何将应用程序部署到Intellij中的tomcat作为ROOT.war

我部署了两个应用程序,两个应用程序的页面代码如下:

<c:url value="/someLink"/>
而部署在上下文路径
/something
上的另一个应用程序给出以下结果:

/someLink
http://localhost:8080/something/someLink
如何确保部署在上下文路径
/
上的应用程序也能完成此操作? 最终的结果是这样的

http://localhost:8080/someLink

我不知道为什么在根上下文中得到的结果与在命名上下文中得到的结果不同。对我来说,JSTL
总是给出一个相对路径,不管它是根上下文还是命名上下文。我只是在Tomcat7中测试了一下。显然,您正在使用的JSTL实现中有一些不同的东西导致了不一致的结果

对于
实现应该做什么,这个问题是不明确的。第7.5节:

URL必须是以方案开头的绝对URL(例如“http:// server/context/page.jsp”)或jsp.2.2.1中jsp 1.2定义的相对URL “相对URL规范”


我建议您看看答案,因为它可以告诉您如何获得完全限定的URL。您可能需要进行调整(即,在为服务器URL添加前缀之前,请参阅其中的一部分是完全限定的),以补偿
实现在根上下文中的行为与命名上下文中的行为不同这一事实。最终,最简单的事情是编写自己的标记来处理所有这些(即包装其他标记)

我找到了解决这个问题的办法。 问题是Intellij在上下文
/
下部署了应用程序

使用带有以下值的
-标记时
-标记将链接更改为
//someLink
。 当URL放在响应上时,它不会以主机名作为前缀

我解决这个问题的方法是在war的META-INF目录中添加一个context.xml文件,其中包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="" />

这会导致Intellij在上下文
下部署应用程序,而不是
”/“
标记将链接转换为
/someLink
,并将响应包括主机名


您还必须确保从Intellij部署的war名为ROOT.war,以使其正常工作。

您的问题不是很清楚。你得到的结果正是你所期望的。对于第一个结果,使用根上下文,您期望的是
http://localhost:80890/someLink
而不是
/someLink
?马克,事实上,我希望它是
http://localhost:8080/someLink
而不是
/someLink