在Intellij中配置Tomcat參考這篇文章
IntelliJ 2016.2 IDEA 中進行 Java Web 項目開發配置
過程中有幾個問題需要搞明白
- 如果使用默認的應用上下文那么訪問應用時候的url就是 http://localhost:8080/
- 如果把上下文改為自己的項目名稱 /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)
- /MyProject/request (以"/"開頭,再加上項目名)
- request (不以"/"開頭,直接寫)
建議配置
- Application Context 設置為 /項目名
- form action="/項目名/requset"
- web.xml中設置url-pattern為 /request
這樣設置,無論從intellij中啟動web項目,還是手動啟動comcat,訪問servlet都沒有問題
而關于 servlet的url-pattern匹配規則詳細描述,查看這篇文章,寫的很詳細了