请求转发 和 URL 重定向

 五 请求转发 和 URL 重定向

           1 请求转发和重定向 干什么用?
             是我们在java后台servlet中 由一个servlet跳转到 另一个 servlet/jsp 要使用的技术

             前端发送请求到后台 :
             A 浏览器地址栏输入链接
             B a标签   <a href="url地址">跳转</a>
             C form表单   <form action="url地址"  method="get/post">

                              <input type="submit" value="跳转">
                          </from>
              get和post的区别(面试题)
              URL:统一资源定位符  (网址)
              http://www.baidu.com
              http://127.0.0.1:8080/day02/stu

              协议://ip地址:端口号/工程名/资源路径 ?key1=value1&key2=value2   get请求的URL

              协议:  http:// ftp  file   jdbc:mysql://
              ip地址: 0-255.0-255.0-255.0-255 定位电脑主机
              端口号:8080  8090 通过端口号定位某台主机下的某个应用
              工程名:/day02
              资源路径:/stu

              如果 通过URL传递参数(地址栏传参 )那么 需要在 路径的后面 通过?分割 ?号前面的是链接路径后面是传递的参数
              参数的格式 :  key=value
              多个参数用 & 符隔开: key1=value1&key2=value2

             D 通过js的BOM操作 : window.location.href = "http://www.baidu.com";
             E AJAX 异步请求

             servlet----》servlet/jsp

             1 如何使用
             请求转发
             req.getRequestDispatcher(servlet或者jsp的请求路径).forward(req,resp);
             URL重定向
             resp.sendRedirect("/day02_01/views/student.jsp");

             发现一个问题: 我们的代码 使用请求转发 跳转到jsp之后 是有数据的 但是重定向之后 没有数据
             2 请求转发和重定向的原理

             3 请求转发和重定向的区别
             3.1 请求转发是一次请求  重定向是两次请求 (通过地址栏可以查看)
             3.2 请求转发地址栏不会发生改变  重定向地址栏会发生改变
             3.3 请求转发可以共享请求参数    重定向之后 就获取不了共享参数了
             3.4 请求转发不能跨域(不能访问其他服务器链接) req.getRequestDispatcher("http://www.baidu.com").forward(req,resp);是不行的
                 重定向可以  resp.sendRedirect("http://www.baidu.com"); 这是可以的
             3.5 请求转发能转到WEB-INF目录下的文件req.getRequestDispatcher("/WEB-INF/views/student.jsp").forward(req,resp);
                 而重定向不能 resp.sendRedirect("/day02_01/WEB-INF/views/student.jsp");
                 (WEB-INF目录:不能被外部通过地址直接访问)
            4 为什么 请求转发不写工程名路径 而重定向一直都写工程名路径
            5 什么时候时候请求转发 什么时候使用URL的重定向
              如果需要共享参数 :请求转发
              如果需要地址栏改变:重定向
              如果需要跳转WEB-INF:请求转发
              如果跳转外部链接:重定向
              如果没如果 随便用

原文地址:https://www.cnblogs.com/qurui1998/p/10719033.html

时间: 2024-10-25 13:54:46

请求转发 和 URL 重定向的相关文章

javaWeb中request请求转发和response重定向

1.访问资源 运用forward方法只能重定向到同一个Web应用程序中的一个资源. 而sendRedirect方法可以让你重定向到任何URL. 2.request.get Forward代码中的"/uu"则代表相对与WEB应用的路径. 举例: Servlet 和 目标文件的包路径: Servlet  代码:中 doPost 和doGet代码: request 重定向url地址 或者是是相对于 本项目 (WEB13)  http:localhost:8080/WEB13+url     

请求转发与响应重定向

转发在服务器端完成的:重定向是在客户端完成的 转发的速度快:重定向速度慢 转发的是同一次请求:重定向是两次不同请求 转发不会执行转发后的代码:重定向会执行重定向之后的代码 转发地址栏没有变化:重定向地址栏有变化 转发必须是在同一台服务器下完成:重定向可以在不同的服务器下完成 如果不理解请看下面: 请求--转发 地址不变,数据存在请求中 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther

Forword(请求转发)与Redirect(重定向)区别

1.从数据共享上 Forword是一个请求的延续,可以共享request的数据 Redirect开启一个新的请求,不可以共享request的数据 2.从地址栏 Forword转发地址栏不发生变化 Redirect转发地址栏发生变化 原文地址:https://www.cnblogs.com/xiaohouye/p/11151330.html

Servlet技术-请求转发,重定向和包含的关系

Web组件之间的关系包含3种,请求转发,URL重定向和包含 1.请求转发 请求转发允许把请求转发给同一应用程序的其他web组件,这种技术通常用于Web应用控制层的Servlet流程控制器,可检查HTTP请求的数据,并将请求转发到合适的目标组件,目标组件执行具体的请求处理操作并生成响应结果. 实例: 如果当前的Servlet组件要把请求转发给一个jsp组件,如hello.jsp,可在Servlet中的service方法中执行一下代码: RequestDispatcher rd=request.ge

JavaWeb中的 请求转发 和 重定向

请求转发:forward();            重定向:sendRedirect() 来看具体实例: 在HTML页面写两个a链接请求,这个就是get请求了,然后建立与请求对应的servlet,页面代码如下所示: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>请求转发实例</title> 6 </head>

请求转发、包含、重定向 getAttribute 和 setAttribute POST和GET编码

 一.请求转发  请求包含  请求重定向 Demo5.java   注意:doPost()方法中别忘写doGet(request, response); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCo

request实现请求转发

ServletContext可以实现请求转发,request也可以. 在forward之前输入到response缓冲区中的数据,如果已经被发送到了客户端,forward将失败,抛出异常 在forward之前输入到response缓冲区中的数据,但是还没有发送到客户端,forward可以执行,但是缓冲区将被清空 ,之前的数据丢失.注意丢失的只是请求体中的内容,头内容仍然有效. 在一个Servlet中进行多次forward也是不行的,因为第一次forward结束,response已经被提交了,没有机

jsp学习之——关于请求转发和重定向的形象理解

1.重定向:是属于客户端行为,实现方法:response.sendRedirect() 从本质上讲等同于两次请求,前一次的请求对象不会保留,在浏览器上的直观表现是--地址栏的URL地址会改变. 2.请求转发:是属于服务器行为,实现方法:request.getRequsetDispatcher().forward(requset,response) 是一次请求,转发后请求对象会保存,浏览器上的直观表现就是--地址栏的URL地址不会改变.(服务器内部转发,所以客户端看不到地址栏的改变) 下面举个生活

请求转发与请求重定向

----请求重定向:客户端行为,response.sendRedirect(); 从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变. ----请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp); 其本质是一次请求,转发后请求对象会保存在request中,地址栏URL地址不会改变.