目录
@RequestMapping
这个注解既是类注解也是方法注解
实现路由映射
这个注解主要来实现URL路由映射,也就是浏览器连接程序的作用。
url的组成:http://IP:端口号/类注解/方法注解
java
@RestController
public class LoginController {
@RequestMapping("/fun1")
public String fun1() {
return "hahaha";
}
}

java
@RequestMapping("/test")
@RestController
public class LoginController {
@RequestMapping("/fun1")// "/"可写可不写
public String fun1() {
return "hahaha";
}
}

限制请求方式
java
@RequestMapping("/test")
@RestController
public class LoginController {
@RequestMapping(value = "/fun1", method = RequestMethod.GET)// 只接收GET请求
public String fun1() {
return "hahaha";
}
}

@PathVariable
从url中获取变量的值
java
@RequestMapping("/fun2/{name}")
public String fun2(@PathVariable String name) {
return "name:"+name;
}


更改绑定参数的名字

此时形参username的名字就可以随意更改了。
@RequestParam
可以传递集合
如果不加 @RequestParam注释Spring会默认将前端传的集合转换成数组。
java
@RequestMapping("/fun3")
public List<String> fun3(@RequestParam List<String> list) {
return list;
}

java
@RequestMapping("/fun3")
public List<String> fun3(List<String> list) {
return list;
}

更改绑定参数的名字
java
@RequestMapping("/fun3")
public List<String> fun3(@RequestParam("list") List<String> a) {
return a;
}
此时形参username的名字就可以随意更改了。
可修改是否为必传参数
被@RequestParam修饰的参数默认为必传参数。
java
@RequestMapping("/fun3")
public List<String> fun3(@RequestParam(value = "list", required = false) List<String> a) {
return a;
}
此时如果不传参数就不会报错。

@RequestBody
获取请求正文的内容
java
@RequestMapping("/fun4")
public String fun4(@RequestBody User user){
return user.toString();
}

可修改是否为必传参数
被@RequestBody修饰的参数默认为必传参数。
将其设置为非必传参数:
java
@RequestMapping("/fun4")
public String fun4(@RequestBody(required = false) User user){
return user.toString();
}
@RequestPart
可以支持上传文件
java
@RequestMapping("/fun5")
public String fun5(@RequestPart MultipartFile file){
return file.getOriginalFilename();//返回文件名
}

更改绑定参数的名字
java
@RequestMapping("/fun5")
public String fun5(@RequestPart("file") MultipartFile a){
return a.getOriginalFilename();
}

可修改是否为必传参数
被@RequestPart修饰的参数默认为必传参数。
java
@RequestMapping("/fun5")
//设置参数为非必传
public String fun5(@RequestPart(value = "file", required = false) MultipartFile a){
return a.getOriginalFilename();
}
@Controller
@CookieValue
获取指定的Cookie值
注:@CookieValue该注释只能获取一个Cookie值。
java
@RequestMapping("/fun6")
//获取Cookie中键为name的值
public String fun6(@CookieValue("name") String value) {
return "name:"+value;
}
首先在浏览器中创建一个 Cookie


@SessionAttribute
获取指定的Session值
注:只能获取单个Session
java
//因为Session是服务器端的概念,所以获取之前应该先设置
@RequestMapping("/fun7")
public void fun7(HttpSession session) {
//设置Session值
session.setAttribute("name", "zhangsan");
}
//获取Session值
@RequestMapping("/fun8")
public String fun8(@SessionAttribute("name") String name) {
return "name:"+name;
}

@RequestHeader
获取请求头中的值
下面这是一段请求头信息

现在获取里面的Host的值
java
@RequestMapping("/fun9")
public String fun9(@RequestHeader("Host") String data) {
return "Host:"+data;
}

@Controller
@Controller是一个类注解,它定义⼀个控制器,Spring框架启动时加载,把这个对象交给Spring管理。默认返回的是一个页面。
返回html页面
先创建一个HTML页面login.html
里面只有一行代码:

java
@Controller
@RequestMapping("/test1")
public class Test {
@RequestMapping("/fun1")
public String fun1() {
return "/login.html";
}
}

@ResponseBody
注:这个注解既可以修饰类,也可以修饰方法。
被修饰的类或方法都只能返回数据。
设置返回类型为数据
java
@Controller
@RequestMapping("/test1")
public class Test {
@ResponseBody
@RequestMapping("/fun1")
public String fun1() {
return "/login.html";
}
}
