我想保存Tomcat中404找不到页面的URL或URI。更清楚的是,当我输入的页面未找到时,我自定义我的应用程序转到/home.xhtml
,每当我进入一个未找到的页面时,tomcat会重定向到home.xhml
,这没关系,但我仍然想要制作的URL发生这种情况,就像用户这样做:www.myapp.com/anotfoundpage,我希望Tomcat重定向到home.xhml
和我想获取网址:www.myapp.com/anotfoundpage。
我可以用任何Tomcat类来获取该URL吗?
答案 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)。