gpt4 book ai didi

java - 如何忽略 Spring RequestMapping 中的特定 URI 模式?

转载 作者:行者123 更新时间:2023-11-30 07:12:31 26 4
gpt4 key购买 nike

我的 spring Controller 应该接受任何 URI 类型的任何 get 请求,除了以 /resources/* 开头的 URI,因为这是调用,如果我没记错的话,由 spring 容器完成加载查看页面中的所有静态内容。

当前配置是这样的

@RequestMapping(method = RequestMethod.GET, value="/*")

对于带有 URI //example 的请求工作正常,但如果有人在 URI 中输入错误,例如。 /example/random/char 它抛出异常跟踪页面未找到(404),这非常明显,导致我做出 value="/**"

@RequestMapping(method = RequestMethod.GET, value="/**")

然后,带有 URI //example 的请求无法加载我的静态内容 .js、.css 或 .png 文件我的查看页面。这让我得出这样的结论:spring 在内部进行 get 调用,以 URL 模式加载这些文件,例如: http://localhost:8080/resources/my.jpg

注意:-我故意通过配置 tomcat 删除了我的项目名称。

更新好的@dimitrisli 评论让我意识到我需要详细说明我的项目。

它基本上是一个 URL 重定向组件。用户只需通过 get 请求调用我的应用程序,然后重定向到实际页面。

例如,用户请求我在浏览器中输入 URL,例如 http://localhost:8080/sample。现在我的应用程序需要拆分 URL 以获取字符串 sample 并在 db 中搜索针对它的实际 URL(因此 sample 是非常长的 URL 的别名) 。如果 URL 存在,它将重定向到实际页面,否则将显示页面不存在消息。

最佳答案

(根据评论更新)

这是处理 404 错误的方法。

选项 1

web.xml 中包含以下内容以在主页上转发:

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

或您的自定义错误特定页面:

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

选项 2

在 Controller 层定义一个包罗万象的错误处理程序:

@ExceptionHandler(Exception.class)
public String handleAllExceptions(Exception e) {
log.error("There was an exception thrown! ", e);
return "index";
}
<小时/>

根据您要排除的文件夹(资源)的名称和您的描述 (.js/.css/.png),我假设您指的是 Web 项目的静态内容。

您需要在dispatcher servlet xml中显式定义静态内容,如下所示(遵循项目的静态数据目录约定):

<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:resources mapping="/css/**" location="/resources/css/" />
<mvc:resources mapping="/images/**" location="/resources/images/" />
<mvc:resources mapping="/js/**" location="/resources/js/" />
<mvc:resources mapping="/fonts/**" location="/resources/fonts/" />

关于java - 如何忽略 Spring RequestMapping 中的特定 URI 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38989710/

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