一、@RequestMapping注解的功能
- 从注解名称上我们可以看到,@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。
- SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。
二、@RequestMapping注解的位置
- @RequestMapping注解既可以标识在类上也可以标识在方法上
- @RequestMapping 标识一个类:设置映射请求的请求路径的初始信息
- @RequestMapping 标识一个方法:设置映射请求请求路径的具体信息
- 先访问初始信息 才能访问具体信息
案例:
首先,创建一个 web 模块并配置好web.xml和部署Tomcat
其次,在webapp/WEB-INF/templates/
下编写html文件:
- index.html:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"><!--这个是thymeleaf命名空间-->
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
这是index.html<br>
<!--使用了thymeleaf的语法,它就会自动给我们在/target前面添加上下文路径-->
<a th:href="@{/test/testRequestMapping}">跳转到target.html</a>
</body>
</html>
- target.html:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
这是target.html
</body>
</html>
然后,编写请求控制器controller代码:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
@RequestMapping("/")
public String testRequestMapping(){
return "index";
}
}
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/test")
public class MyController {
//此时请求映射所映射的请求的请求路径为:/test/testRequestMapping
@RequestMapping("/testRequestMapping")
public String testRequestMapping(){
return "target";
}
}
运行Tomcat:
假如有两个controller类,类上面都没有被@RequestMapping
注解,但它们都同时有一个@RequestMapping("/testRequestMapping")
注解的控制器方法,那么一运行就会报错。因为当浏览器访问到了localhost:8080/工程路径/testRequestMapping
的时候,向服务器发起请求,服务器不知道到底去找哪一个方法,因此我们就可以在两个controller类上面再加上不同value值的@RequestMapping
注解。
三、@RequestMapping注解的属性
(一)value属性
- @RequestMapping注解的value属性通过请求的请求地址匹配请求映射
- @RequestMapping注解的value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求
- @RequestMapping注解的其他属性可以不设置,但value属性必须设置
案例:
基于上例做了修改:
index.html:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"><!--这个是thymeleaf命名空间-->
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
这是index.html<br>
<a th:href="@{/testRequestMapping}">跳转到target.html</a><br>
<a th:href="@{/testRM}">跳转到target.html</a>
</body<