javascript
Servlet跳转到JSP页面后的路径问题相关解释
一、現(xiàn)象與概念
1. 問題
在Servlet轉(zhuǎn)發(fā)到JSP頁面時,此時瀏覽器地址欄上顯示的是Servlet的路徑,而若JSP頁面的超鏈接還是相對于該JSP頁面的地址且該Servlet和該JSP頁面不在同一個文件夾下時,則會出現(xiàn)路徑混亂問題。
?
2. 絕對路徑概念
相對于contextPath(當(dāng)前Web應(yīng)用的上下文)的路徑。
解決方案:超鏈接用絕對路徑而不是相對路徑。若/代表的是站點(diǎn)的根目錄,在其前面加上contextPath。
| <a href="<%= request.getContextPath() %>/TestServlet">To B</a> |
?
二、JavaWeb開發(fā)中的'/'含義總結(jié)
1. 當(dāng)前Web應(yīng)用的根路徑
'/'代表http://localhost:8080/contextPath/ :由Servlet來處理的地址
1)轉(zhuǎn)發(fā):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)各種定制標(biāo)簽中的'/'。
?
2. Web站點(diǎn)的根路徑
'/'代表http://localhost:8080/ :由瀏覽器來處理的地址
1)超鏈接:<a href="/TestServlet">To B</a>
2)form標(biāo)簽中的action:<form action="/b.jsp">
3)重定向:response.sendRedirect("/b.jsp");
?
3.站點(diǎn)根目錄和css路徑問題 (jsp是服務(wù)器端程序,地址是變化的,引用時一般用站點(diǎn)根目錄的相對路徑)
我們稱類似這樣的相對路徑/test/…. 為相對于站點(diǎn)根目錄 的相對路徑 。
當(dāng)在jsp中引入css時,如果其相對路徑相對于當(dāng)前jsp文件的,而在一個和這個jsp的路徑不一樣的servlet中forward這個jsp時,就會發(fā)現(xiàn)這個css樣式根本沒有起作用。這是因為在servlet中轉(zhuǎn)發(fā)時css的路徑就是相對于這個servlet的相對路徑而非jsp的路徑了。所以這時候不能在jsp中用這樣的路徑:<link href="one.css" rel="stylesheet" type="text/css">或者<link href="../../one.css" rel="stylesheet" type="text/css">類似href="one.css"和../../one.css的html相對路徑是相對于引用這個css的文件(a.jsp)的相對路徑 。而在servlet中轉(zhuǎn)發(fā)時就是相對于這個servlet的相對路徑了,因為jsp路徑和servlet路徑是不一樣的 ,所以這樣的引用肯定是出錯的。
所以這個時候,要用站點(diǎn)根目錄,就是相對于http://192.168.0.1/的目錄,以“/”開頭。
因此上述錯誤應(yīng)更正為href=”/test/one.css” 類似的站點(diǎn)根目錄的相對目錄。這樣在servlet轉(zhuǎn)發(fā)后和jsp中都是相對于站點(diǎn)根目錄的相對路徑 ,就能正確使用所定義的css樣式了。
?
頁面跳轉(zhuǎn)問題:
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內(nèi), 所以Redirect 方式會導(dǎo)致request攜帶的對象丟失.
轉(zhuǎn)載于:https://www.cnblogs.com/sbclmy/p/9053000.html
總結(jié)
以上是生活随笔為你收集整理的Servlet跳转到JSP页面后的路径问题相关解释的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【pyqt5学习】——container
- 下一篇: Newtonsoft.Json反序列化(