广告
返回顶部
首页 > 资讯 > 精选 >JavaWeb中请求转发和请求重定向的区别有哪些
  • 892
分享到

JavaWeb中请求转发和请求重定向的区别有哪些

2023-06-15 09:06:27 892人浏览 独家记忆
摘要

小编给大家分享一下javaweb中请求转发和请求重定向的区别有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!什么是请求转发?请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作。请求转发的特点 浏览器地址栏

小编给大家分享一下javaweb中请求转发和请求重定向的区别有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

什么是请求转发?

请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作。

JavaWeb中请求转发和请求重定向的区别有哪些

请求转发的特点

浏览器地址栏不会发生变化

他们一次请求,服务器完成转发操作

共享Request域中的数据

可以转发到WEB-INF目录下

不可以访问工程以外的资源

举个例子:

一个公司有多个部门,其中部门1(Servlet1)向客户提供了自己能够提供的服务,但是还有一部分服务自己提供不了,需要其他部门的服务;

所以部门1(Servlet1)将客户的文件盖一个章,证明部门1已经提供了服务,然后将其转交(请求转发)到部门2(Servlet2);

部门2检查部门1是否盖过章了,如果盖过章就继续向客户提供服务…;

直到所有服务都处理完,将客户需要的数据提供给客户(即,将数据转发给客户端**[转发到某个页面]**);

package servlet;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.Http.httpservlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class Servlet1 extends HttpServlet {    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {                //1.servlet1先获取请求参数,看看servlet1需要做的事        String username = request.getParameter("username");        System.out.println(username);                //.....部门1提供自己的服务                //2.servlet1设置一个参数证明servlet1转发的请求(部门1盖一个章)        request.setAttribute("key1", "servlet1");        //3.查询servlet2的路径,(部门1将其转交给部门1)        RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet2");                //4.把请求和响应转发给servlet2        dispatcher.forward(request, response);    }}
package servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class Servlet2 extends HttpServlet {    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //部门2查看客户需要的服务        System.out.println("Servlet2查看参数: "+request.getParameter("username"));        //部门2查看部门1有没有盖章,判断是否继续服务        System.out.println("Servlet2查看是否有Servlet1的证明: "+request.getAttribute("key1"));        //部门2处理完自己的服务,        System.out.println("Servlet处理自己的业务");    }}

JavaWeb中请求转发和请求重定向的区别有哪些

注意

这时候如果我们将Servlet2放在WEB_INF下,那么我们就无法直接访问servlet2了;

但是我们可以通过请求转发来实现访问servlet2;

思考:登录功能和这种请求转发方法类似,我们无法跳过登录界面直接访问系统,所有我们可以用这种请求转发的方法来实现;

什么是请求重定向?

请求重定向:是指客户端发送请求,然后服务器告诉客户端,我给你一个地址,你去新的地址访问(之前的地址可能已经被废弃,或者之前的地址[Servlet]无法满足需求);

JavaWeb中请求转发和请求重定向的区别有哪些

第一种方案

// 设置响应状态码 302 ,表示重定向,(已搬迁) resp.setStatus(302); // 设置响应头,说明 新的地址在哪里 resp.setHeader("Location", http://localhost:8080);

第二种方案(推荐使用)

resp.sendRedirect(http://localhost:8080);

请求重定向的特点

浏览器的地址栏会发生变化

浏览器发送了两次请求,而不是像调用request的getRequestDispatcher("/a/b/c.html").forward(request, response)方法实现的;所以一共创建了两个request对象

两个request对象不能共享域数据

重定向不能访问WEB-INF里的资源,因为两次请求都是客户端发起的,客户端无法直接访问到WEB-INF里的资源

可以访问工程外的资源(比如说调转的百度等等)

什么时候使用请求重定向?

浏览会记录最后一次请求的所有数据,客户端可以通过刷新页面的方法,重新发起最后一次请求;

而我们在请求转发或请求重定向之前,总会处理一些业务;此时,如果当本次业务是对数据库,本地文件的增删改操作时,就需要使用请求重定向;

为什么呢?

因为,这时如果我们使用请求转发(整个处理业务过程就只是一次请求),浏览就会记录我们这次请求(操作数据库),一旦客户端刷新页面,就会执行(操作数据库)的请求,这时很严重的bug,我们要避免,所有就要用到请求重定向;

因为我们每次操作完数据库,都会跳转到首页,或者数据展示的页面,所以这时我们使用请求重定向跳转到这个页面(实际是跳转到某个Servlet查询数据库中的记录,这个Servlet再跳转到数据展示的页面);

此时浏览器记录的最后一次请求就是查询数据库中记录的请求了,这时我们刷新页面,也只是查询数据,不再是对数据库的增删改了;

看完了这篇文章,相信你对“JavaWeb中请求转发和请求重定向的区别有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: JavaWeb中请求转发和请求重定向的区别有哪些

本文链接: https://www.lsjlt.com/news/279537.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaWeb中请求转发和请求重定向的区别有哪些
    小编给大家分享一下JavaWeb中请求转发和请求重定向的区别有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!什么是请求转发?请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作。请求转发的特点 浏览器地址栏...
    99+
    2023-06-15
  • JavaWeb中请求转发和请求重定向的区别以及使用
    什么是请求转发? 请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作。 请求转发的特点 1.浏览器地址栏不会发生变化 2.他们一次请求,服务器完成转发操作 3.共享...
    99+
    2022-11-12
  • Java请求转发和请求重定向区别详解
    目录前言1.定义不同2.请求方不同3.数据共享不同4.最终 URL 地址不同5.代码实现不同总结前言 在 Java 中,跳转的实现方式有两种:请求转发和请求重定向,但二者是完全不同的...
    99+
    2022-11-13
  • JAVA中请求转发与重定向
    这篇文章主要讲解了“JAVA中请求转发与重定向”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JAVA中请求转发与重定向”吧!按照功能不同对Servlet进行拆分,每个Servlet只保留一个...
    99+
    2023-06-02
  • post和get请求的区别有哪些
    本篇内容介绍了“post和get请求的区别有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!区别:1、post请求更安全;post请求不会...
    99+
    2023-07-05
  • Java通过httpclient比较重定向和请求转发
    目录前言:请求转发和重定向的区别Java web 部分TestServlet 类启动项目测试使用 HttpClient完整测试代码总结前言: 刚开始学习Java的web编程时,都会碰...
    99+
    2023-05-15
    JAVA httpclient httpclient比较重定向 httpclient请求转发
  • vue中get和post请求的区别有哪些
    这篇文章主要介绍“vue中get和post请求的区别有哪些”,在日常操作中,相信很多人在vue中get和post请求的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-19
  • 在java中GET和POST请求有哪些区别
    在java中GET和POST请求的区别:GET通过地址栏传输,而POST则是通过报文传输。GET参数有长度限制,而POST无限制。GET产生一个TCP数据包,而POST产生两个TCP数据包。对参数的数据类型,GET只接受ASCII字符,而P...
    99+
    2022-10-10
  • Java怎么通过httpclient比较重定向和请求转发
    本篇内容主要讲解“Java怎么通过httpclient比较重定向和请求转发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么通过httpclient比较重定向和请求转发”吧!这里介绍一下...
    99+
    2023-07-06
  • ajax请求时post和get的区别有哪些
    今天小编给大家分享一下ajax请求时post和get的区别有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我...
    99+
    2022-10-19
  • 使用springboot跳转到指定页面和(重定向,请求转发的实例)
    目录springboot跳转到指定页面controller的写法springboot重定向和请求转发springboot重定向springboot的请求转发springboot转发和...
    99+
    2022-11-12
  • JavaWeb中常用的请求传参注解有哪些
    这篇文章主要介绍“JavaWeb中常用的请求传参注解有哪些”,在日常操作中,相信很多人在JavaWeb中常用的请求传参注解有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaWeb中常用的请求传参注解...
    99+
    2023-07-05
  • 异步请求和异步调用的区别有哪些
    这篇文章主要讲解了“异步请求和异步调用的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“异步请求和异步调用的区别有哪些”吧!异步请求和异步调用的区别...
    99+
    2022-10-19
  • 转发与重定向在SpringMVC中的区别有哪些
    本篇文章给大家分享的是有关转发与重定向在SpringMVC中的区别有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在servlet中,转发和重定向是由request和res...
    99+
    2023-05-31
    重定向 springmvc
  • 如何在 ASP 中处理并发请求的重定向?
    ASP(Active Server Pages)是一种用于创建动态网页的服务器端脚本语言。在处理网站请求时,ASP可能会遇到并发请求的情况,这时候就需要进行重定向来保证网站的正常运行。本文将介绍如何在ASP中处理并发请求的重定向问题。 一、...
    99+
    2023-07-03
    同步 重定向 并发
  • springmvc请求转发和重定向问题(携带参数和不携带参数)
    目录请求转发的三种方式1、传统的请求转发2、SpringMVC中不经过视图解析器的请求转发3、请求转发经过视图解析器重定向1、传统的重定向2、SpringMVC中不带参数的重定向3、...
    99+
    2022-11-13
    springmvc请求转发 springmvc重定向 springmvc请求
  • GET和POST两种基本请求方法的区别有哪些
    本篇内容主要讲解“GET和POST两种基本请求方法的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GET和POST两种基本请求方法的区别有哪些”吧!G...
    99+
    2022-10-19
  • PHP中跳转与重定向的区别有哪些
    这篇文章主要讲解了“PHP中跳转与重定向的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中跳转与重定向的区别有哪些”吧!区别:1、跳转是当前URL请求成功,重新请求新的URL...
    99+
    2023-06-25
  • Thinkphp中重定向redirect和跳转success、error的区别有哪些
    这篇文章主要介绍了Thinkphp中重定向redirect和跳转success、error的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Thinkphp中 重定向...
    99+
    2023-06-14
  • 在JAVA中发送HTTP请求的方式有哪些
    在JAVA中发送HTTP请求的方式有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作