Intellij 配置Tomcat Web項目訪問路徑

在Intellij中配置Tomcat參考這篇文章
IntelliJ 2016.2 IDEA 中進行 Java Web 項目開發配置

過程中有幾個問題需要搞明白

應用上下文
  1. 如果使用默認的應用上下文那么訪問應用時候的url就是 http://localhost:8080/
  2. 如果把上下文改為自己的項目名稱 /MyProject 那么訪問的url就是 http://localhost:8080/MyProject
項目結構
  • 下面這個form表單原本寫的有點問題,action原本寫的是 "/request" 和 web.xml中的 url-pattern寫的一樣,當我點擊提交的時候,網頁提示404找不到資源。

先看一下下面的URL:
http://192.168.1.1:8080/hello/index.html
一個URL由
服務器地址: http://192.168.1.1:8080
WEB應用上下文: /hello
網頁或請求: /index.html
三個部分組成。
WEB應用發布時,WEB應用上下文可以自行指定,如放在ROOT/下的話,WEB應用上下文就是空,如:
http://192.168.1.1:8080/index.html
它的WEB應用上下文就是空。
HTML協議中要求,form的action屬性,以“/”開頭是絕對路徑,不以“/”開頭的是相對路徑。
絕對路徑是相對于服務器地址而言的,相對路徑是相對于當前網頁或請求而言的。
舉一個例子,你的當前網頁位置是:
http://192.168.1.1:8080/hello/page/index.html
其中/hello是WEB應用上下文;/page/index.html是網頁。
在這個網頁上有一個請求需要指向
http://192.168.1.1:8080/hello/servlet/checkUser.cgi
index.html中的form應該怎么寫呢?
可以寫成絕對路徑(相對于http:/192.168.1.1:8080)
<form action="/hello/servlet/checkUser.cgi" >
...
</form>
也可以寫成相對路徑(相對于http://192.168.1.1:8080/hello/page
<form action="../servlet/checkUser.cgi" >
...
</form>

由上可以看出,原本寫的 "/request" 是相對于服務器地址而言的,因此當我點擊提交時,由

跳向了

導致找不到資源。
將 action 從 "/request'改為"request"后,從相對于服務器地址改為了相對于項目地址,即
/request 對應著 localhost:8080/request
request 對應著 localhost:8080/MyProject/request

所以現在我們可以有兩種寫法(前提是Application Context 設置為 /MyProoject)

  1. /MyProject/request (以"/"開頭,再加上項目名)
  2. request (不以"/"開頭,直接寫)
form.html
web.xml

建議配置

  1. Application Context 設置為 /項目名
  2. form action="/項目名/requset"
  3. web.xml中設置url-pattern為 /request
    這樣設置,無論從intellij中啟動web項目,還是手動啟動comcat,訪問servlet都沒有問題

而關于 servlet的url-pattern匹配規則詳細描述,查看這篇文章,寫的很詳細了

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容