处理程序方法与Spring 3.2.6的映射

时间:2014-03-05 01:28:59

标签: spring-mvc controller mapping

我正在尝试使用Spring MVC框架学习Web应用程序开发,我并不完全清楚控制器映射是如何工作的。如果我首先显示我的配置和代码然后解释我不理解的内容会更好。

这是我的web.xml中的映射:

<servlet>
  <servlet-name>spring</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>spring</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>
在我的控制器类中进行

映射:

@Controller
@RequestMapping("/main/courses")
public class CourseController {
...

并在此控制器中映射相关方法:

@RequestMapping(value="", method = RequestMethod.GET)
    public String getCourses(Model model) {     
...

如您所见,value属性设置为空引号,这是此映射的唯一工作方式。如果我将value属性更改为"/",则会收到404错误。我在此控制器中有其他映射可以正常工作,例如value="/add"。唯一的问题是当我尝试映射到此控制器的根目录时。

value=""是否为有效值?为什么value="/"不起作用?

1 个答案:

答案 0 :(得分:0)

类级别使用的@RequestMapping设置所有处理程序方法将解析的基本路径映射。

在你的例子中,那是

@RequestMapping("/main/courses")

等方法上指定其他@RequestMapping
@RequestMapping("/add")

作为路径元素添加。所以请求需要

/main/courses/add

如果您有其他类似的话

@RequestMapping("/")

然后添加一个新的路径元素,但元素本身为空。所以请求需要

/main/courses/

使用类似

的映射
@RequestMapping("")

没有新的路径元素,它只是空的String。所以请求需要

/main/courses