我是注释和探索事物的新手。在我的示例程序中......在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>
答案 0 :(得分:0)
我认为在您的web.xml中,您将DispatcherServlet的url-pattern作为/ Hybrid,它完全映射到类级别的注释。如果您的请求是... / Hybrid,它将被DispatcherServlet选中,因为它是完全匹配。如果您的请求是针对... / Hybrid / test,则DispatcherServlet完全没有选择它。相反,如果你的url-pattern以像/ something / *这样的通配符结束,那么请求...... / something / Hybrid / test将首先被DispatcherServlet选中,然后移交给控制器进行解析。