获取404找不到Tomcat的URL

时间:2013-06-11 20:53:29

标签: java servlets tomcat7

我想保存Tomcat中404找不到页面的URL或URI。更清楚的是,当我输入的页面未找到时,我自定义我的应用程序转到/home.xhtml,每当我进入一个未找到的页面时,tomcat会重定向到home.xhml,这没关系,但我仍然想要制作的URL发生这种情况,就像用户这样做:www.myapp.com/anotfoundpage,我希望Tomcat重定向到home.xhml 我想获取网址:www.myapp.com/anotfoundpage。

我可以用任何Tomcat类来获取该URL吗?

3 个答案:

答案 0 :(得分:3)

知道了,经过一些研究我明白我们需要使用request.getAttribut("javax.servlet.error.request_uri"),这个方法会返回url导致404错误。

所以我需要做的就是,例如声明一个servlet:NotFoundHandler,并为这个类设置一个url-pattern:NotFound,然后将它指定给tomcat 404错误:

<error-page>
<error-code>404</error-code>
<location>/NotFound</location>

然后,在我的servlet中,我只使用request.getAttribut(“javax.servlet.error.request_uri”)。

答案 1 :(得分:0)

根据您用于开发应用程序的框架,有很多方法可以做到这一点。假设您只使用普通的servlet,可以使用servlet过滤器或servlet来处理应用程序的所有无效路径,然后使用方法request.getRequestURI()找出用户输入的路径。

例如,您可以拥有类似的内容:

<web-app>
        <servlet>
             <servlet-name>MyRealServletOne</servlet-name>
             <servlet-path>foo.Servlet1</servlet-path>
        </servlet>
        <servlet-mapping>
             <servlet-name>MyRealServletOne</servlet-name>
             <url-pattern>/realPath</url-pattern>
        </servlet-mapping>

        <servlet>
             <servlet-name>InvalidPaths</servlet-name>
             <servlet-path>foo.InvalidServlet</servlet-path>
        </servlet>
        <servlet-mapping>
             <servlet-name>InvalidPaths</servlet-name>
             <url-pattern>/*</url-pattern>
        </servlet-mapping>    
</web-app>

因此,请在foo.InvalidServlet中填写404请求的代码,并确保向用户显示404错误。

希望有所帮助。

答案 2 :(得分:-1)

我使用以下内容。它位于我的WEB-INF / web.xml文件中,是<web-app>元素的子元素。

如果要将404引导到servlet或其他地方,可以通过修改<location>元素中的值来实现。

<!-- Catch 404 errors -->
<error-page>
    <error-code>404</error-code>
    <location>/404.jsp</location>
</error-page>

这不需要更改Tomcat配置,只需更改部署描述符(web.xml)。