【问题标题】:Handle Unknown Requests处理未知请求
【发布时间】:2013-05-08 06:13:14
【问题描述】:

由于 Spring MVC 3 通过注解处理请求。 @RequestMapping(value = "/welcome")

我的申请网址是https://localhost:9452/clientapp/welcome.htm

此 URL 打开欢迎页面。

我的 web.xml 是:

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.htm</url-pattern>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

如何在没有welcome.htm 的情况下处理/捕获此请求。

https://localhost:9452/clientapp/

我试过用这个但是没用

@RequestMapping(value = { "/*.htm", "/**/*.htm", "/*", "/**/*" })

【问题讨论】:

    标签: java spring-mvc request


    【解决方案1】:

    其中一个原因是您将 spring 调度程序 servlet 设置为仅处理 servlet 映射中的“.htm”和“.do”。

    Spring MVC 在 servlet api 之上工作,并使 Spring 控制器向某些 url 提供请求,这些请求首先应由调度程序 servlet 提供。

    尝试使用:

    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    在您的 web.xml 中

    【讨论】:

    • 这会停止加载我的资源,如图像和 css 文件。
    • 嗯,这可能是因为您没有完全配置您的调度程序 servlet 上下文。由于调度程序 servlet 将处理所有请求,因此您需要告诉它在哪里寻找资源。请在此处查看 Ralph 的回答:stackoverflow.com/questions/8195213/…,例如如何执行此操作。
    • 我不确定调度程序 servlet 是否允许从 WEB-INF 加载资源,因此,为了测试概念,我建议您执行以下操作:(1) 验证您的图像是在 "{appname.war}/images/imagename.png" 中,(2) 将 "" 添加到您的调度程序 servlet 上下文中,(3)运行你的战争并尝试使用 http://{host}/{appname}/resources/imagename.png 之类的 url 获取它。如果这行得通 - 你应该有一个起点来按照你想要的方式改进你的配置。
    • 我这样做了,但出错了。 '在名称为'spring'的 DispatcherServlet 中找不到带有 URI [/clientapp/login.htm] 的 HTTP 请求的映射'
    • 我的资源在层次结构的 WebContent 文件夹下,带有 WEB-INF 文件夹。
    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多