gpt4 book ai didi

java - Servlet 不执行 response.sendRedirect(addressPath); , 但确实执行没有路径的 response.sendRedirect()

转载 作者:行者123 更新时间:2023-11-28 22:35:37 25 4
gpt4 key购买 nike

考虑以下层次结构:

enter image description here

当我像这样发送重定向时:

    response.sendRedirect("error404.jsp");    // no path here !!!

我到达页面 error404.jsp

但是当我使用路径时:

    String addressPath = "/WEB-INF/results/admin/adminPage.jsp";
response.sendRedirect(addressPath); // with path !!!

我得到 404:

HTTP Status 404 -

type Status report

message

description The requested resource is not available.

Apache Tomcat/7.0.50

我在这里做错了什么?

非常感谢!

最佳答案

参见 javadoc

This method can accept relative URLs;the servlet container must convert the relative URL to an absolute URL before sending the response to the client. If the location is relative without a leading '/' the container interprets it as relative to the current request URI. If the location is relative with a leading '/' the container interprets it as relative to the servlet container root. If the location is relative with two leading '/' the container interprets it as a network-path reference (see RFC 3986: Uniform Resource Identifier (URI): Generic Syntax, section 4.2 "Relative Reference").

请注意,参数不是 servlet 上下文中的路径,就像 RequestDispatcher 会使用的那样,它作为 302 响应的 Location header 中使用的 URL。

所以这个

String addressPath = "/WEB-INF/results/admin/adminPage.jsp";
response.sendRedirect(addressPath); // with path !!!

将转换为带有 header 的 302 响应

Location: http://whateverhost.com/WEB-INF/results/admin/adminPage.jsp

你没有处理程序,所以 404。

另一方面,这

response.sendRedirect("error404.jsp");    // no path here !!!

成为

Location: http://whateverhost.com/context-path/error404.jsp

由于 error404.jspWEB-INF 之外,它是可访问的,因此由 JSP servlet 呈现并作为响应返回。

关于java - Servlet 不执行 response.sendRedirect(addressPath); , 但确实执行没有路径的 response.sendRedirect(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22950016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com