美文网首页
javaweb重定向与请求转发

javaweb重定向与请求转发

作者: 冒险小A | 来源:发表于2018-08-16 20:33 被阅读0次
    Web组件之间的跳转方式:
    • 请求转发(forward)
    • URL重定向(redirect)
    • 请求包含(include)

    1. 请求转发

    从servlet1请求转发到servlet2 , 在servlet1完成一部分的功能,再跳转到servlet2,继续完成剩下的功能.请求转发是服务器内部把对一个request/response的处理权,移交给另外一个对于客户端而言,它只知道自己最早请求的那个A,而不知道中间的B,甚至C、D。 传输的信息不会丢失。

    语法 :

    request.getRequestDispatcher(String path).forward(request,response);

    参数 :

    path : 要转发的路径(资源的名称)

    特点 :

    (1) 浏览器地址栏不发生改变,不会变为目标地址
    (2) 整个流程都是在服务器端完成的
    (3) 整个过程是一个请求,一个响应
    (4) 共享同一个请求中的数据
    (5) 最终响应给浏览器的 是由servlet2来决定
    (6) 请求转发不能跨域访问,只能跳转到当前应用中的资源
    (7) 请求转发可以访问WEB-INF目录中的资源


    请求转发
    2. 重定向
    语法 :

    response.sendRedirect(String url);

    参数 :

    url : 目标资源地址

    特点 :

    (1) 浏览器地址栏发生改变 , 变成目标地址
    (2) 在sendRedirect()里面是两个请求,两个响应
    (3) 因为URL重定向是两个请求互不干扰,相互独立 , 所以不共享请求中的数据
    (4) 最终响应给浏览器的 是由servlet2来决定(相当于把目标地址拷贝到浏览器地址栏 , 敲回车)
    (5) URL重定向能跨域访问 , 可以访问其他应用中的资源
    (6) URL重定向不能访问WEB-INF目录中的资源
    (7) 因为是从客户端浏览器进行再次发送请求,所以在重定向过程中,之前传输的信息会被丢失。


    URL转发
    3. 请求包含 :

    在一个页面中可以包含其他页面的内容
    在servlet中没有意义

    语法:

    request.getRequestDispartcher(String path).include(req,resp)


    4. 注意点:
    • 如果需要跨域访问 , 避免表单的重复提交 , 只能使用URL重定向
    • 如果需要共享请求中的数据 , 访问WEB-INF中的资源 , 只能用请求转发

    例如一个网银接口,因为web容器中想要访问到网银接口,必须要使用重定向,而重定向会把之前的信息丢失,所以不能再request或者session中存数据给它使用,只能通过在重定向的location中加入数据进行请求。

    相关文章

      网友评论

          本文标题:javaweb重定向与请求转发

          本文链接:https://www.haomeiwen.com/subject/pftabftx.html