我正在尝试使用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="/"
不起作用?
答案 0 :(得分:0)
类级别使用的@RequestMapping
设置所有处理程序方法将解析的基本路径映射。
在你的例子中,那是
@RequestMapping("/main/courses")
在
等方法上指定其他@RequestMapping
时
@RequestMapping("/add")
作为路径元素添加。所以请求需要
/main/courses/add
如果您有其他类似的话
@RequestMapping("/")
然后添加一个新的路径元素,但元素本身为空。所以请求需要
/main/courses/
使用类似
的映射@RequestMapping("")
没有新的路径元素,它只是空的String
。所以请求需要
/main/courses