Java Tomcat6响应。sendRedirect()404错误

Java Tomcat6响应。sendRedirect()404错误,java,jsp,http-status-code-404,tomcat6,Java,Jsp,Http Status Code 404,Tomcat6,我想知道是否有人经历过这个问题,如果有,他们是否能为我提供一个解决方案 我有一个“index.jsp”页面,它位于WEB-INF文件夹之外,由以下代码组成: <html> <body> <%response.sendRedirect("home.htm");%> </body> </html> 页面应该重定向到位于WEB-INF文件夹中的“home.jsp” 我遇到的问题是,当我使用Eclipse在tomc

我想知道是否有人经历过这个问题,如果有,他们是否能为我提供一个解决方案

我有一个“index.jsp”页面,它位于WEB-INF文件夹之外,由以下代码组成:

<html>
   <body>
      <%response.sendRedirect("home.htm");%>
   </body>
</html>

页面应该重定向到位于WEB-INF文件夹中的“home.jsp”

我遇到的问题是,当我使用Eclipse在tomcat中部署我的应用程序时,重定向工作正常

但是,当我在tomcat中通过在tomcat/bin文件夹中运行'startup.sh'启动应用程序时,我得到了一个'HTTP Status 404'错误


我正在使用tomcat 6.0.33

如果要重定向到“home.jsp”,必须将“home.jsp”作为sendRedirect参数来编写。

首先,要转到的初始页面由元素在web.xml文件中控制。在独立的Tomcat中,默认为/index.html,然后是/index.htm,最后是/index.jsp

这可能是因为当您从Eclipse中启动tomcat时,web插件使用默认的web.xml做自己的事情,因此默认值可能略有不同

其次,如果您只想将index.jsp重定向到home.htm,那么不应该用HTML标记来包装scriptlet。如果tomcat决定在执行scriptlet之前刷新输出,sendRedirect()方法将被忽略,因为HTTP头已经被写入


最后,我假设您在web应用程序中设置了某种映射,用于处理“home.htm”请求并转发到home.jsp?

sendRedirect
的参数为
home.htm
时,您为什么希望它重定向到
home.jsp
?有打字错误吗?如果文件实际上位于
WEB-INF
下,浏览器将无法访问该文件。向全世界公开
WEB-INF
的内容将打开许多潜在的安全漏洞。如果希望
home.jsp
包含
WEB-INF/home.htm
的内容,则需要执行以下操作:

<jsp:include page="/WEB-INF/home.htm" />


/WEB-INF
文件夹中的文件不可公开访问。该文件夹用于webbrowser不应该直接访问的资源,例如JSP包含文件、需要预处理(前端控制器)的JSP文件等

您的
home.jsp
似乎只是一个普通的jsp文件,打算通过URL直接访问。所以,把它放在
/WEB-INF
文件夹之外。这样的话,你就可以买到

至于您的具体需求,让
index.jsp
重定向到其他内容是毫无意义的。只需将
web.xml
中的
设置更改为
home.jsp
,而不是
index.jsp


home.jsp
这样,当最终用户直接访问文件夹而不指定任何资源文件时,将打开
home.jsp

哦,请注意,
.htm
扩展与
.jsp
扩展不同。如有必要,也要相应地解决这个问题