Java sendRedirect(test.jsp)和sendRedirect(/test.jsp)之间的区别
我想注意重定向中使用的Java sendRedirect(test.jsp)和sendRedirect(/test.jsp)之间的区别,java,jsp,url,redirect,servlets,Java,Jsp,Url,Redirect,Servlets,我想注意重定向中使用的/ 开头的正斜杠表示“相对于此web的根” 容器头优先JSP和servlet 我以为我理解它,直到我尝试了它。我将用超级简单的代码进行演示: 以index.html开头: <html><body> <form action="GenericServlet" method="POST"> Enter name: <input type="text" n
/
开头的正斜杠表示“相对于此web的根”
容器头优先JSP和servlet
我以为我理解它,直到我尝试了它。我将用超级简单的代码进行演示:
以index.html开头:
<html><body>
<form action="GenericServlet" method="POST">
Enter name: <input type="text" name="name">
<button>Submit name</button>
</form>
</body></html>
,它将重定向到test.jsp:
<html><body>
hellooooo
</body></html>
你好
运行它之后,我会收到helloo
消息。但一旦我将重定向改为/test.jsp
而不是test.jsp
,我会收到找不到错误
我还注意到,当我使用重定向(test.jsp)时,我得到了这个http://localhost:8080/testProject/index.html
但是,当我使用redirect(/test.jsp)时,我得到了这样的结果:http://localhost:8080/test.jsp
如果海德首先告诉我
/
代表root
,为什么我没有得到与第一种情况相同的URL?root=testProject,对吗?有人能看出我说错了什么吗?root=testProject?不
根路径是没有任何路径的域部分,即http://localhost:8080在您的上下文中
例如,假设当前请求url为
http://localhost:8080/a/b
,如果调用resp.sendRedirect(“c”);
,则下一个请求url是http://localhost:8080/a/c
。如果调用响应发送重定向(“/c”);
,下一个请求url将是http://localhost:8080/c
我猜您指的是在以下位置描述的示例:。据我所知,容器是处理您的应用程序的应用程序。在本例中,它是一个服务器,所以“相对于此web容器的根”很可能意味着“相对于服务器地址”“在您的情况下,这是http://localhost:8080
。链接文章的结果似乎证实了这一点(注意,结果URL中的/foo/stuff.html
之前没有/myApp
)。
<html><body>
hellooooo
</body></html>