2012-01-03 157 views
0

我想知道是否有人遇到過我遇到過的問題,如果有的話,他們是否可以爲我提供解決方案。Tomcat6 response.sendRedirect()404錯誤

我有一個「的index.jsp」網頁,其中坐在WEB-INF文件夾外,由以下代碼:

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

的頁面應該重定向到「針對home.jsp」它坐落在WEB內-INF文件夾。

我遇到的問題是,當我使用Eclipse在tomcat中部署應用程序時,重定向工作正常!

但是,當我通過在tomcat/bin文件夾中運行'startup.sh'在tomcat啓動我的應用程序時,出現'HTTP Status 404'錯誤。

我使用Tomcat 6.0.33

回答

0

如果你想重定向到「回到Home.jsp」,你必須寫「回到Home.jsp」作爲參數的sendRedirect。

0

首先,要去的初始頁面由元素控制在web.xml文件中。在獨立的Tomcat中,默認爲/index.html,然後是/index.htm,最後是/index.jsp。

這可能是因爲當你從Eclipse內部啓動tomcat時,web插件使用默認的web.xml來做它自己的事情,所以默認值可能會略有不同。其次,如果你只是想讓index.jsp重定向到home.htm,你就不應該用script標籤包裝scriptlet。如果tomcat決定在執行scriptlet之前刷新輸出,sendRedirect()方法將被忽略,因爲HTTP頭文件已被寫入。

最後,我假設你在你的web應用程序中設置了一些處理'home.htm'請求並轉發到home.jsp的映射?

0

sendRedirect的參數爲home.htm時,您爲什麼要重定向到home.jsp?有錯字嗎?如果該文件實際上在WEB-INF之下,則瀏覽器將無法訪問該文件。向世界展示WEB-INF的內容將會帶來無數潛在的安全漏洞。你需要做到以下幾點,如果你想home.jsp到包括WEB-INF/home.htm內容:

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

文件中/WEB-INF文件夾不publicitly訪問。該文件夾用於不應該被web瀏覽器直接訪問的資源,例如JSP包含文件,需要預處理(前端控制器)servlet等等的JSP文件。

您的home.jsp似乎只是一個普通的JSP文件,它可以通過URL直接訪問。所以,把它/WEB-INF文件夾。這種方式只能通過http://localhost:8080/context/home.jsp

至於你的具體要求,讓index.jsp重定向到別的東西是沒有意義的。只需將中的<welcome-file>設置更改爲home.jsp而不是index.jsp即可。

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

這樣的home.jsp將被打開,當終端用戶訪問http://localhost:8080/context文件夾直接不指定任何資源文件。

哦,請注意.htm的擴展名與.jsp的擴展名不一樣。如有必要,也相應地修復此問題。