Servlet中路徑跳轉(服務器端跳轉)JSP
1.相對路徑
//XML文件
<servlet-mapping>
<servlet-name>RegServlet</servlet-name>
<url-pattern>/servlet/RegServlet</url-pattern>
</servlet-mapping>
request.getRequestDispatcher("../userinfo.jsp").forward(request,response);
@WebServlet("/RegServlet") //新特性 訪問地址直接配置好了
request.getRequestDispatcher("userinfo.jsp").forward(request, response); //相對路徑方式
2. 絕對路徑
request.getRequestDispatcher("/userinfo.jsp").forward(request, response);// ‘/’表示根目錄 絕地路徑
Servlet中路徑跳轉(請求重定向跳轉)JSP
response.sendRedirect(request.getContextPath()+"/userinfo.jsp"); //這里使用的是加上了上下文的絕對路徑
response.sendRedirect("userinfo.jsp"); //這里使用的是相對路徑
Servlet的路徑跳轉
一、JSP跳轉到Servlet
1、相對路徑,如href="servlet/TestServlet" 如果寫成"/servlet/TestServlet"會報錯,因為第一個“/”表示的是【服務器根目錄】
2、絕對路徑,通過內置成員變量path實現,如href="<%=path%>/servlet/TestServlet" ,path得到的是項目根目錄,如【http://localhost:8080/ServletDemo】
其中path指的就是:

例子:
<!--使用相對路徑訪問HelloServlet -->
<!-- /servlet/HelloServlet 第一個/表示服務器的根目錄 -->
<a href="servlet/HelloServlet">訪問HelloServlet!</a><br>
<!-- 使用絕對路徑 訪問HelloServlet,可以使用path變量:path變量表示項目的根目錄-->
<a href="<%=path%>/servlet/HelloServlet">訪問HelloServlet!</a><br>
二、Servlet跳轉JSP
1、請求重定向:response.sendRedirect(request.getContextPath()+"/xxx.jsp");
request.getContextPath()獲得項目根目錄,或者通過"../xxx.jsp"取得上層路徑得到
2、服務器內部轉發: request.getRequestDispatcher("../xxx.jsp").forward(req,resp);
request.getRequestDispatcher("/test.jsp").forward(request, response); /斜線表示項目的根目錄
小結:Servlet都可以通過../xxx.jsp獲取路徑
三、web.xml的路徑
web.xml的<url-pattern>必須以“/”開頭,“/”表示項目的根目錄
在JSP頁面上使用相對路徑和絕對路徑調用servlet web.xml的<url-pattern>必須以“/”開頭,“/”表示項目的根目錄。
如果在Servlet中使用請求重定向方式跳轉到其他jsp頁面,則需要:
response.sendRedirect(request.getContextPath()+"/test.jsp");
服務器內部跳轉路徑:
request.getRequestDispatcher("/test.jsp").forward(request,response);//這里的斜線表示項目的根目錄
或者
request.getRequestDispatcher("../test.jsp").forward(request,response);//“..”表示回到上層目錄也就是根目錄;
PS:如果<url-pattern>帶一層路徑 如:<url-pattern>/servlet/loginServlet</url-pattern>,則內部轉發的時會從WebRoot/servlet/路徑下找jsp頁面。
如果要轉發的頁面不在WebRoot/servlet/路徑下,則需要“..”回到上層或根目錄再定位到jsp頁面,如下:
request.getRequestDispatcher("../test.jsp").forward(request,response);
如果要轉發的頁面在WebRoot/servlet/路徑下,則如下:
request.getRequestDispatcher("/test.jsp").forward(request,response);
