美文网首页
19.Web组件之间的相互跳转

19.Web组件之间的相互跳转

作者: 若愚同学 | 来源:发表于2018-06-19 22:59 被阅读0次

    Web组件之间跳转:从AServlet跳转到BServlet.

    三种类型:
    1:请求转发(forward)
    2:URL重定向(redirect)
    3:请求包含(include)

    请求转发(forward)

    AServlet操作完毕之后,请求转发到BServlet,继续完成余下的功能.

    语法:
    request对象.getRequestDispatcher(String path).forward(request,)
    
    参数:

    path:表示目标资源名称(跳转到哪里去)

    注意:别忘了写forward(request,response)
    请求转发的特点:

    1:浏览器地址路径没变,依然是AServlet的资源名称.

    2:只发送了一个请求.

    3:共享同一个请求,在请求中共享数据.

    4:最终的响应输出由BServlet来决定.

    5:只能访问当前应用中的资源,不能跨域跳转.

    6:可以访问WEB-INF中的资源.

    图片1.png

    注意:不要重复转发!

    java.lang.IllegalStateException:cannot forward atfer response has been committed
    
    请求转发,path要怎么写?
    1. 有斜杠。 斜杠其实就是根。
        如果我们 /forward/s2 相当于是去根中找一个资源叫/forward/s2资源,能找到。可以转发。
    2. 没斜杠,就是相对路径。
         相对于谁呢?相对于转发代码写在哪,就相对于谁。
    找当前资源的最后一个斜杠。
    /forward/abc/xyz/s2, 那么"forward/s2" 就直接拼接到相对路径(/forward/abc/xyz)后面
    3. 以后,我们都加上斜杠。
    因为斜杠是直接从根里面找。
    

    URL重定向(redirect):

    AServlet操作完毕之后,重定向到BServlet,继续完成余下的功能.
    语法:
    response对象.sendRedirect(String path);
    参数:path,表示目标资源名称
    
    URL重定向的特点:

    1:浏览器地址栏路径发生变化,编程Servlet2的资源名称.

    2:只发送了两个请求.

    3:因为是不同的请求,所以不能共享请求中的数据.

    4:最终的响应输出由Servlet2来决定

    5:可以跨域访问资源.

    6:不可以访问WEB-INF中的资源.

    面试题:

    请求转发和URL重定向的区别?
    回答方式:

    1):分别解释各自的定义(若不知道如何定义,写代码).

    2):罗列各自的特点(若是做对比,请最好画表格).

    3):各自的应用场景(来源于
    自的特点).

    请求转发和URL重定向的选择?

    1:若需要共享请求中的数据,只能使用请求转发.

    2:若需要访问WEB-INF中的资源,只能使用请求转发.

    3:若需要跨域访问,只能使用URL重定向.

    4:请求转发可能造成表单的重复提交问题.

    5:其他时候,任选.

    相关文章

      网友评论

          本文标题:19.Web组件之间的相互跳转

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