找不到带URI的HTTP请求的映射[/ FitnessTracker /]

时间:2017-02-26 03:49:24

标签: spring spring-mvc

我在springmvc收到警告 as在具有名称'fitTrackerServlet'的DispatcherServlet中找不到具有URI [/ FitnessTracker /]的HTTP请求的映射

INFO: FrameworkServlet 'fitTrackerServlet': initialization completed in 2194 ms
Feb 26, 2017 9:43:08 AM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/FitnessTracker/] in DispatcherServlet with name 'fitTrackerServlet'

当我按下网址http://localhost:8080/fitnessTracker/时,我收到404错误。 感谢

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <servlet>
    <servlet-name>fitTrackerServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/config/servlet-config.xml</param-value>
    </init-param>
  </servlet>
 <servlet-mapping>
   <servlet-name>fitTrackerServlet</servlet-name>
   <url-pattern>/*</url-pattern>
</servlet-mapping>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

和我的servlet-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

  <mvc:annotation-driven />
  <context:component-scan base-package="com.pluralsight.controller"></context:component-scan>

  <!--
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
  </bean>
  -->

  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
  p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>

</beans>

和我的控制器

@Controller
public class HelloController {

    @RequestMapping(value = "/greeting")
    public String sayHello (Model model) {
        System.out.println("Test");

        model.addAttribute("greeting", "Hello WorldX");
        return "hello"; 
    }
}

3 个答案:

答案 0 :(得分:0)

您的组件扫描基础包是否与HelloController所在的包匹配?如果没有,那就是问题。

  <context:component-scan base-package="com.pluralsight.controller"></context:component-scan>
  

配置组件扫描指令以与@Configuration一起使用   类。 basePackageClasses()或者   可以指定basePackages()(或其别名value())来定义   要扫描的特定包。

Spring找不到您的HelloController,因此不会映射任何内容。

否则您也可以按照these步骤进行操作。

答案 1 :(得分:0)

我想知道您为什么要使用XML配置应用程序。使用this工具,您可以使用Spring启动应用程序启动maven项目,默认情况下,该应用程序已经配置为完全构建您想要的内容。

然后你只需要一个类:

@RestController
@RequestMapping("/fitnessTracker")
public class HelloController {

    @RequestMapping(value = "/greeting")
    public String sayHello (Model model) {
        System.out.println("Test");

        model.addAttribute("greeting", "Hello WorldX");
        return "hello"; 
    }
}

就是这样,Spring会为你做其余的事情;)

答案 2 :(得分:0)

在我的情况下,问题是我正在使用此url模式

<url-pattern>/*</url-pattern>

代替此

<url-pattern>/</url-pattern>

我也必须添加

@RequestMapping(value = "/fitnessTracker")

@Controller

注释。

我在https://www.baeldung.com/spring-mvc-404-error找到了该模式的解决方案。