Java面试--Servlet两种转向的区别

本文详细介绍了在Servlet中使用sendRedirect()和forward()进行页面跳转的方法,并对比了它们之间的主要区别,包括路径设置、属性传递、地址栏显示及跳转速度等。

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

在Servlet中,转向到其它Servlet和JSP的时候,可以通过两种方式实现:
(1)使用response对象的sendRedirect()方法
(2)使用RequestDispatcher对象的forward()方法
     {例:request.getRequestDispatcher("/a.jsp").forward(request, response);}
二者区别:
(1)跳转路径的区别
    A、response.sendRedirect("/projectName/XXXX"):
     转向web服务器的根路径如:http://localhost:8080/这里的最后“/”!!!,所以要带Web项目名称.
     {例:/projectName/XXXXX-------->所以就是在跳转要加上web项目名称}
     B、request.getDispatcher("/XXXX").forward(request,response);
     转向web项目的根路径如:http://localhost:8080/projectName/这里的最后“/”!!!,所以不带Web项目名称.
     {例:/XXXX--------------------->这个就不用加啦!!!}
(2)读取request.setAttribute()属性的区别
    A、response.sendRedirect()
    是重新定向前后页面不是一个request,不可以读取转向前request对象通过setAttribute()方法所设
    定的属性值。就是用request.getAttribute得不到设进request的参数了。
    B、rd.forward(request,response)
    是请求转发,前后页面共享一个request ,可以读取转向前request对象通过setAttribute()方法所设
    定的属性值。
(3)跳转后在Brower地址栏的地址的区别
    A、response.sendRedirect()
    地址栏显示的地址是所转向到的Servlet或者JSP的地址。(这个自己实验下,我不讲了,表达不清)
    B、rd.forward(request,response)
    转向后,地址栏显示的地址是转向前原Servlet的地址。(这个自己实验下,我不讲了,表达不清)
(4)跳转速度上的区别(但是平常这个好像也没有太大的区别)
    response.sendRedirect()
    可以转向到本Web应用之外的页面和网站,转向的速度相对要慢
    rd.forward(request,reponse)
    不可以转向到本Web应用之外的页面和网站,转向的速度相对要快,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值