請求重定向和服務器內部跳轉中path的問題?
有一些地方還是沒有弄明白。為什么請求重定向中必須獲取上下文地址,如response.sendRedirect(request.getContextPath()+"/test.jsp"); 而服務器內部跳轉則不需要獲得上下文地址,直接寫: request.getRequestDispatcher("/test.jsp").forward(request, response); 猜測是否是因為這兩種請求方式分別在服務器內外,在服務器外不知道當前項目根目錄,就必須通過request.getContextPath()來獲得地址,而服務器內已經知曉了當前項目根目錄,所以直接可以用/代替。 請問是這樣嗎?
2017-03-06
你是不是弄混了 這并不是重定向和轉發的區別,而是為了講解絕對路徑和相對路徑的區別才這么寫的。
2017-01-19
請求轉發與請求重定向的區別:
重定向:客戶端行為,response.sendRedirect(),從本質上講等同于兩次請求,前一次請求對象不會保存,地址欄的URL地址會改變;?
請求轉發:服務器行為,request.getRequestDispatcher().forward(req,resp);是一次請求,轉發后請求對象會保存,地址欄的URL地址不會改變;