重定向和轉發引出的URL路徑問題
阿新 • • 發佈:2019-01-07
//轉發
//this.getServletContext().getRequestDispatcher("/index2.jsp").forward(req, resp);
//重定向
//resp.sendRedirect(req.getContextPath()+"/index2.jsp");
因為轉發是給交給伺服器,而重定向是交給瀏覽器
在JavaWeb開發中,只要是寫URL地址,那麼建議最好以”/”開頭,也就是使用絕對路徑的方式。
如果交給伺服器“/”代表web工程的目錄,如果交給瀏覽器則代表webapps目錄
- 伺服器
1在服務端的轉發
this.getServletContext().getRequestDispatcher("/index2.jsp").forward(req, resp);
2ServletContext.getRealPath(String path)或者ServletContext.getResourceAsStream(String path)獲取資源的絕對路徑
獲取的是伺服器的資源,當然是交給伺服器
3使用include指令或者<jsp:include>
標籤引入頁面
<%@include file="/jspfragments/head.jspf" %>
<jsp:include page="/jspfragments/demo.jsp" />
- 瀏覽器
1重定向
resp.sendRedirect(req.getContextPath()+"/index2.jsp");
2js、css等檔案的引入也是交給瀏覽器所以使用
src="<%=request.getContextPath()%>/resource/js/a.js
href="${pageContext.request.contextPath}/resource/css/a.css"
3表單的提交時交給瀏覽器所以使用
<form action="${pageContext.request.contextPath}/servlet/a.do" method="post">
4使用超級連結