zoukankan      html  css  js  c++  java
  • 重定向与转发

    重定向和转发

    1.重定向:response.sendRedirect("URL路径");

    重定向redirect:服务器强制性地要求浏览器再次发出新请求去访问指定路径,多次请求,数据无法共享。

    @WebServlet(value="loginservlet",name="userLoginServlet")
    public class userLoginServlet extend HttpServlet{
        @Override
        //doGet()或daPost()方法
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
            ..........一些逻辑处理...........//代码一   
           response.sendRedirect("welcome.html");//代码二
        }
    }
    

    ps:当客户端一直F5刷新时,只会请求welcome.html

    重定向是两次请求,两次响应。所以welcome.html页面中获取不到代码一中的请求数据。地址栏会发生变化。

    2.转发:

    转发forward:转发是服务器把本次请求对象和响应对象直接交给下一个资源,只有一次请求,数据可以共享。

    例如:RequestDispatcher dispatcher = request.getRequestDispatcher("/welcome.jsp");
    dispatcher.forward(request, response);
    
    @WebServlet(value="loginservlet",name="userLoginServlet")
    public class userLoginServlet extend HttpServlet{
        @Override
        //doGet()或doPost()方法
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
            ..........一些逻辑处理...........//代码一   
         request.getRequestDispatcher("/welcome.jsp").forward(request, response);//代码二
        }
    }
    

    ps:当客服端一直F5刷新时,会一直执行loginservlet的doGet()或doPost()方法.

    转发是一次请求,一次响应,所以welcome.jsp页面中可以获取的到代码一中的请求数据。地址栏不变

    3.总结

    重定向特点:(做数据的增删改时,需要使用重定向)

    1、重定向是客户端行为。
    2、重定向是浏览器做了至少两次的访问请求。
    3、重定向浏览器地址改变。
    4、重定向两次跳转之间传输的信息会丢失(request范围)。
    5、重定向可以指向任何的资源,包括当前应用程序中的其他资源,同一个站点上的其他应用程序中的资源,其他站点的资源。

    转发特点:

    1、转发是服务器行为
    2、转发是浏览器只做了一次访问请求
    3、转发浏览器地址不变
    4、转发两次跳转之间传输的信息不会丢失,所以可以通过request进行数据的传递
    5、转发只能将请求转发给同一个Web应用中的组件

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

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

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

    l 请求转发路径不带工程名,重定向需要带工程名路径。

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

    注意:

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

    Don't just say it. Show me your code.
  • 相关阅读:
    ssh框架整合
    spring事务管理
    spring AOP
    spring静态代理和动态代理
    log4j介绍
    Socket通信介绍
    C# 串口与窗体应用程序的连接
    Halcon中的图像相减算子abs_diff_image和sub_image
    R-CNN、fast-RCNN、faster-RCNN到yolo、SSD简要
    QT入门系列(2):MinGW与MSVC编译的区别
  • 原文地址:https://www.cnblogs.com/bigbeardhk/p/12694830.html
Copyright © 2011-2022 走看看