Tomcat部署時路徑設定問題

很久沒寫網頁了,這類基本問題沒注意時還是會遇到

今天我網頁的homepage link是

<a href="myapp/">Home</a>

這裡的myapp是我war檔部署產生時候的名稱,但是war檔在實際上線的時候名稱改變了變成online

這樣所有link自然全部失效了

因為今天寫的是spring,一開始是使用pagecontext.request.contextpath

修正如下

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
...
<c:set var="contextPath" value=”${pagecontext.request.contextpath}" />
...
<a class="navbar-brand" href="${contextPath}">

這方法在project不是root的時候還沒問題,比如說

http://localhost/online?p=123
=>變成
http://localhost/online

但是丟到tomcat上的時候如果部署到root的時候就會出現奇怪的bug

後面的參數會一起被抓進去

http://localhost?p=123
=>變成
http://localhost?p=123

這樣不是我希望的,我希望他不要帶參數或是其他東西

後來用了jsp傳統的request.getContextPath()才解決此問題

修正後如下

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
...
<c:set var="contextPath" value=”<%=request.getContextPath()%>" />
...
<a class="navbar-brand" href="${contextPath}">
comments powered by Disqus