Spring 4.0 MVC RequestMapping在类和方法级别

时间:2014-05-07 17:48:57

标签: java spring-mvc request restful-url

我是注释和探索事物的新手。在我的示例程序中......在Spring 4.0中使用注释的简单hello世界。

这是控制器文件代码我有两个带注释的RequestMapping条目,一个在类级别,另一个在方法级别:

package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/Hybrid")
public class HybridController {

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String getDemo(String name) {
        System.out.println("/MVC/Demo");
        return "helloworld" ;
    }

}

如果我只使用类级别@RequestMapping,它可以使用此URL连接到     ... / SpringRS /混合  或者只是使用方法级别进行连接     ... / SpringRS / test它完美运行并向我显示helloworld.jsp。

但是当我尝试将类和方法请求映射到一起并使用此url调用时:... / SpringRS / Hybrid / test,它不起作用。

有人可以解释我需要做些什么吗?。

查看解析器映射:

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

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

1 个答案:

答案 0 :(得分:0)

我认为在您的web.xml中,您将DispatcherServlet的url-pattern作为/ Hybrid,它完全映射到类级别的注释。如果您的请求是... / Hybrid,它将被DispatcherServlet选中,因为它是完全匹配。如果您的请求是针对... / Hybrid / test,则DispatcherServlet完全没有选择它。相反,如果你的url-pattern以像/ something / *这样的通配符结束,那么请求...... / something / Hybrid / test将首先被DispatcherServlet选中,然后移交给控制器进行解析。