从AServlet请求转发或者重定向到BServlet
-
Servlet中请求转发
request.getRequestDispatcher("BServlet").forward(request, response);
-
Servlet中重定向
response.sendRedirect("BServlet");
请求转发或者重定向到index.jsp
- springmvc的controller中请求转发
@RequestMapping("/forwardController")
public String forwardController(){
return "forward:index.jsp";
}
- springmvc的controller中重定向
@RequestMapping("/redirectController")
public String redirectController(){
return "redirect:index.jsp";
}
例如:
现在要从AServlet转发到BServlet中去,该选择请求转发还是重定向?
request中是可以存信息的(键值对),如果是请求转发,则用的是同一个request和response所以里面的键值对会被带过去,可以用来传值,如果是重定向,则是新的一个requset和新的response,所以根据需求选择,一般servlet于页面之间交互需要传递信息,就用请求转发,servlet于servlet之间不需要传递信息就用重定向。
区别:
-
请求转发:地址栏不变化, 还是原来请求的地址,浏览器只请求一次。
-
重定向:地址栏会发生变化,浏览器请求两次,第一次请求原地址AServlet,服务器接收到后,返回给浏览器(302)请重新请求BServlet,所以浏览器会重新请求BServlet,所以地址栏会变化为BServlet。
-
还有一点是:请求转发可以转发到WEB-INF(受保护的页面)中的页面去,重定向不能访问WEB-INF中的页面。
谢谢