1.创建一个Maven程序的步骤
①在pom.xml导入maven依赖
war
org.springframework
spring-webmvc
5.3.1
ch.qos.logback
logback-classic
1.2.3
javax.servlet
javax.servlet-api
3.1.0
provided
org.thymeleaf
thymeleaf-spring5
3.0.12.RELEASE
②在main包下创建webapp,并把xml导入
③配置web.xml,前端控制器
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springMVC.xml
1
SpringMVC
/
④配置springMVC.xml
扫描组件—视图解析器
1.@RequestMapping注解的功能
作用是将请求和处理请求的控制方法关联起来,建立映射关系
SpringMVC接收到指定请求,就会找到映射关系中对应的控制器方法来处理这个请求
2.多个控制器下的@RequestMapping的value值一样,会报错
报错结果
/方法已经被映射了,所以@RequestMapping的value值要唯一
3. @RequestMapping注解的位置
此时请求映射的请求路径为:/test/ target
@Controller
@RequestMapping("/test")
public class RequestMappingController {
@RequestMapping("/target")
public String target (){
//返回视图名称--通过视图解析器解析
return "target";
}
}
4. @RequestMapping注解的value属性
访问的http://localhost:8080/SpringMVCTest/t2(t1)时候都是跳转target.html
5. @RequestMapping注解的method属性
get请求:在地址栏上,请求参数会显示上面。采用?拼接。数据量有限
Post请求:请求参数不会在地址栏上,会放在请求体中。
①当控制器不指定@RequestMapping注解的method属性时
②不管是post请求还是get请求都能访问
③当@RequestMapping注解加上method属性时
④此时访问只能是get请求,如果是post进行请求出现405
6. @RequestMapping注解结合请求方式的派生注解
①:对于处理指定请求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解
处理get请求的映射–>@GetMapping
处理post请求的映射–>@PostMapping
处理put请求的映射–>@PutMapping
处理delete请求的映射–>@DeleteMapping
②常用的请求方式有get,post,put,delete
③但是目前浏览器只支持get和post,若在form表单提交时,为method设置了其他请求方式的字符串(put或delete),则按照默认的请求方式get处理
④若要发送put和delete请求,则需要通过spring提供的过滤器HiddenHttpMethodFilter,在RESTful部分会讲到
7. @RequestMapping注解的params属性(了解)
①index.html
访问目标页面target.html
②控制器
@RequestMapping(value = "/target",params = {"username=admin","password=123456"})
public String ToTarget(){
return "target";
}
8.@RequestMapping注解的headers属性(了解)
①:@RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射
②:@RequestMapping注解的headers属性是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系
9. SpringMVC支持ant风格的路径
①?:表示任意的单个字符
http://localhost:8080/SpringMVCTest/a?a/testAnt ?任意的单个字符
@RequestMapping("/a?a/testAnt")
public String testAnt(){
return "target";
}
② *:表示任意的0个或多个字符
http://localhost:8080/SpringMVCTest/a*a/testAnt
@RequestMapping("/a*a/testAnt")
public String testAnt(){
return "target";
}
③**:表示任意的一层或多层目录
注意:在使用**时,只能使用**/**/xxx的方式
@RequestMapping("/**/testAnt")
public String testAnt(){
return "target";
}
10.SpringMVC支持路径中的占位符(重点)
浏览器输入http://localhost:8080/SpringMVCTest/testAnt/6/zhilei
输出:id=6,username=zhilei