【问题标题】:No mapping found error Spring MVC找不到映射错误 Spring MVC
【发布时间】:2014-01-01 14:47:12
【问题描述】:

我制作了一个非常简单的 Spring MVC 应用程序来学习 AOP,但每次我尝试导航任何应用程序页面时,我都会收到(未找到映射)错误如下:

No mapping found for HTTP request with URI [/TestAOP/page1.htm] in DispatcherServlet with name 'appServlet'

我已经检查了 web.xml、servlet-context.xml、控制器代码,但没有发现任何错误。因此,如果有人可以查看我的 web.xml、servlet-context.xml 和控制器的内容并让我知道我在这里缺少什么以及如何克服这个错误,我将非常感激。感谢您的宝贵时间

  1. Web.xml

      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/root-context.xml</param-value>
      </context-param>
    
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    
      <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>              
      <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
  2. servlet-context.xml

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

  <aop:aspectj-autoproxy/>

  <resources mapping="/resources/**" location="/resources/" />

  <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
  </beans:bean>
  1. 控制器

    @Controller
    public class HomeController {
    
    @RequestMapping(value = "/page1", method = RequestMethod.GET)
    public String firstPage(HttpServletRequest request,Locale locale, Model model) {        
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);   
        String formattedDate = dateFormat.format(date); 
        model.addAttribute("serverTime", formattedDate );
        return "page01";
    }
    }
    
  2. 根上下文.xml 主要是空的

注意:page01.jsp 在 /WEB-INF/views/ 文件夹下

【问题讨论】:

    标签: java spring jsp spring-mvc


    【解决方案1】:

    我建议仔细检查控制器是否由 spring 实例化。最简单的方法是使用 sysout("我的控制器已被实例化!!!") 或其他任何内容创建一个空的构造函数,然后让我们看看这条线是否在 catalina.out 中。看看有没有

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

    这是您的控制器的正确包。如果你的控制器没有被 spring 实例化,那么还要仔细检查 spring 配置路径等。

    【讨论】:

    • 你是冠军!非常感谢 :) :) 问题出在 Spring 配置路径中。请问最后一个问题,您能否提供代码示例,说明在何处放置代码以测试 Controller 类初始化?那么如果下次由于控制器初始化问题而发生呢?
    • @Controller public class HomeController { public HomeController(){ System.out.println("!!!!") } } 只需创建一个带有一些输出的默认构造函数,让我们看看 spring 是否实例化你的豆与否。您可以在调试模式下启动服务器,然后在其中添加一个调试点或其他任何东西。关键是看是否调用了默认构造函数。
    • 再次感谢您的帮助:)
    【解决方案2】:

    尝试从 URL 中删除 .htm。即:http://[server][:port]/TestAOP/page1。

    这应该与您的控制器上的映射相匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 2013-12-20
      • 1970-01-01
      相关资源
      最近更新 更多