關於使用servlet後的404問題

 很多初學者在初次接觸MVC,這裏指由servlet充當控制器時的情況,因爲struts框架中都進行了處理,所以一般不會出現404,下面就經常出現的問題做一下總結:

首先說一下在servlet中頁面跳轉時的路徑問題,頁面跳轉一般分爲轉發和重點向,這時候的地址推薦寫成相對於整個web根目錄的地址:

1.轉發:request.getRequestDispatch(url).forward(request,response);

     這裏的url,寫地址時要寫成"/bookDetail.jsp",在這個位置的/代表的工程根目錄

2.重定向:response.sendRedirect(url);

   這裏的url,寫地址時要寫成"/工程部署名稱/bookDetail.jsp",在這個位置的/代表的是Tomcat根目錄,所以後面還需要添加一個工程名稱,但是因爲在部署web項目時工程名稱可能會改動,所以在項目開發時對於重定向的代碼,一般寫成:

//獲取工程上下文路徑(工程名字)
String contextPath = request.getContextPath();
response.sendRedirect(contextPath + "/index.jsp");

下面再來說說頁面中出現的類404現象,不如圖片路徑找不到,或者說表單點擊條件出現404等,出現這種現象的原因主要是因爲,咱們設計頁面時可能用的是dreamweaver,頁面中所有的資源都是相對於當前文件去找的,但是在實際開發中有可能是轉發到這個頁面的,這時地址欄的地址可能和當前頁面本身所在的目錄不一致,這時候就會出現圖片或者樣式表找不到的情況,如何解決這種情況呢,答案還是上面的,讓所有的資源相當於根目錄去定位,在頁面實現這個其實很簡單,只需要設置一個base標籤就可以了,jsp頁面一般會自動計算出一個,代碼如下

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
<html>
  <head>
    <base href="<%=basePath%>">

%>

舉個簡單的例子來說明一下base的作用,如果我把頁面中我的base中的href屬性設置爲http://www.baidu.com,在我的頁面中有個,<img src="images/xxx.jpg"/>,這個圖片會顯示http://www.baidu.com/images/xxx.jpg對應的圖片。

關於404的問題就介紹到這了,如果還有不明白的,請留言,我會及時回覆。
 


 

發佈了28 篇原創文章 · 獲贊 48 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章