訪問Webapp目錄下面的html檔案變為程式碼

一只爱阅读的程序员發表於2024-03-16

一、問題由來

  一位朋友最近在學習JavaWeb開發,使用Servlet做練習的時候,突然出現一個問題。他去訪問自己建立的html檔案時,發現返回的資料是html程式碼,而不是解析後的頁面

很是疑惑,自己嘗試著解決這個問題,很久都沒有解決問題,然後就找到我。問題復現情況如下,

正常來說,訪問html頁面,瀏覽器可以正常解析html程式碼,可是這位朋友訪問時卻出現了這種情況,讓他很是苦惱。

二、問題分析

  對於有經驗的開發來說,看到這個問題大致能夠猜測出問題出在哪裡,多半是返回的資料格式不對。伺服器返回給瀏覽器的資料

格式常規的有幾種,比如text/html 格式,表示文字格式;application/json 表示JSON資料格式; application/octet-stream 就表示二進位制

資料,表示下載檔案。自己去開啟瀏覽器除錯工具,然後檢視返回的資料格式,發現返回的JSON格式的資料,因此瀏覽器就無法正常解析。

三、解決方案

問題搞清楚後,就嘗試著去解決問題。自己去看了一下他寫的程式碼,發現他寫了一個過濾器,用來統一處理請求和響應資料的中文亂碼。

繼續檢視他配置的路徑是/*,攔截所有請求,如圖所示。看到這裡問題就徹底搞清楚啦。解決問題的方式就很好處理,配置路徑的時候,可以多配置一個字首。

比如過濾器的路徑配置為/api/*,就表示匹配路徑包含xxx/api/xxx 的所有請求。在寫Servlet處理請求的時候,路徑就可以配置為/api/user或者/api/system等等。

修改後過濾器攔截路徑配置示例如下,

修改後的Servlet路徑配置示例如下,

最終的測試頁面訪問效果如下,

訪問Servlet結果如下,

問題解決。

總結:真實做開發,做專案的時候,後臺請求的路徑一般都會配置為多級,比如/a/b/c,很少配置為一級。

因為配置多級可以根據實際需要來對路徑做攔截處理,如果只配置為一級,就不好根據路徑做攔截處理。

相關文章