请求重定向和服务器内部跳转中path的问题?

来源:1-13 Servlet路径跳转

慕粉3990798

2017-01-17 21:15

有一些地方还是没有弄明白。为什么请求重定向中必须获取上下文地址,如response.sendRedirect(request.getContextPath()+"/test.jsp"); 而服务器内部跳转则不需要获得上下文地址,直接写: request.getRequestDispatcher("/test.jsp").forward(request, response); 猜测是否是因为这两种请求方式分别在服务器内外,在服务器外不知道当前项目根目录,就必须通过request.getContextPath()来获得地址,而服务器内已经知晓了当前项目根目录,所以直接可以用/代替。 请问是这样吗?

写回答 关注

2回答

  • qq_这是只仓鼠_0
    2017-03-06 00:48:43

    你是不是弄混了 这并不是重定向和转发的区别,而是为了讲解绝对路径和相对路径的区别才这么写的。

    盯叮町玎仃 回复qq_这是只...

    你好,我想请问一下,为什么我用response.sendRedirect("../test.jsp");,重定向后页面的地址是localhost:8080/test.jsp?

    2017-07-03 11:28:24

    共 3 条回复 >

  • 人间_上帝
    2017-01-19 11:30:24

    请求转发与请求重定向的区别:

    重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变; 

    请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变;


JAVA遇见HTML——Servlet篇

本门课程在JSP课程的基础上,深入介绍Servlet的基础知识

160615 学习 · 1029 问题

查看课程

相似问题