没有为Get请求调用Spring 3 @Controller

时间:2011-12-20 00:09:16

标签: spring spring-mvc

我正在尝试在我的Web应用程序中使用Spring 3'MVC支持带注释的控制器。

在我的application-context.xml中,我添加了以下内容:

<mvc:annotation-driven />
<context:component-scan base-package="com.abc.def.etc"/>
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    <property name="order" value="1" />
</bean>

我的控制器注释如下:

@Controller
@RequestMapping("/optimizerRules")
public class OptimizerRulesController {
private OptimizerRulesService optimizerRulesService;
private static final Log LOG = LogFactory.getLog(OptimizerRulesController.class);

public OptimizerRulesController()
{
    LOG.info("Initializing OptimizerRulesController");
}

@RequestMapping(method = RequestMethod.GET)
public ModelAndView getRuleAttributesAndRules(ModelMap model)
{
    LOG.info("Entering getRuleAttributesAndRules method");
    }

当我启动我的应用程序时,我可以在我的日志中看到OptimizerRulesController已经初始化。我还可以看到以下内容:

Creating instance of bean 'optimizerRulesController'
Initializing OptimizerRulesController
Mapped URL path [/optimizerRules] onto handler 'optimizerRulesController'

但是,当我使用http://localhost:8080/appName/optimizerRules调用我的应用程序时,出现404错误! 我在这里缺少什么配置?

由于

1 个答案:

答案 0 :(得分:1)

Spring MVC通常会记录在WARN级别找不到特定请求的映射。假设您没有在日志中看到这一点并假设已启用WARN,并且由于您没有看到自己的日志语句,听起来您的请求甚至没有达到Spring MVC DispatcherServlet,这可能意味着URL是错。

网址应为http://server:port/war/dispatcherServletMapping/optimizerRules,因此如果我的假设有效,您的web.xml应告诉您缺少的路径组件。