首頁  >  文章  >  Java  >  Servlet跳到JSP頁面後的路徑問題相關解釋

Servlet跳到JSP頁面後的路徑問題相關解釋

巴扎黑
巴扎黑原創
2017-07-17 13:49:262273瀏覽

一、現象與概念

1. 問題

在Servlet轉送到JSP頁面時,此時瀏覽器網址列上顯示的是Servlet的路徑,而若JSP頁面的超連結還是相對於該JSP頁面的位址且該Servlet和該JSP頁面不在同一個資料夾下時,則會出現路徑混亂問題。

 

2. 絕對路徑概念

相對於contextPath(目前Web應用的上下文)的路徑。

解決方案:超連結用絕對路徑而不是相對路徑。若/代表的是站點的根目錄,在其前面加上contextPath。

<a href="<%= request.getContextPath() %>/TestServlet">To B</a>

 

二、JavaWeb開發中的'/'意義總結

1. 目前Web應用的根路徑

'/'代表http://localhost:8080/contextPath/    :由Servlet來處理的位址

1)轉送:request.getRequestDispatcher("/path /b.jsp").forword(request, response);

2)web.xml檔案中對應Servlet存取路徑

<servlet-mapping><servlet-name>TestServlet</servlet-name><url-pattern>/TestServlet</url-pattern></servlet-mapping>

3)各種自訂標籤中的'/'。

 

2. Web網站的根路徑

'/'代表http://localhost:8080/    :由瀏覽器處理的位址

1)超連結:/TestServlet">To B

2)form標籤中的action:

/b.jsp">

3)重定向:response.sendRedirect("/b.jsp");










##3.網站根目錄和css路徑問題  (jsp是伺服器端程序,位址是變化的,引用時一般用網站根目錄的相對路徑)


 

###  我們稱類似這樣的相對路徑/test/…. 為相對於站點根目錄 的相對路徑 。 ###  當在jsp中引入css時,如果其相對路徑相對於當前jsp檔案的,而在一個和這個jsp的路徑不一樣的servlet中forward這個jsp時,就會發現這個css樣式根本沒有起作用。這是因為在servlet中轉發時css的路徑就是相對於這個servlet的相對路徑而非jsp的路徑了。所以這時候不能用這樣的路徑在jsp中:類似href="one.css"和../../one.css的html相對路徑是相對於引用這個css的檔案(a. jsp)的相對路徑 。而在servlet中轉發時就是相對於這個servlet的相對路徑了,因為jsp路徑和servlet路徑是不一樣的 ,所以這樣的引用肯定是出錯的。 ###  所以這時候,要用網站根目錄,就是相對於http://192.168.0.1/的目錄,以「/」開頭。 ###  因此上述錯誤應更正為href=”/test/one.css” 類似的站點根目錄的相對目錄。這樣在servlet轉送後和jsp中都是相對於站根目錄的相對路徑 ,就能正確使用所定義的css樣式了。 #####################頁面跳轉問題:############Forward 高,  Redirect 低, 因為Redirect 的流程是這樣的,  request1  sent to server,  server return back to client, 然後######request2 then sent to server. 但是Forward 只在server side處理, 對client side 是透明的. 由於Redirect 有兩次傳輸, 所以低. ######範圍: ###由於對request.setAttribute() 來說, 它攜帶的物件生存範圍只在request內, 所以Redirect 方式會導致request攜帶的物件遺失.##### #######

以上是Servlet跳到JSP頁面後的路徑問題相關解釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn