无法使映射工作

时间:2011-07-07 19:37:58

标签: java spring spring-mvc

我正在使用Spring 3.0.5。我的注释控制器都没有被识别。我的应用程序有XML ...

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

<mvc:resources mapping="/static/**" location="/static/"/> 
<mvc:annotation-driven/>
<context:component-scan base-package="com.myco.systems.leadsmonitor"/>

我的静态资产得到了很好的回报。但是当我尝试到达带注释的控制器时,我得到了404 ...

package com.myco.systems.leadsmonitor.web.controller;

@Controller
public class HomeController {

    …

    @RequestMapping("/")
    public void index(Model model) {
        model.addAttribute("latestLeadTime", MonitorStatistics.getInstance().getLatestLeadCreationTime());
        model.addAttribute("lastDBCheck", MonitorStatistics.getInstance().getLastDBCheck());
    }

我需要做些什么才能让我的控制器被Spring接收?谢谢, - 戴夫

2 个答案:

答案 0 :(得分:0)

我认为您获得404的原因是因为视图未在控制器方法中得到解决。默认情况下,void返回类型使用基于URI的视图名称映射,在您的情况下,因为路径是“/”,它可能会被解析为“”,而不会映射到任何逻辑视图。

你能尝试几件事吗?

  1. 以调试模式启动,查看您的请求是否实际进入RequestMapping方法
  2. 如果是,您是否可以从方法中显式返回视图名称,并查看此视图​​名称是否已解析为正确的视图(假设您已注册视图解析程序)

答案 1 :(得分:0)

您应该检查web.xml中的两个URL映射,并在spring配置中查看解析配置。

一个很好的资源是Spring By Example.org

请参阅:http://www.springbyexample.org/examples/simple-spring-mvc-form-annotation-config-webapp.html

另一个是SpringSource ToolSuite(STS)中提供的教程,他们将指导您创建Spring MVC Web应用程序。这些教程通常包括来自tuckey.org的UrlRewriteFilter

e.g。 servlet映射到/ app,然后添加此servlet过滤器

<!-- Enables clean URLs with JSP views e.g. /welcome instead of /app/welcome -->
<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<!--        <init-param>-->
<!--            <param-name>logLevel</param-name>-->
<!--            <param-value>DEBUG</param-value>-->
<!--        </init-param>-->

</filter>