gpt4 book ai didi

java - Servlet 过滤器 : Search when no servlet mapping exists

转载 作者:行者123 更新时间:2023-12-02 09:07:29 24 4
gpt4 key购买 nike

我想在遇到 404 时运行搜索。例如,用户想要查看提供意大利美食的餐厅,他们会访问 www.mywebsite.com/italian,因此我不想显示自定义 404 错误页面,而是添加一个过滤器,首先检查 404 是否会出现抛出,如果是这样,尝试搜索搜索项列表,如果存在匹配,则将请求转发到该页面而不是抛出 404 错误。

示例:

www.mywebsite.com/italian  --> www.mywebsite.com/search.do?cuisine=italian
www.mywebsite.com/london --> www.mywebsite.com/search.do?city=london
www.mywebsite.com/rest --> www.mywebsite.com/show.do?rest_id=XXX

我猜的问题是如何确定是否不存在具有 url-mapping "/italian""/italian/的 servlet *” 在我的服务器配置中?

(在 Filter.doFilter 中)使用 request.getRequestDispatcher(request.getRequestURI()) 总是返回一个非空值,我无法使用该值来确定请求是否有效。我可以使用 404 错误语句,但结果的响应状态为 404 而不是 200。

最佳答案

您可以将 404 错误页面映射到 servlet URL 模式。

<servlet>
<servlet-name>errorServlet</servlet-name>
<servlet-class>com.example.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>errorServlet</servlet-name>
<url-pattern>/error</url-pattern>
</servlet-mapping>

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

这允许在显示所需的 JSP 之前在 servlet 中执行细粒度的业务和 HTTP 请求/响应控制作业。

关于java - Servlet 过滤器 : Search when no servlet mapping exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7810586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com