Servlet 中重定向、转发与绝对路径的联系

    xiaoxiao2023-11-08  145

    重定向:通知浏览器重新发送至xxx的请求。

    1、发生场景:

    (1)response.sendRedirect("xxx");

    (2)JSP页面的 src 属性;

    (3)JSP表单的 action 属性;

    2、参数问题:

    重定向只是告诉浏览器发送请求URL,没有携带任何参数。

    3、绝对路径:

    (1)例如:

    response.sendRedirect("/xxx");

     

    其中的“/”表示“http://服务器ip:端口/”,比如:http://localhost:8080/。【注意,用该方法访问会报错404,因为访问结果的url是:http://localhost:8080/xxx,在这里没有声明项目名。】

    所以一般需要改成response.sendRedirect("/项目名/xxx")

    (2)如果是jsp页面需要重定向可以用“${pageContext.request.contextPath}

    <script type="text/javascript" src="${pageContext.request.contextPath}/jquery-3.1.1.js"></script>

     

     

    (3)如果是jsp页面转发用“request.getContextPath()”:

     

    request.getRequestDispatcher(request.getContextPath()+"/xxx").forward(request, response);

     

    总结:主要记得

    1、重定向的 / 表示:http://服务器ip:端口/

    2、请求转发的 / 表示:http://服务器ip:端口/项目名

    怎么记忆呢,很简单,重定向是浏览器发来的,只知道发到某个服务器,但是不知道发到服务器的哪个project,所以需要自己用代码声明; 而请求转发是服务器某个project内部的转发,转来转去都是在某个project内部,所以不需要手动声明项目名。

     

    最新回复(0)