精华内容
下载资源
问答
  • 请求转发

    2020-04-18 22:05:18
    一:请求转发的原理: 二:请求转发的定义: 这是一种在服务器内部的资源跳转方式.(换言之,请求转发是不能跳到服务器之外的资源) 三:步骤 1. 通过request对象获取请求转发器对象:RequestDispatcher ...

    一:请求转发的原理:

     二:请求转发的定义:

            这是一种在服务器内部的资源跳转方式.(换言之,请求转发是不能跳到服务器之外的资源)

     三:步骤

                    1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
                    2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response) 

    四:特点

                    1.浏览器地址栏路径不发生变化

                    2.只能转发到当前服务器的内部资源中

                    3.转发只是一次请求

    五.重要用途

                   1.把任务分布在不同的内部资源中完成

                   2.可以通过request在不同资源中实现资源的传递,因为请求转发是使用同一个请求

    六.在登陆案例中登陆失败后返回登陆界面的请求转发和重定向的选择

    由图可知,在登陆失败之后不需要通过request把错误信息去其他页面的情况下,所以应该选择重定向

                    

     

     

     

     

     

    展开全文
  • 请求转发和重定向区别 请求转发和重定向原理: 请求转发是servlet 内部调用;重定向是两次请求和响应   请求转发和重定向区别总结 请求转发是一次请求一次响应, 重定向是两次请求两次响应。 请求转发...

    请求转发和重定向区别

    请求转发和重定向原理

    请求转发是servlet 内部调用;重定向是两次请求和响应

     

    请求转发和重定向区别总结

    请求转发是一次请求一次响应, 重定向是两次请求两次响应。

    请求转发地址栏不会变化的, 重定向地址栏发生变化。

    请求转发路径不带工程名, 重定向需要带工程名路径(是浏览器执行的操作)

    请求转发只能在本网站内部, 重定向可以定向到任何网站。

    如果需要用request域去保存数据,必须使用请求转发,不能使用重定向

    因为request域的作用范围只在同一次请求和响应中有效。响应结束后就失效了

    代码演示请求转发和重定向区别

     

    注意:

    如果需要使用request进行值传递(共享),需要通过请求转发完成。如果页面需要跳转到其他网站上必须使用重定向。

    展开全文
  • Java请求转发和请求重定向

    万次阅读 2018-02-10 00:14:05
    请求转发和请求重定向

    一、请求转发和请求重定向的区别
    请求转发和请求重定向又分别称为服务器跳转和客户端跳转

    1.1、组件之间可否共享信息不同(本质区别)
    当客户端向服务器发送请求时,服务器收到请求后,会将请求封装成一个HttpServletRequest对象request,并且所有的请求参数都封装在request对象中,这个对象时Jsp的内置对象可以直接在Jsp中使用。服务器收到请求后,还需要请求别的页面,这是就有两种方式:请求转发和请求重定向。

    所谓请求转发,是服务器的行为,请求由服务器转发给另外一个页面处理,如何转发,何时转发,转发几次,客户端是不知道的。请求转发时,从发送第一次到最后一次请求的过程中,web容器只创建一次request和response对象,新的页面继续处理同一个请求。也可以理解为服务器将request对象在页面之间传递。

    所谓请求重定向,是客户端的行为,每次请求重定向都是由客户端发起的,也就是说重定向一次,就刷新request对象的属性,之前的request对象的属性值就失效了。

    1.2、浏览器地址栏显示不同(表面区别)

    请求转发之后地址栏的信息并不会有任何的改变。
    请求重定向之后地址栏是会改变的,变为跳转之后的页面地址。

    二、Java实现
    2.1 Java中的请求转发(服务器跳转)
    执行到跳转语句时就会立刻进行跳转

    Java代码:

    request.getRequestDispatcher("success.jsp").forward(request,response);

    在jsp页面中你也会看到通过下面的方式实现转发:

    <jsp:forward page="success.jsp" />

    2.2 Java中的请求重定向(客户端跳转)

    1. response.sendRedirect("apage.jsp"); 不能传递request 范围的属性 ,但是可以通过地址重写的方式向跳转页传递参数,因为该方法执行完之后就相当于一次http request 的结束,这是服务器会向客户端发送302 状态码和新的url ,告诉客户端重新发送request 请求到新的url ,然后客户端照此执行,执行即新的请求响应流程开始,服务器再重新创建HttpServletRequest 对象和HttpServletResponse 对象,此时两个请求已经不在一个线程了,所以request 和response 对象都不是开始的那个了;
    2. response.setHeader("refresh","2;URL=index.jsp") 2 秒后跳转到其他页面;
    3. <a href="http://www.baidu.com"> 百度</a> 超链接
    4. 表单提交

    三、路径问题

    转发和重定向的URLString前有加 / 为绝对路径 反之为相对路径

    3.1绝对路径
    1、重定向的 / 表示:http://服务器ip:端口/

    response.sendRedirect("/Manager/index.jsp")

    生成的地址:web服务器本身地址+参数生成完整的URL 即:http://localhost:8080/Manager/index.jsp

    2、请求转发的 / 表示:http://服务器ip:端口/项目名

    request.getRequestDispatcher("/index.jsp").forward(request, response); 

    生成的地址:http://localhost:8080/项目名/index.jsp

    重定向是浏览器发来的,只知道发到某个服务器,但是不知道发到服务器的哪个project,所以需要自己用代码声明; 而请求转发是服务器某个project内部的转发,转来转去都是在某个project内部,所以不需要手动声明项目名。

    3.2 相对路径

    假设通过表单请求指定的Url资源 action="LoginServlet"
    则表单生成的请求地址为:http://localhost:8080/项目名/LoginServlet

    1、请求重定向:response.sendRedirect("Manager/index.jsp")
    生成相对路径:http://localhost:8080/项目名/Manager/index.jsp
    2、请求转发:相对路径情况下生成的完整URL与重定向方法相同。

    展开全文
  • servlet的请求转发和请求包含详解RequestDispatcher接口的方法如何获取RequestDispatcher对象getRequestDispatcher方法的语法使用getRequestDispatcher方法的示例RequestDispatcher接口的示例index.htmlLogin....

    RequestDispatcher接口提供了将请求分派到另一个资源(可能是html、servlet或jsp)的功能。这个接口还可以用来包含另一个资源的内容。这是servlet协作的方式之一。RequestDispatcher接口中定义了两个方法。

    RequestDispatcher接口的方法

    RequestDispatcher接口提供了两个方法。它们是:

    1. public void forward(ServletRequest request,ServletResponse response)throws ServletException,java.io.IOException:Forwards a request from a servlet to another resource (servlet, JSP file, or HTML file) on the server.
    2. public void include(ServletRequest request,ServletResponse response)throws ServletException,java.io.IOException:Includes the content of a resource (servlet, JSP page, or HTML file) in the response.

    在这里插入图片描述

    如上图所示,第二个servlet的响应被发送到客户机。第一个servlet的响应不会显示给用户。

    在这里插入图片描述

    如上图所示,第二个servlet的响应包含在发送到客户端的第一个servlet的响应中。

    如何获取RequestDispatcher对象

    ServletRequest接口的getRequestDispatcher()方法返回RequestDispatcher的对象。语法:

    getRequestDispatcher方法的语法

    public RequestDispatcher getRequestDispatcher(String resource);  
    

    使用getRequestDispatcher方法的示例

    RequestDispatcher rd=request.getRequestDispatcher("servlet2");  
    //servlet2 is the url-pattern of the second servlet  
      
    rd.forward(request, response);//method may be include or forward  
    

    RequestDispatcher接口的示例

    在本例中,我们将验证用户输入的密码。如果密码是servlet,它将把请求转发给WelcomeServlet,否则将显示错误消息:对不起,用户名或密码错误!在这个程序中,我们正在查找硬编码信息。但是你也可以把它检查到数据库中,我们将在开发章节中看到。在这个例子中,我们创建了以下文件:

    • index.html:用于从用户获取输入。
    • Login.java:处理响应的servlet类。如果密码是servet,它将把请求转发给welcome servlet。
    • WelcomeServlet.java:显示欢迎消息的servlet类。
    • web.xml:包含servlet信息的部署描述符文件。

    在这里插入图片描述

    index.html

    <form action="servlet1" method="post">  
    Name:<input type="text" name="userName"/><br/>  
    Password:<input type="password" name="userPass"/><br/>  
    <input type="submit" value="login"/>  
    </form>
    

    Login.java

    import java.io.*;  
    import javax.servlet.*;  
    import javax.servlet.http.*;  
      
      
    public class Login extends HttpServlet {  
      
    public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
      
        response.setContentType("text/html");  
        PrintWriter out = response.getWriter();  
              
        String n=request.getParameter("userName");  
        String p=request.getParameter("userPass");  
              
        if(p.equals("servlet"){  
            RequestDispatcher rd=request.getRequestDispatcher("servlet2");  
            rd.forward(request, response);  
        }  
        else{  
            out.print("Sorry UserName or Password Error!");  
            RequestDispatcher rd=request.getRequestDispatcher("/index.html");  
            rd.include(request, response);  
                          
            }  
        }  
      
    } 
    

    WelcomeServlet.java

    import java.io.*;  
    import javax.servlet.*;  
    import javax.servlet.http.*;  
      
    public class WelcomeServlet extends HttpServlet {  
      
        public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
      
        response.setContentType("text/html");  
        PrintWriter out = response.getWriter();  
              
        String n=request.getParameter("userName");  
        out.print("Welcome "+n);  
        }  
      
    }  
    

    web.xml

    <web-app>  
     <servlet>  
        <servlet-name>Login</servlet-name>  
        <servlet-class>Login</servlet-class>  
      </servlet>  
      <servlet>  
        <servlet-name>WelcomeServlet</servlet-name>  
        <servlet-class>WelcomeServlet</servlet-class>  
      </servlet>  
      
      
      <servlet-mapping>  
        <servlet-name>Login</servlet-name>  
        <url-pattern>/servlet1</url-pattern>  
      </servlet-mapping>  
      <servlet-mapping>  
        <servlet-name>WelcomeServlet</servlet-name>  
        <url-pattern>/servlet2</url-pattern>  
      </servlet-mapping>  
      
      <welcome-file-list>  
       <welcome-file>index.html</welcome-file>  
      </welcome-file-list>  
    </web-app>  
    

    download this example
    download this example (developed in Myeclipse IDE)
    download this example (developed in eclipse IDE)
    download this example (developed in netbeans IDE)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    一个请求跨多个Servlet,需要使用转发和包含。
    请求转发:由下一个Servlet完成响应体!当前Servlet可以设置响应头!(留头不留体)
    请求包含:由两个Servlet共同完成响应体!(留头又留体)
    无论是请求转发还是请求包含,都在一个请求范围内!使用同一个request和response!
    备注:本段摘自链接:https://blog.csdn.net/h2503652646/article/details/83661347

    请求转发和重定向的区别

    请求转发是一个请求一次响应,而重定向是两次请求两次响应。
    请求转发地址不变化,而重定向会显示后一个请求的地址
    请求转发只能转发到本项目其它Servlet,而重定向不只能重定向到本项目的其它Servlet,还能定向到其它项目
    请求转发是服务端行为,只需给出转发的Servlet路径,而重定向需要给出requestURI,既包含项目名!
    备注:本段摘自链接:https://blog.csdn.net/h2503652646/article/details/83661347

    展开全文
  • 根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect)两种有何区别呢?本篇在回答该问题的同时全面的讲解两种请求转发方式的原理和区别。 【关键考点】 请求转发的含义; Forward转发...
  • request请求转发

    千次阅读 2020-09-10 16:24:24
    request请求转发 什么是请求转发? 浏览器访问servlet1,Servlet1将参数处理得到结果,没有直接返回给浏览器,而是将结果带给Servlet2,由Servlet2再处理之后返回给浏览器 类比 面试者的简历给前台,前台收到之后...
  • 请求转发和重定向的区别请求转发和重定向区别一、请求转发和重定向二、转发和重定向的路径问题三、转发和重定向的区别 请求转发和重定向区别 一、请求转发和重定向 请求转发: request.getRequestDispatcher(URL地址...
  • Request请求转发详解

    千次阅读 2020-07-07 16:16:46
    直接来,RequestDemo5代码,get请求和post请求都请求转发了,转发到RequestDemo6请求 RequestDemo5代码 package com.lingaolu.request; import javax.servlet.RequestDispatcher; import javax.servlet....
  • 根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect),那么这两种转发方式有何区别呢?   一、从定义上看: forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的...
  • 请求重定向和请求转发

    千次阅读 2016-11-27 15:14:51
    1. 概述在J2EE开发中,我们总是会接触到请求重定向和请求转发 重定向是指通过各种方法将网络请求重新定个方向转到其它位置,而转发是指把网页的请求重新转发到另一个站点。那么请求转发和请求重定向有什么区别,...
  • JavaWeb的请求转发

    2019-08-17 22:38:07
    请求转发就是 这种跳转到一个新的指定页面的实现方式之一 Javaweb请求转发: 转发关键代码格式:request.getRequestDispatcher(“xxx.jsp”).forward(request,response); 请求转发的实现原理: 请求转发,是浏览器...
  • JavaWeb——请求转发与请求重定向
  • 请求重定向:response.sendRedirect("request.jsp");...请求转发: request.getRequestDispatcher("request.jsp").forward(request, response);服务器端行为,一次请求,转发后对象会保存,地址栏URL地址不会变。
  • 根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect),那么这两种转发方式有何区别呢? 一、从定义上看: forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容...
  • 请求转发与重定向

    2019-10-15 22:12:59
    请求转发与重定向 请求转发与重定向示意图: 请求转发是服务器端跳转,它只产生一次请求,客户端请求到达服务器之后中会发生一次转发,之后服务器才将结果发送到客户端。 重定向是客户端跳转,它会产生两次请求,...
  • 请求转发 请求转发可以将数据传送到请求的地址中 请求转发通俗点说就是相当于工厂代工,AServlet接收到请求之后,找到BServlet代工完成后响应回服务器,整个过程就是请求转发,传送的数据 可以通过请求域发送,...
  • 请求转发与请求重定位基础 请求转发 浏览器接收到客户请求后,通知服务器调用另外一个web资源进行处理.称之为请求转发 代码说明: 1.先要获取context域对象 getServletContext() 2.从域对象中获取转发器 ...
  • Request请求转发和重定向 一,Request请求转发 (一),请求转发:在服务器内部的资源跳转的方式 我们在实际开发中,需要写不同的servlet,每个人servlet完成不同的功能,当我们访问Aservlet的时候, Aservlet实现部分...
  • servlet请求转发的三种方式   servlet中的请求转发主要有三种方式: 1、 forward:是指转发,将当前request和response对象保存,交给指定的url处理。并没有表示页面的跳转,所以地址栏的地址不会发生改变。...
  • 06-SpringMVC核心之请求转发与重定向

    万次阅读 2020-11-11 12:32:35
    1.请求转发与重定向 当处理骑牛完毕后,需要进行资源的跳转,此时有两种选择,一种是请求转发,另一种是重定向。这个图应该可以说明所有问题了吧! 原始的请求转发和重定向是这样写的: //请求转发 request....
  • 在做微服务和单独集成等同构异构的项目过程中,可能会遇到做代理转发、请求转发等相关的功能,下面的代码(项目片段demo代码)可能具有一定的参与功能 下面代码仅供参考,具体还需要根据自己的项目情况对代码进行改造...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,947
精华内容 11,978
关键字:

请求转发