请求转发和网页重定向

本文详细介绍了HTTP请求转发和重定向的区别,包括它们的特点、示例代码以及应用场景。请求转发在地址栏不改变,参数不丢失,而重定向地址栏会更新,参数会丢失。请求转发可用于内部资源跳转,重定向则可以跳转到外部资源。此外,还提供了具体的Servlet代码示例来说明请求转发和重定向的实现方式。
摘要由CSDN通过智能技术生成

目录

一:请求转发

     请求转发特点:

    图示: 

二: 网页重定向

     网页重定向特点:

     图示: 

 三:请求跳转示例

 四:重定向跳转示例


一:请求转发

      forward()   当客户端向服务器端发送一个请求,请求地址没有发生变化,服务器调用内部的方法直接将请求转发给新地址进行处理,然后将处理结果反馈给客户端。采用请求转发的方式,客户端和服务器端只执行了一次请求和一次响应,且浏览器地址栏显示的是第一次访问的原地址 (request对象不变)”。

请求转发特点:

  • 请求转发地址栏不发生改变
  • 用户一次请求
  • 请求转发过程中参数不会丢失
  • 请求转发无法跳转到服务器以外的资源
  • 请求转发可以跳转WEB-INF目录内的站点
  • 访问成功返回状态码200

 图示: 

二: 网页重定向

  sendRedirect()   重定向是指页面定位到某个新地址,之前的request失效,进入一个新的request (相当于两次请求),通过request对象的sendRedirect()方法实现。

     网页重定向特点:

  • 重定向地址栏发生改变
  • 重定向需要进行二次跳转
  • 重定向过程中参数会丢失
  • 重定向可以跳转到服务器以外的资源
  • 重定向无法跳转WEB-INF目录内的站点
  • 重定向一次跳转后返回302码及location

  图示: 

 三:请求跳转示例

    先创建三个 servlet类(参数正常传递,URL地址并没有跳转)

@WebServlet(name = "Forward01", value = "/Forward01")
public class Forward01 extends HttpServlet {
    private static final long serialVersionUID = -2245044846253497804L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是Forward01");
        // 1.向request域中存储数据	与request绑定
        request.setAttribute("slogan","桃李不言下自成蹊");

        //forward(request,response) 中的request,response 是转发对象
        //2.请求转发
        request.getRequestDispatcher("/Forward02").forward(request,response);
    }
}
@WebServlet(name = "Forward02", value = "/Forward02")
public class Forward02 extends HttpServlet {
    private static final long serialVersionUID = -1262209307277647624L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是Forward02");
        //forward(request,response) 中的request,response 是转发对象
        request.getRequestDispatcher("/Forward03").forward(request,response);
    }
}
@WebServlet(name = "Forward03", value = "/Forward03")
public class Forward03 extends HttpServlet {
    private static final long serialVersionUID = 3896982895610295687L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是Forward03");
        String slogan = (String) request.getAttribute("slogan");
        System.out.println(slogan);
    }
}

 

 

 

 请求转发无法跳转到服务器以外的资源

@WebServlet(name = "ForwardOuter", value = "/ForwardOuter")
public class ForwardOuter extends HttpServlet {

    private static final long serialVersionUID = 5856096467944349435L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 ForwardOuter");
        // 请求无法跳转到站外站点
        request.getRequestDispatcher("https://space.bilibili.com/480308139").forward(request, response);
    }
}

请求转发可以跳转WEB-INF目录内的站点

@WebServlet(name = "ForwardInner03", value = "/ForwardInner03")
public class ForwardInner03 extends HttpServlet {

    private static final long serialVersionUID = -5730328858279765970L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 ForwardInner03");
        request.getRequestDispatcher("/WEB-INF/forward.jsp").forward(request, response);
    }
}

 四:重定向跳转示例

         先创建三个 servlet类(参数会丢失,URL地址发生了跳转)

@WebServlet(name = "Redirect01", value = "/Redirect01")
public class Redirect01 extends HttpServlet {
    private static final long serialVersionUID = -5096088127501474424L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 Redirect01");
        request.setAttribute("slogan","桃李不言下自成蹊");
        // 网页重定向
        response.sendRedirect(request.getContextPath() + "/Redirect02");
    }
}
@WebServlet(name = "Redirect02", value = "/Redirect02")
public class Redirect02 extends HttpServlet {
    private static final long serialVersionUID = -1046620871038602664L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 Redirect02");
        // 网页重定向
        response.sendRedirect(request.getContextPath() + "/Redirect03");}
}
@WebServlet(name = "Redirect03", value = "/Redirect03")
public class Redirect03 extends HttpServlet {
    private static final long serialVersionUID = -1514803687180205194L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String slogan = (String) request.getAttribute("slogan");
        System.out.println("slogan >>> " + slogan);
        System.out.println("我是 Redirect03");
    }
}

 

 

 

 请求转发可以跳转到服务器以外的资源

@WebServlet(name = "RedirectOuter", value = "/RedirectOuter")
public class RedirectOuter extends HttpServlet {
    private static final long serialVersionUID = 6941511209459670904L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 RedirectOuter");
        // 网页重定向
        response.sendRedirect("https://blog.csdn.net/qq_24330181");
    }
}

请求转发不可以可以跳转WEB-INF目录内的站点

@WebServlet(name = "RedirectInner03", value = "/RedirectInner03")
public class RedirectInner03 extends HttpServlet {

    private static final long serialVersionUID = -7795455934058880876L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 RedirectInner03");
        // 网页重定向
        response.sendRedirect(request.getContextPath() + "/WEB-INF/redirect.jsp");
    }
}

状态码会变为404 

 

 

星星不喝药
关注 关注
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
页面重定向问题
m0_46129241的博客
12-31 817
一、在当前页(nowPage.html)先打开一个页面(open.html)然后在这个页面(open.html)中打开这个url HTML(nowPage.html): <a href="javascript:void(0)" onclick="openPage()">打开</a> JavaScript(nowPage.js): /** * 打开一个页面 * */ function openPage(){ openWin(“page/open.html”); } /**
页面跳转——请求转发重定向
weixin_43945486的博客
02-07 219
登录示例: login.jsp - > check.jsp - > success.jsp 请求转发:request.getRequestDispatcher(“success.jsp”).forward(request,response) 重定向:response.sendRedirect(“success.jsp”); 区别 请求转发 重定向 地址栏是否...
重定向请求转发跳转页面
lc1062657810的博客
06-14 438
重定向请求转发的区别: 重定向 请求转发 地址栏 跳转地址栏发生改变 跳转地址栏不发生改变 访问资源 可以访问项目外部资源 只能访问内部资源 静态资源 不能访问内部静态资源 能访问内部静态资源 请求次数 两次 一次 重定向请求跳转的方法: 重定向有两种方式:(地址改变) * 1.使用response方法实现 response.sendRedirect(url) * 2.controller的方法中,ret
使用SSH反向转发服务器上的请求到个人电脑
DDDInJava
08-31 938
使用SSH反向转发服务器上的请求到个人电脑或所在局域网的任何电脑
【Vue】结合ElementUI实现简单数据请求页面跳转功能
最新发布
qq_51933234的博客
05-02 1074
到这里关于vue的一些基本知识就学习的差不多了,接下来博主正在做一个springboot+vue的项目,后面会将我们学习的内容用到项目中去,也会写相应的博客与大家分享技术。那我们就下一篇博客再见!
请求转发重定向的区别
夏桑菊泡面
08-10 659
请求转发重定向的区别
java web实现请求转发重定向
qq_45769050的博客
10-14 2200
1.Java web实现重定向 编写处理用户登录请求的LoginServlet类,如果在登录页面输入的用户名和密码正确就重定向到欢迎页面(welcome.html),否则重定向到登录页面(login.html) package lxq; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.Http
网页服务器跳转页面跳转,页面的跳转:请求转发重定向
weixin_29466397的博客
08-10 1287
一、重定向请求转发的概念以C/S模式为例:请求转发:request.getRequestDispatcher(URL).forward(request, response);1.客户端发送请求数据给服务器2.服务器接收请求数据并调用第一个servlet处理逻辑3.第一个servlet处理数据结束后将数据传递给下一个servlet4.第二个servlet处理完数据后调用forward()方法将处理...
Servlet中重定向请求转发的区别?
qq_45587034的博客
11-05 695
重定向:客户端重新发送新的请求,无法request携带数据。地址栏会发生改变。 请求转发: 地址栏不会发生改变,在服务器端完成,效率高 使用request携带数据。 request.setAttribute(key,value); request对象存放数据 request.getAttribute(key); request对象获取数据 转发和跳转的小结 1、转发使用的是req.getRequestDispatcher()方法;重定向使用的是resp.sendRedirect(..
页面的跳转——请求重定向请求转发
zg0601的博客
01-05 1万+
页面请求重定向转发
PHP请求跳转
weixin_39565400的博客
11-15 402
//初始化 $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, 'http://www.yxegsc.com/fn_wx/Jubao/tree/'); //设置头文件的信息作为数据流输出 curl_setopt($curl, CURLOPT_HEADER, 1...
使用ajax实现页面跳转
大头之家
06-30 2万+
$.ajax({ type:"POST", url: //你的请求程序页面随便啦 async:false,//同步:意思是当有返回值以后才会进行后面的js程序。 data://请求需要发送的处理数据 success:function(msg){ if (msg) {//根据返回值进行跳转 window.location
Ajax提交success方法中添加页面跳转
open_yu的博客
09-11 1万+
Ajax提交页面跳转Ajax提交请求,在success方法中添加页面跳转。 1、 window.top.location.href、window.location.href等都不行,页面不会跳转,只是刷新页面。 2、 只有使用jQuery设置form action 属性才会跳转: $(“#form1”).attr(“action”,contextPath+’/success’);栗子:$
使用POST请求跳转页面
热门推荐
xxmeng2012的专栏
05-24 2万+
同事遇到一个问题,jsp中,如果使用get命令,中文会乱码,在不修改tomcat配置的前提下,想要把所有的get请求转为post请求。 一直觉得post请求后返回的不就是一段数据嘛,怎么返回一个html页面呢? 通过搜索,找了一个解决方法,使用jQuery 在内存中建立一个form对象,然后调用这个对象的submit方法 如果你看到了这个问题,并且有更好的方法,请告知我呦,多谢~~
内部跳转(请求转发)和外部跳转(重定向)的区别?
qiang860412的专栏
06-25 481
总结归纳要点: 1、内部跳转的候实际上是通过服务器端将请求转发到另外的页面或者servlet中,这个候跳转到的目标页面或者servlet可以获取到请求对象,也可以获取到请求中的属性和参数。而外部跳转的候实际上是第一次请求后,服务器端向客户端发送了一个指令,让客户端再次请求了一次服务器端,这个服务器第二次拿到的request对象已经不是第一次请求的request对象了,所以无法获取到第一...
请求转发
while(true){ study }
07-12 2712
请求转发是指,服务器收到请求后,从一个服务器资源跳转到另一个服务器资源的操作叫做请求转发。 这里我们创建两个Servlet。 这里要注意,我们把前端页面放到WEB-INF下面是不能访问的,我们可以利用请求转发来访问 还有一个就是,请求转发只能访问工程内的资源,不能访问工程外的资源。我们可以试一下请求转发到百度。你给的地址,它是给到当前工程下去访问了,它不允许我们出站,请求转发只能在自己工程进行跳转。...
页面跳转的两种方式(转发重定向)区别详解:
laity__c的博客
11-15 1万+
页面跳转的两种方式(转发重定向)区别详解: 转载自一个很详细的博主 在使用servlet/jsp的候,我们必须要知道实现页面跳转的两种方式的区别和联系:即转发重定向的区别。 举个例子:HttpServletResponse.sendRedirect方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的 访问请求,这个过程好比有个绰号叫“浏览器”的人写信找张三借钱,张三回信说没有钱,让“浏览器”去找李四借,并将李四现在的通信地址告诉给了“浏览器”。于是,“浏览器”又按张三提
页面跳转的两种方式 -- 请求转发forward 和 重定向sendRedirect
weixin_43235210的博客
06-11 2314
在使用servlet/jsp的候, 常常会遇到这两个问题, 所以搞明白是非常有必要的 重定向转发的区别: 重定向访问服务器两次, 转发只访问服务器一次 重定向可以看见目标页面的url, 转发只能看见第一次访问的页面url, 以后的工作都是服务器来做的. 重定向跳转后必须加上return, 要不然页面虽然跳转了, 但是还是会执行跳转后面的语句, 转发是执行了跳转页面, 下面的代码就不会...
请求转发重定向差别
08-06
请求转发重定向是在网络通信中常见两种机制,它们的主要区别在于处理方式和目的。 请求转发是指服务器接收到客户端的请求后,将该请求转发给另一个服务器进行处理。这种机制可以用于负载均衡、代理服务器、缓存服务器等场景。在请求转发过程中,客户端只与原始服务器进行通信,而不知道请求转发到了其他服务器重定向是指服务器接收到客户端的请求后,返回一个特殊的响应,告诉客户端将请求重新发送到另一个指定的URL。这种机制常用于网页跳转、资源移动等场景。在重定向过程中,客户端会收到服务器返回的重定向响应,并根据响应中包含的新URL重新发送请求。 总结来说,请求转发服务器自动将请求发送给其他服务器进行处理,而重定向服务器告诉客户端将请求发送到另一个URL。
写文章

热门文章

  • SpringMvc拦截器preHandle,postHandle,afterCompletion 5740
  • VMware安装deepin 3462
  • JAVA----集合----set用法 3421
  • IDEA的安装以及配置 2772
  • JAVA面向对象-----继承 2736

最新评论

  • SpringMvc拦截器preHandle,postHandle,afterCompletion

    Septillions: postHandle 里面的 post 指的是后处理,并不是请求方式里的 POST

  • SpringMvc拦截器preHandle,postHandle,afterCompletion

    风口上的吱吱鼠: 言简意赅,尤其是4.拦截器的介绍

  • SpringMVC解决AJAX跨域

    Java Fans: 大佬,关注你很久了,期待回关

  • VMware安装deepin

    keda888: 谢谢 博主的工作,有些疑问 1. 为什么不直接安装,而是选择创建空白磁盘 2.处理器数量选4个?你是服务器吗? 3为什么不选3D加速 4进程优先级选择抓取内容为高是社么意思 5收集调试信息是什么意思 禁用页面调整是什么意思 6 固件类型为什么选UEFI 7

大家在看

  • 基于AFM注意因子分解机的推荐算法 1420
  • 在线匿名浏览的4个有效方法总结
  • 大厂面试真题-说一说rpc和http的区别?http能否代替kafka 314
  • Java 枚举的几个常用技巧,你可以试着用用
  • 了解专用代理服务器的功能

最新文章

  • Stream API概述
  • SpringMVC解决AJAX跨域
  • SpringMVC工作流程
2022年40篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星星不喝药

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳坪山网站建设公司贵州网站关键词排名优化费用大城河北网站优化公司汕头很好的网站优化用户体验海阳功能性网站优化内黄县网站优化哪个公司靠谱东莞网站推广 优化网站seo优化找谁专业大连网站优化设置黄山网站整站优化套餐启东百度网站优化排名盐田优化网站建设哪里好上海网站搜索优化河池湖南网站优化推广银川网站关键词优化六安网站优化电池充电山西网站优化公司天津网站推广优化公司那里网站优化好青州优化网站效果网站代码seo优化滦南网站优化价格莱山区视频网站优化阀门网站优化热门文章网站的建设与优化外链优化网站有用吗大旺百度网站优化黄浦网站优化烟台网站建设自助建站优化网站优化怎么获取内容苏州网站建设方案优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化