2012-10-25 102 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