2012-10-25 131 views
0

我有一個servlet處理匹配模式(* .sth)的請求。現在我想拋出一個404,如果URL被調用,它匹配模式但不應該被調用。我通過在HttpServletResponse上設置狀態來做到這一點。 在web.xml中配置了404s的自定義錯誤頁面。如果tomcat本身拋出一個404錯誤頁面,而不是使用我的servlet,則會打開此錯誤頁面。當然,我可以直接調用該頁面,但我對更通用的方式感興趣,因爲該servlet也用於其他Web應用程序。有沒有辦法讓配置的錯誤頁面能夠重定向到它們或告訴Web容器使用它們?重定向到配置錯誤頁面

的web.xml片段:

<servlet> 
    <display-name>Controller</display-name> 
    <servlet-name>Controller</servlet-name> 
    <servlet-class>com.example.Controller</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Controller</servlet-name> 
    <url-pattern >*.do</url-pattern> 
</servlet-mapping> 

<error-page> 
    <error-code>404</error-code> 
    <location> 
     /error.do 
    </location> 
</error-page> 

設置狀態:

response.setStatus(HttpServletResponse.SC_NOT_FOUND); 
+1

你可以添加一些代碼 –

+1

你打電話給setStatus或sendError? – home

+0

sendError聽起來很有希望! :) – Patrick

回答

0

'家'給出了正確的線索。使用sendError()而不是setStatus()做我想要的。謝謝!

1

我覺得

<error-page> 
    <error-code>404</error-code> 
    <location>/error.do</location> 
</error-page> 

應在Tomcat中的web.xml inside conf文件夾中。

+0

是的,它是在正確的地方。 – Patrick