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

    千次阅读 2020-09-10 16:24:24
    request请求转发 什么是请求转发? 浏览器访问servlet1,Servlet1将参数处理得到结果,没有直接返回给浏览器,而是将结果带给Servlet2,由Servlet2再处理之后返回给浏览器 类比 面试者的简历给前台,前台收到之后...

    request请求转发

    1. 什么是请求转发?

      浏览器访问servlet1,Servlet1将参数处理得到结果,没有直接返回给浏览器,而是将结果带给Servlet2,由Servlet2再处理之后返回给浏览器

    2. 类比

      面试者的简历给前台,前台收到之后转给面试官

    3. 在哪里使用?

      搜索功能等,很多地方。

      搜索功能案例:servlet中request转发图解:
      在这里插入图片描述

    请求转发的代码实现:

    Dispatcher01Servlet

    package com.lbl.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/dispatcher01Servlet")
    public class Dispatcher01Servlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //将游戏本添加到requst域中
            request.setAttribute("name","游戏本");
            request.getRequestDispatcher("/dispatcher02Servlet").forward(request,response);
        }
    }
    
    

    Dispatcher02Servlet

    package com.lbl.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/dispatcher02Servlet")
    public class Dispatcher02Servlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.获取值
            String name = (String) request.getAttribute("name");
            //2.组装标签后,响应给浏览器
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().println("<font color='red'>"+name+"</font>");
        }
    }
    

    效果如下:

    在这里插入图片描述

    展开全文
  • Request请求转发

    2020-09-02 23:22:13
    请求转发和请求重定向 用户向服务器发送了一次HTTP请求,该请求肯能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的。根据转发方式的不同,可以...

    请求转发和请求重定向

    用户向服务器发送了一次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 请求转发

    2014-08-15 14:00:00
    package request;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet....

    package request;

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    //request请求转发,以及使用request域对象吧数据带给转发资源
    public class RequestDemo5 extends HttpServlet {
        //用congtext存数据是行不通的,但是request存数据是可以的,每个请求对象都有唯一的request
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String data = "aaaaaa";
            request.setAttribute("data", data);
            //request也可实现转发
            request.getRequestDispatcher("/message.jsp").forward(request, response);
        }
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }

    }

    转载于:https://www.cnblogs.com/siashan/p/3914737.html

    展开全文
  • 主要介绍了Java中Request请求转发详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Request请求转发和重定向 一,Request请求转发 (一),请求转发:在服务器内部的资源跳转的方式 我们在实际开发中,需要写不同的servlet,每个人servlet完成不同的功能,当我们访问Aservlet的时候, Aservlet实现部分...

    Request请求转发和重定向

    一,Request请求转发
    (一),请求转发:在服务器内部的资源跳转的方式
    我们在实际开发中,需要写不同的servlet,每个人servlet完成不同的功能,当我们访问Aservlet的时候, Aservlet实现部分功能后需要跳转到一个新的Bservlet里面,这就是资源跳转的方式,就用到了请求转发。
    在这里插入图片描述

    (二),写法
    1.通过request对象获取请求转发器对象
    创建request的getRequsetDispatche对象,参数为转发的访问路径。
    ⒉.调用dispatcher对象的 forword(),参数为request和response
    代码展示:
    1,A servlet (关羽)

    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/test02")
    public class test02_Servlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("我乃关二爷,需要找三弟借纹银五两,全是为了买破鞋的大哥");
            //1,获取request的请求转发器  内部参数为转发的路径
            RequestDispatcher dispatcher = request.getRequestDispatcher("/test03");
            //2,调用转发器对象 传入参数request和response
            dispatcher.forward(request,response);
        }
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    

    在这里插入图片描述

    2,B servlet (张飞)

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/test03")
    public class test03_Servlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {           
            System.out.println("我乃燕人张飞,借你五两");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    

    运行结果:
    在这里插入图片描述

    (三)转发特点
    1,浏览器地址栏不发生变化
    2,只能转发到当前服务器的内部资源,不能转发至服务器外部资源
    3,转发只是一次请求,多个资源之间使用同一个请求(可点开浏览器右键检查,查看network all查看请求)
    二,数据共享
    在这里插入图片描述
    以上图为例,当A servlet工作了一部分后,需要转发至B servlet的时候,需要告诉B,A工作到了什么地步,这时就需要进行数据的传输。这即是数据共享。
    数据共享,就用到了域对象。所谓域对象,就是一个有作用范围的对象,可以在范围呢共享数据。
    1,Request数据的作用域:
    一次请求的范围,数据可进行传输的范围,一般用于请求转发的多个资源中共享数据。
    2,数据共享的方法:
    void setAttribute(String name,Obj obj):存储数据
    Obj getAttribute(String name):通过名字获取值
    void removeAttribute(String name):通过键名来移除键值对
    3,代码展示:
    ①,A servlet (关羽)

    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/test02")
    public class test02_Servlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("我乃关二爷,需要找三弟借纹银五两,全是为了买破鞋的大哥");
            //域对象共享数据  request.setAttribute("键","值")
            request.setAttribute("money","5两");
    
            //1,获取request的请求转发器  内部参数为转发的路径
            RequestDispatcher dispatcher = request.getRequestDispatcher("/test03");
            //2,调用转发器对象 传入参数request和response
            dispatcher.forward(request,response);
    
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    

    ②,B servlet (张飞)

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/test03")
    public class test03_Servlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //通过名字获取值   (通过money获取到五两)
            Object money = request.getAttribute("money");
    
            System.out.println("Money:"+money);
            System.out.println("我乃燕人张飞,借你五两");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    

    运行结果:
    在这里插入图片描述
    注:数据共享的作用域是一次请求范围,所以A和B必须在同一个请求中。
    三,重定向
    (一),重定向就是资源跳转的一种方式
    在这里插入图片描述
    (二),写法
    1,方法1:
    通过设置状态码,设置请求路径
    步骤:
    ①,新建两个servlet文件
    ②,设置响应头location 值为servlet2的路径
    在这里插入图片描述
    2,方法2:
    在这里插入图片描述
    (三)代码展示:
    1, servlet1

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/test04")
    public class test04_Servlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("test04来了.....");
            //方法一
            response.setStatus(302);          //设置状态码 302
            response.setHeader("location","/test05"); //设置location,值为servlet2路径
            //方法二
    //        response.sendRedirect("/test05");     //将状态码自动封装起来
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    

    2,servlet2

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/test05")
    public class test05_Servlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("重定向到了servlet05");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    

    运行结果:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (四)重定向特点
    通过和转发的特点进行对比
    在这里插入图片描述

    展开全文
  • 文章目录一、请求转发(1)请求转发的步骤(2)request请求转发的特点☆二、数据共享(1)request域对象(2)提供的方法三、演示请求转发与数据共享 一、请求转发 请求转发:是一种在服务器内部的资源跳转方式。 假设要完成...
  • Request请求转发详解

    千次阅读 2020-07-07 16:16:46
    直接来,RequestDemo5代码,get请求和post请求都请求转发了,转发到RequestDemo6请求 RequestDemo5代码 package com.lingaolu.request; import javax.servlet.RequestDispatcher; import javax.servlet....
  • request请求转发和response重定向的特点区别 请求转发: 使用的方法:request.getRequestDispatcher(String url).forward(request, response); 注:url是请求转发的地址,相对于当前页面的路径 特点: 1. 地址栏不...
  • request请求转发 请求转发:在服务器内部的资源跳转的方式 我们在实际开发中,需要写不同的servlet,每个人servlet完成不同的功能,当我们访问servlet01的时候,servlet01实现部分功能后需要跳转到一个新的Servlet02...
  • Servlet(二:HttpServletRequest request 请求转发与重定向) 文章目录Servlet(二:HttpServletRequest request 请求转发与重定向)HttpServletRequest request概念方法getParameterValues("hobby")getParameterMap()...
  • 通过request对象获取请求转发器对象 : RequestDispatcher getRequestDispatcher(String path) 使用RequestDispatcher对象来进行转发: forward(ServletRequest request, ServletResponse response) 特点: 浏览器...
  • 问题:点击搜索按钮后,跳转到指定的servlet从数据库中取数据,然后通过request请求转发,将数据返回到页面刷新 req.getRequestDispatcher(“RentSearch.jsp”).forward(req,resp); 分析:测试许久,都没有效果!...
  • 1.请求转发 1.概述:让服务器跳转到另一个资源上 2.方法 1.request.getRequestDispatcher("跳转资源路径").forward(request, response); 2.域对象 1.作用:实现servlet与servlet之间的数据传输功能 2.例如:...
  • 在一个请求内来在多个Servlet中共享数据(request域) RequestDispatcher rd = request.getRequestDispatcher("/MyServlet"); 使用request获取RequestDispatcher...案例(请求转发): 案例(请求包含): ...
  • request请求转发原理和特点

    千次阅读 2018-06-27 00:38:59
    特点:1、请求转发是由服务器发出的请求2、请求转发只创建了一个request和response3、请求转发浏览器上的地址栏不会发生变化4、请求转发只能转发到本站的资源5、请求转发的/代表了,http://localhost/8080/工程名...
  • request.getRequestDispatcher()....1.地址栏request请求转发:浏览器地址栏不发生变化 forward是服务器内部重定向,程序收到请求后重新定向到另一个程序,客户机并不知道; response重定向:地址栏路径发生改变
  • 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path); 使用RequestDispatcher对象来进行转发:forward(ServletRequest request,ServletResponse response); 一般采用...
  • request对象实现请求转发请求转发指一个WEB资源收到客户端请求后,通知服务器去调用另外一个WEB资源进行处理。 请求转发应用场景:MVC设计模式 request对象提供了一个getRequestDispatcher方法,该方法返回一个...
  • Servlet Request 请求转发

    2018-03-21 10:34:00
    request.getRequestDispatcher("logined.jsp").forward(request, response); //登录用户在登录页面验证通过,跳转到登录成功页面。 在Servlet层处理 request.getRequestDispatcher("login.jsp").forward(request, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,816
精华内容 1,926
关键字:

request请求转发