Request.getRequestDispatcher(url).forward(request,response)与response.sendRedirect(url)浅理解

request求求转发方法与response重定向方法是我们在web中经常用的两种转发技术。

不同点1:response.sendRedirect(url)属于静态跳转,重定向,特点是不会带服务器层的请求到转发的页面,因为没有request.getRequestDispatcher(url).forword(request,response)方法(可以这样理解)。Request.getRequestDispatcher(url).forward(request,response)是请求转发,会将服务器中要传输的请求数据,在request.setAttribute("name", 参数)放在request中,并在请求转发时候的forword(request,response)时候,把setAttribute方法中设置的参数传递到请求页面,属于动态的(服务器内部跳转)。

  当然response.sendRedirect我们也可以用路径带参数进行传递参数值,这种不是response的特殊方法,只要是路径都可以:

response.sendRedirect(request.getContextPath()+"/nextServlet?action=login&username=123&password=123");

不同点2:跳转路径显示不同,response.sendRedirect(url)后,跳转地址是要跳转地址的页面地址,而request.getRequestDispatcher(url).forword(request,response)地址不会改变,还是服务器地址。

不同点3:url路径写法差异,在response.sendRedirect(url)时候,我们这样写response.sendRedirect("success.jsp"),这样跳转地址就是正常的

http://localhost:8080/项目名/successs.jsp。

或者是使用request.getContextPath()+"/success.jsp",用request.getContextPath()获得上下文路径与跳转页面拼接也行。

response.sendRedirect(request.getContextPath()+"/success.jsp");

如果是这样写response.sendRedirect("/success.jsp"),那跳转路径就是:

http://localhost:8080/successs.jsp。

而Request.getRequestDispatcher("/success.jsp").forward(request,response)则是会能够跳转到项目下的jsp中

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值