1. 程式人生 > >重定向和轉發引出的URL路徑問題

重定向和轉發引出的URL路徑問題

//轉發
//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使用超級連結