【问题标题】:Spring MVC: WARNING: No mapping found for HTTP request with URISpring MVC:警告:找不到带有 URI 的 HTTP 请求的映射
【发布时间】:2017-04-24 23:34:35
【问题描述】:

我的 Spring Web 模型-视图-控制器 (MVC) 框架中有这个类。 Spring Web 模型-视图-控制器 (MVC) 框架的版本是 3.2.8。

我有这个 web.xml 文件。

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

                <url-pattern>/newdesign/manage/manageapplications</url-pattern>    
                <url-pattern>/newdesign/manage/manageapplications/</url-pattern>
                <url-pattern>/newdesign/manage/manageapplications/*</url-pattern>

                <url-pattern>/newdesign/manage/home</url-pattern>    
                <url-pattern>/newdesign/manage/home/</url-pattern>
                <url-pattern>/newdesign/manage/home/*</url-pattern>

                <!-- Explicitly mention /welcome.do for usage as welcome page -->
                <url-pattern>/welcome/welcome.do</url-pattern>
        </servlet-mapping>
...

还有这个控制器:

/** 
     * 
     */
    @RequestMapping(value = { "/newdesign/manage/home", 
                              "/newdesign/manage/home/",
                              "/newdesign/manage/manageapplications", 
                              "/newdesign/manage/manageapplications/"}, method = {RequestMethod.GET})
    public String manageApplications    (@ModelAttribute("aplicationListForm") final AplicationListForm aplicationListForm,
                                         HttpServletRequest request,
                                         Model model ) throws ExecutionException {


        User sessionUser = (User)request.getSession().getAttribute(Const.SESSION_USER);
        ..
}

此网址正常工作

/newdesign/manage/manageapplications

但是有了这个newdesign/manage/home

我收到了这个错误

WARNING: No mapping found for HTTP request with URI [/devices/newdesign/manage/home]

我真的要疯了!

我也尝试将它放在另一个方法中,结果相同

@RequestMapping(value = { "/newdesign/manage/home", 
                              "/newdesign/manage/home/"}, method = {RequestMethod.GET})
    public String cbHome    (Model model ) throws ExecutionException {
    ..
}

此网址有效 http://127.0.0.1:7001/devices/newdesign/manage/manageapplications 不是这个(?!) http://127.0.0.1:7001/devices/newdesign/manage/home

【问题讨论】:

  • devices 你是应用上下文吗?
  • 您不应该将您的 servlet 映射到控制器的 url。默认情况下,映射在调度程序 servlet 的映射内完成。在 /newdesign/manage/home 旁边已经暗示了 /newdesign/manage/home/。您应该将您的 servlet 映射到 //* 以使其工作或配置您的请求映射以使用完整的 url 而不是最后一部分。
  • 什么意思?从 web.xml 中删除它?
  • @AmadeuCabanilles,您确定请求此 /newdesign/manage/home 的表单嵌入了扩展程序吗?喜欢&lt;form action="/newdesign/manage/home.do" method="..."&gt;

标签: java spring spring-mvc


【解决方案1】:

您的配置不起作用,因为在您的 web.xml 中,您已将应用程序限制为只能使用这些 url:

<url-pattern>/newdesign/manage/manageapplications</url-pattern>    
<url-pattern>/newdesign/manage/manageapplications/</url-pattern>
<url-pattern>/newdesign/manage/manageapplications/*</url-pattern>

这是一个典型的 web.xml:

<servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
</servlet>


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

通过这个配置,你告诉 Spring 使用dispatcher servlet 机制来处理传入的请求和视图渲染。这样他就可以处理你在控制器中定义的所有url,比如/newdesign/manage/home

您需要创建dispatcher-servlet.xml 文件,您将在其中配置调度程序。

查看此链接了解更多详细信息:http://www.mkyong.com/spring-mvc/spring-mvc-hello-world-example/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 2013-07-27
    相关资源
    最近更新 更多