Tomcat6 response.sendRedirect()404错误

时间:2012-01-03 23:41:46

标签: java jsp http-status-code-404 tomcat6

我想知道是否有人遇到过我遇到的这个问题,如果有的话,是否可以为我提供解决方案。

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

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

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

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

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

我正在使用tomcat 6.0.33

4 个答案:

答案 0 :(得分:1)

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

您的home.jsp似乎只是一个普通的JSP文件,可以通过URL直接访问。所以,将放在/WEB-INF文件夹中。这种方式只能由http://localhost:8080/context/home.jsp提供。

至于你的具体要求,让index.jsp重定向到别的东西真的没意义。只需将<welcome-file>中的web.xml设置更改为home.jsp,而不是index.jsp

<welcome-file-list>
    <welcome-file>home.jsp</welcome-file>
</welcome-file-list>

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

哦,请注意.htm扩展名与.jsp扩展名不同。如有必要,也要相应地修复。

答案 1 :(得分:0)

如果你想重定向到&#39; home.jsp&#39;,你必须写&#39; home.jsp&#39; as sendRedirect参数。

答案 2 :(得分:0)

首先,要转到的初始页面由元素在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?

答案 3 :(得分:0)

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

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