请求转发和重定向的区别

本文深入探讨了Servlet中请求转发与重定向的区别,包括如何在AServlet中使用forward和sendRedirect方法转向BServlet或index.jsp,以及它们在地址栏变化、请求次数和访问WEB-INF页面能力上的不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从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中的页面。


谢谢



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值