關於idea中Java Web項目的訪問路徑問題

說明

這裡隻以 servlet 為例,沒有涉及到框架,但其實路徑的基本原理和框架的關系不大,所以學瞭框架的同學如果對路徑有疑惑的也可以閱讀此文

項目結構

在 idea 中新建一個 Java Web 項目,項目的初始結構如下 ( 不同版本的 idea 可能略有區別 ) :

默認訪問路徑

  • 當我們將項目的基本配置設置好後,啟動 Tomcat,會發現直接出現的是 index.jsp 頁面,此時瀏覽器的地址欄顯示的是:localhost:8080,也就是說項目默認跳轉到瞭 index.jsp 頁面,而且打開 web.xml 文件後,我們發現這裡並沒有配置 index.jsp 為首頁,這點要註意
  • 非常重要的一點:做開發測試時,如果用瞭 index.jsp 這個頁面做測試,一定要分清楚項目是啟動的時候直接就跳轉到瞭這個頁面,還是經過瞭其它的路徑才跳轉到瞭這個頁面,如果沒有這個意識的話,很可能在實際開發中會出現問題,所以一般不推薦用 index.jsp 作為測試頁面
  • 還是之前的設置不變,當我們在瀏覽器輸入 localhost:8080/index.jsp 時,會發現顯示的仍然是 index.jsp 頁面,也就是說,jsp 頁面的訪問路徑是直接從項目的 web 目錄的下一級目錄開始的,我們這裡的 index.jsp 由於就是直接處於 web 目錄的下一級,所以直接在 localhost:8080/ 後面加上文件名即可

jsp頁面的訪問路徑

由之前的分析可知,如果我們在 web 目錄下新建一個名為 jsps 的目錄,然後裡面有一個名為 demo.jsp 的文件,那麼我們要想訪問到這個文件,在瀏覽器地址欄中輸入的就是 localhost:8080/jsps/demo.jsp,此時項目結構如下:

說明: 這裡並沒有嚴格按照 Java Web 項目的結構那樣建立 classes 和 lib 文件夾,然後進行配置,但對於這裡要說明的問題而言並沒有影響

servlet文件的訪問路徑

在 src 目錄下新建一個名為 com.lwx.servlet 的包,然後在這個包下新建一個名為 DemoServelt 的 servlet 類,此時項目結構如下:

  • servlet 文件的訪問路徑我們可以在 web.xml 中自己配置(使用的是 url-pattern 標簽),或者是使用註解的形式(使用的是 urlPatterns 屬性),不管采用哪種形式,其對應的值都和我們的訪問路徑有關(如果兩種形式同時采用,實測隻有 web.xml 中的配置生效,也就是說此時如果以註解中配置的路徑來訪問 servlet 是會報 404 的)
  • 對於 idea 來說,servlet 的訪問路徑比較簡單,直接在 localhost:8080 後面加上我們自己配置的值即可
  • 如果我們在 web.xml 中對其所做配置如下,則訪問路徑為 localhost:8080/DemoServlet

特別註意:如果這裡的 url-pattern 的值寫的是 /*,那麼當我們在瀏覽器的地址欄輸入 localhost:8080 甚至是 localhost:8080/index.jsp 或者是 localhost:8080 後面跟上任何合法的字符串,訪問的都是 DemoServlet 這個 servlet 類(細心的同學就會發現這裡雖然輸入瞭 localhost:8080/index.jsp ,但訪問的並不是 index.jsp 這個文件,而是 DemoServlet 類)

如果我們使用註解的方式對其所做配置如下,則訪問路徑為 localhost:8080/DemoServlet

特別註意:name 屬性的值需要和對應的類名一致

idea中獨有的路徑配置

打開 Run —> Edit Configurations —> Deployment,在右側有個 Application context,這裡的值也是和路徑有關的

Application context 中填寫的值會直接加到 localhost:8080 的後面,以之前的例子來說,本來 DemoServlet 這個 servlet 類的訪問路徑是 localhost:8080/DemoServlet,如果在 Application context 中填寫的是 /haha,那麼其訪問路徑就變成瞭 localhost:8080/haha/DemoServlet,對於 jsp 頁面的訪問路徑也是同樣的道理

到此這篇關於idea中Java Web項目的訪問路徑問題的文章就介紹到這瞭,更多相關idea javaweb訪問路徑內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: