zoukankan      html  css  js  c++  java
  • servlet-03-重定向/转发

    1、重定向

    浏览器向服务器发请求,服务器返回一个302的状态码以及location的消息头,浏览器接受到的302之后,会立即向location指向的地址发新的请求

    如何重定向

    //url:重定向的目的地
    response.sendRedirect(String url);

    编程注意点:

    a. 重定向之前,不能调用out.close()或者out.flush()方法

    b. 重定向之前,会清空response缓存中的数据

    特点:

    a.重定向的地址是任意的,可以跨应用,也可以跨服务

    b.重定向之后,浏览器的地址会发生改变

    2、转发

    一个web组件将未做完的事情交给另外一个web组件继续完成。通常情况是servlet负责取数据,jsp负责展示数据

    如何转发

    step1:将数据绑定到request上

    //name:绑定名  obj:绑定值
    request.setAttribute(String name,Object obj);
    //根据绑定名获取绑定值
    Object:request.getAttribute(String name);
    注:绑定名若写错,返回null

    step2:获取转发器

    //url:转发目的地
    RequestDispatcher rd=request.getRequestDispatcher(String url);

    step3:转发

    rd.forward(request,response);

    转发的编程注意点:

    a. 转发之前不能调用out.close()或者out.flush()方法

    b. 转发之前,服务器会清空response对象中的缓存数据

    转发的特点:

    a. 转发之后,浏览器地址栏的地址不会发生改变

    b. 只能在同一应用内部转发,不能跨应用,也不能跨服务

    c. 转发之间的组件共享请求对象与响应对象

    3、路径问题

    a. 链接<a href="del.do"></a>

    b. 表单<form action="update.do"></form>

    c. 重定向  response.sendRedirect("list.do");

    d. 转发   request.getRequestDispatcher("list.jsp");

    相对路径:

        不以“/”开头的路径,比如“del.do”、“list.do”,需要计算当前组件路径与目标路径的关系

    绝对路径:

        以“/”开头的路径,比如“/servlet01/del.do”,像链接、表单、重定向:以“/”开头,从应用名开始写

        转发:以“/”开头,从应用名之后开始写

    建议:采用绝对路径写法,更安全

  • 相关阅读:
    《Python机器学习及实践:从零开始通往Kaggle竞赛之路》
    CPA专业阶段单科成绩有5年有效期限,即从通过科目考试的第一年算起
    升级gitk后,Error in startup script: unknown color name "lime"
    新三板:精选反馈问题103题(建议收藏)
    jQuery .on
    onload in JavaScript
    The JavaScript this Keyword
    JavaScript method overload
    JavaScript modularity with RequireJS (from spaghetti code to ravioli code)
    Understanding RequireJS for Effective JavaScript Module Loading
  • 原文地址:https://www.cnblogs.com/xslzwm/p/9667506.html
Copyright © 2011-2022 走看看