首页 > 其他分享 >request请求转发和请求重定向

request请求转发和请求重定向

时间:2023-04-20 20:46:53浏览次数:37  
标签:请求 request 转发 forward Servlet response

用户向服务器发送了一次HTTP请求,该请求肯能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的。根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect)两种。

直接转发方式(Forward)

客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于一个每个信息资源是共享的。

直接转发方式用的更多一些,一般说的请求转发指的就是直接转发方式。Web应用程序大多会有一个控制器。由控制器来控制请求应该转发给那个信息资源。然后由这些信息资源处理请求,处理完以后还可能转发给另外的信息资源来返回给用户,这个过程就是经典的MVC模式。

javax.serlvet.RequestDispatcher接口是请求转发器必须实现的接口,由Web容器为Servlet提供实现该接口的对象,通过调用该接口的forward()方法到达请求转发的目的,示例代码如下:

......
    //Servlet里处理get请求的方法
 public void doGet(HttpServletRequest request , HttpServletResponse response){
     //获取请求转发器对象,该转发器的指向通过getRequestDisPatcher()的参数设置
   RequestDispatcher requestDispatcher =request.getRequestDispatcher("资源的URL");
    //调用forward()方法,转发请求     
   requestDispatcher.forward(request,response);   
}......

间接转发方式(Redirect)

实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。

有时也叫重定向,它一般用于避免用户的非正常访问。例如:用户在没有登录的情况下访问后台资源,Servlet可以将该HTTP请求重定向到登录页面,让用户登录以后再访问。在Servlet中,通过调用response对象的SendRedirect()方法,告诉浏览器重定向访问指定的URL,示例代码如下:

......
//Servlet中处理get请求的方法
public void doGet(HttpServletRequest request,HttpServletResponse response){
//请求重定向到另外的资源
    response.sendRedirect("资源的URL");
}
........

在Servlet中,我们是通过ReqDispatcher对象来实现请求转发,Servlet把请求转发给Servlet、HTML、JSP或其它信息资源,由第2个信息资源响应该请求,两个信息资源共享同一个request对象。

      有两种方式可以获取这个对象:

 //1.通过ServletContent.getReqDisPathcer()获取ReqDisPathcer对象,再调用该对象的forward()实现请求转发
        RequestDispatcher requestDispatcher= this.getServletContext().getRequestDispatcher("/test.jsp");
        requestDispatcher.forward(request,response);
        //2.通过Request.getDisPatcher()获取ReqDisPatcher对象,再调用该对象的forward()实现请求转发
        RequestDispatcher requestDispatcher=request.getRequestDispatcher("/test.jsp").forward(request,response);

 

标签:请求,request,转发,forward,Servlet,response
From: https://www.cnblogs.com/yzx-sir/p/17338241.html

相关文章

  • Request请求参数中文乱码问题
    Tomcat8以下的默认编码格式是ISO-8859-1,8版本以上Tomcat已经把默认编码格式改为UTF-8,此篇博客主要是解决Tomcat8以下版本的中文乱码问题处理。一、Request请求参数中文乱码-POST解决方案请求参数如果存在中文数据,则会乱码解决方案:POST:设置输入流的编码req.setCharacterEnc......
  • 查找80端口请求数最高的前20个IP
    有时候业务的请求量突然上去了,那么这个时候我们可以查看下请求来源IP情况,如果是集中在少数IP上的,那么可能是存在攻击行为,我们使用防火墙就可以进行封禁。命令: netstat-anlp|grep80|greptcp|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|h......
  • 网络数据转发的过程
    前言TCP/IP协议簇和底层协议配合,保证了数据能够实现端到端的传输。数据传输过程是一个非常复杂的过程,例如数据在转发的过程中会进行一系列的封装和解封装。只有深入地理解了数据在各种不同设备上的转发过程,才能够对网络进行正确的分析和检测。 OK,下面我们进入数据转发的开始。现在......
  • Request通用方式获取请求数据
    请求参数获取方式:方法一:>Get方式:>POST方式: 思考:GET请求方式和POST请求方式区别主要是在于获取请求参数的方式不一样,是否可以提供一种统一获取请求参数的方式,从而统一doGet和doPost方法内的代码。  ......
  • DRF之request
    1.request.datapost请求内的数据都放在了request.data2.request.query_parmeget请求内携带的参数都放在了request.query_parms3.request.FILESdefFILES(self):#LeavethisonealoneforbackwardscompatwithDjango'srequest.FILES#Dif......
  • http 前端5种请求优化方法
    1、减少请求数量:可以通过将多个资源(例如JavaScript、CSS、图像等)合并为单个文件,从而减少HTTP请求的数量。另外,使用CDN(内容分发网络)也可以减少跨地                域的请求延迟。2、缓存请求结果:对于一些不会频繁更新的资源,可以将它......
  • Qt编写推流综合应用示例(文件推流/桌面推流/本地摄像头/网络摄像头/转发推流/视频分发)
    一、功能特点1.1文件推流指定网卡和监听端口,接收网络请求推送音视频等各种文件。实时统计显示每个文件对应的访问数量、总访问数量、不同IP地址访问数量。可指定多种模式,0-直接播放、1-下载播放。实时打印显示各种收发请求和应答数据。每个文件对应MD5加密的唯一标识符,用......
  • Range请求头设置实现视频分段传输
    老实说,人太懒了,现在基本都不喜欢写笔记了,但是网上有关Range请求头的文章都太水了下面是抄的一段StackOverflow的代码...自己大修改过的,写的注释挺全的,应该直接看得懂,就不解释了写的不好...只是希望能给视频网站开发的新手一点点帮助吧.业务场景:视频分段传输、视频多段传输(理论......
  • 900万大数据量 查询 更新 使用redis 多线程请求
    表A中有900多万数据,根据900万数据,查询数据并插入B表创建一个定时任务,定时查询配置条件,查询更新(查询更新使用多线程)预估时间,设置请求时间跟频率不想这么干:可以查看数据执行进度思路:设置一个运行队列runList里面是待执行的id设置一个失败队列failList里面是执行失败的i......
  • 接口请求413 Request Entity Too large问题处理
     刚看到这个问题时,发现是请求接口时传递的参数过大,于是就在度娘上搜索了关于这个问题的处理方法;参考了好几篇文章,基本都说是配置问题最终,参考了知乎上的这篇文章:https://zhuanlan.zhihu.com/p/76679642关于上篇文章中的前端配置参数:bodyParser在express4版本中已经被弃用......