文章目录
1.基本介绍 2.@PathVariable 路径参数获取信息 1.代码实例 1.index.html 2.ParameterController.java 3.测试
2.细节说明
3.@RequestHeader 请求头获取信息 1.代码实例 1.index.html 2.ParameterController.java 3.测试
2.细节说明
4.@RequestParameter 请求获取参数信息 1.代码实例 1.index.html 2.ParameterController.java 3.测试
2.细节说明
5.@CookieValue cookie获取值 1.代码实例 1.index.html 2.ParameterController.java 3.测试
2.细节说明
6.@RequestBody 处理json请求,post请求体获取信息 1.代码实例 1.index.html 2.ParameterController.java 3.测试
7.@RequestAttribute 请求域获取信息 1.代码实例 1.RequestController.java 2.配置视图解析器 application.yml 3.测试
8.@SessionAttribute session域获取信息 1.代码实例 1.SessionController.java 2.配置视图解析器(同上) 3.测试
9.复杂参数 1.代码实例 1.RequestController.java 2.测试
2.HttpServletResponse给浏览器设置cookie
1.基本介绍
2.@PathVariable 路径参数获取信息
1.代码实例
1.index.html
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
</ head>
< body>
< h1> 基本注解</ h1>
< hr/>
< a href = " /monster/100/king" > @PathVariable-路径变量:/monster/100/king</ a>
</ body>
</ html>
2.ParameterController.java
package com. sun. springboot. controller ;
import org. springframework. web. bind. annotation. GetMapping ;
import org. springframework. web. bind. annotation. PathVariable ;
import org. springframework. web. bind. annotation. RestController ;
import java. util. Map ;
@RestController
public class ParameterController {
@GetMapping ( "/monster/{id}/{name}" )
public String pathVariable ( @PathVariable ( "id" ) Integer id, @PathVariable ( "name" ) String name,
@PathVariable Map < String , String > map) {
System . out. println ( "id:" + id + " name:" + name) ;
for ( Map. Entry < String , String > entry : map. entrySet ( ) ) {
System . out. println ( "key:" + entry. getKey ( ) + " value: " + entry. getValue ( ) ) ;
}
return "success" ;
}
}
3.测试
2.细节说明
@PathVariable(“xxx”)必须跟{xxx}相对应 可以将所有的路径参数放到map中 @PathVariable Map<String, String> map
3.@RequestHeader 请求头获取信息
1.代码实例
1.index.html
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
</ head>
< body>
< h1> 基本注解</ h1>
< hr/>
< a href = " /requestHeader" > @RequestHeader-获取请求头信息</ a>
</ body>
</ html>
2.ParameterController.java
package com. sun. springboot. controller ;
import org. springframework. web. bind. annotation. GetMapping ;
import org. springframework. web. bind. annotation. RequestHeader ;
import org. springframework. web. bind. annotation. RestController ;
import java. util. Map ;
@RestController
public class ParameterController {
@GetMapping ( "/requestHeader" )
public String requestHeader ( @RequestHeader ( "host" ) String host, @RequestHeader Map < String , String > header) {
System . out. println ( "host:" + host) ;
System . out. println ( header) ;
return "success" ;
}
}
3.测试
2.细节说明
请求头的信息都是以key - value的形式存储的 可以通过@RequestHeader(“xxx”)来获取xxx对应的value 也可以通过@RequestHeader Map<String, String> header将所有的key - value都封装到map中
4.@RequestParameter 请求获取参数信息
1.代码实例
1.index.html
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
</ head>
< body>
< h1> 基本注解</ h1>
< hr/>
< a href = " /hi?hobby=打篮球&hobby=踢球" > @RequestParam-请求参数</ a>
</ body>
</ html>
2.ParameterController.java
package com. sun. springboot. controller ;
import org. springframework. web. bind. annotation. * ;
import java. util. List ;
@RestController
public class ParameterController {
@GetMapping ( "/hi" )
public String hi ( @RequestParam ( value = "name" , defaultValue = "孙显圣" ) String name,
@RequestParam ( "hobby" ) List < String > list) {
System . out. println ( "name:" + name) ;
System . out. println ( list) ;
return "success" ;
}
}
3.测试
2.细节说明
请求参数是可以设置默认值的,使用defaultValue属性即可 请求参数还可以将同名的结果封装到List中 请求参数也可以使用@RequestParameter Map<String, String> map 将所有参数封装到map中,但是如果有同名的结果只会得到第一个,因为map的key是唯一的
5.@CookieValue cookie获取值
1.代码实例
1.index.html
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
</ head>
< body>
< h1> 基本注解</ h1>
< hr/>
< a href = " /cookie" > @CookieValue-获取cookie的值</ a>
</ body>
</ html>
2.ParameterController.java
package com. sun. springboot. controller ;
import org. springframework. web. bind. annotation. * ;
import javax. servlet. http. Cookie ;
import javax. servlet. http. HttpServletRequest ;
@RestController
public class ParameterController {
@GetMapping ( "/cookie" )
public String cookie ( @CookieValue ( value = "cookie_key" , required = false ) String cookie_value,
@CookieValue ( value = "username" , required = false ) Cookie cookie, HttpServletRequest request) {
Cookie [ ] cookies = request. getCookies ( ) ;
for ( Cookie cookie1 : cookies) {
System . out. println ( cookie1) ;
}
System . out. println ( cookie_value) ;
System . out. println ( "name:" + cookie. getName ( ) + " value: " + cookie. getValue ( ) ) ;
return "success" ;
}
}
3.测试
2.细节说明
@CookieValue可以根据后面要封装的参数的类型来获取指定的值,如果后面的类型是Cookie类型则会获取一个Cookie对象并封装进入,如果是String类型则会获取Cookie的value来进行封装 还可以通过Servlet原生api的request来获取所有的cookie @CookieValue中有属性required默认为true,意为必须存在,否则报错,如果设置为false,则如果获取不到则为null
6.@RequestBody 处理json请求,post请求体获取信息
1.代码实例
1.index.html
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
</ head>
< body>
< h1> 基本注解</ h1>
< hr/>
< form action = " /requestBody" method = " post" >
< input type = " text" name = " username" > < br>
< input type = " text" name = " password" > < br>
< input type = " submit" value = " submit" >
</ form>
</ body>
</ html>
2.ParameterController.java
package com. sun. springboot. controller ;
import org. springframework. web. bind. annotation. * ;
@RestController
public class ParameterController {
@PostMapping ( "requestBody" )
public String getRequestBody ( @RequestBody String requestBody) {
System . out. println ( requestBody) ;
return "success" ;
}
}
3.测试
7.@RequestAttribute 请求域获取信息
1.代码实例
1.RequestController.java
package com. sun. springboot. controller ;
import org. springframework. stereotype. Controller ;
import org. springframework. web. bind. annotation. GetMapping ;
import org. springframework. web. bind. annotation. RequestAttribute ;
import org. springframework. web. bind. annotation. ResponseBody ;
import javax. servlet. http. HttpServletRequest ;
@Controller
public class RequestController {
@GetMapping ( "/login" )
public String login ( HttpServletRequest request) {
request. setAttribute ( "name" , "sun" ) ;
request. setAttribute ( "age" , 13 ) ;
return "forward:/ok" ;
}
@ResponseBody
@GetMapping ( "/ok" )
public String ok ( @RequestAttribute ( value = "name" , required = false ) String name) {
System . out. println ( "name: " + name) ;
return "success" ;
}
}
2.配置视图解析器 application.yml
spring :
mvc :
view :
suffix : .html
prefix : /
3.测试
8.@SessionAttribute session域获取信息
1.代码实例
1.SessionController.java
package com. sun. springboot. controller ;
import org. springframework. stereotype. Controller ;
import org. springframework. web. bind. annotation. GetMapping ;
import org. springframework. web. bind. annotation. ResponseBody ;
import org. springframework. web. bind. annotation. SessionAttribute ;
import javax. servlet. http. HttpServletRequest ;
@Controller
public class SessionController {
@GetMapping ( "/login" )
public String login ( HttpServletRequest request) {
request. getSession ( ) . setAttribute ( "session" , "session_value" ) ;
return "forward:/ok" ;
}
@ResponseBody
@GetMapping ( "/ok" )
public String ok ( @SessionAttribute ( value = "session" ) String value) {
System . out. println ( "session: " + value) ;
return "success" ;
}
}
2.配置视图解析器(同上)
3.测试
9.复杂参数
1.代码实例
1.RequestController.java
package com. sun. springboot. controller ;
import org. springframework. stereotype. Controller ;
import org. springframework. ui. Model ;
import org. springframework. web. bind. annotation. GetMapping ;
import org. springframework. web. bind. annotation. RequestAttribute ;
import org. springframework. web. bind. annotation. ResponseBody ;
import javax. servlet. http. HttpServletResponse ;
import java. util. Map ;
@Controller
public class RequestController {
@GetMapping ( "/login" )
public String login ( Map < String , Object > map, Model model, HttpServletResponse response) {
map. put ( "user" , "sun" ) ;
map. put ( "job" , "工程师" ) ;
model. addAttribute ( "sal" , 1000 ) ;
return "forward:/ok" ;
}
@ResponseBody
@GetMapping ( "/ok" )
public String ok ( @RequestAttribute ( "user" ) String user, @RequestAttribute ( "job" ) String job,
@RequestAttribute ( "sal" ) Integer sal) {
System . out. println ( "user:" + user + " job:" + job + " sal:" + sal) ;
return "success" ;
}
}
2.测试
2.HttpServletResponse给浏览器设置cookie
1.代码实例
package com. sun. springboot. controller ;
import org. springframework. stereotype. Controller ;
import org. springframework. web. bind. annotation. CookieValue ;
import org. springframework. web. bind. annotation. GetMapping ;
import org. springframework. web. bind. annotation. ResponseBody ;
import javax. servlet. http. Cookie ;
import javax. servlet. http. HttpServletResponse ;
@Controller
public class RequestController {
@GetMapping ( "/login" )
public String login ( HttpServletResponse response) {
Cookie cookie = new Cookie ( "cookie_name" , "cookie_value" ) ;
response. addCookie ( cookie) ;
return "redirect:/ok" ;
}
@ResponseBody
@GetMapping ( "/ok" )
public String ok ( @CookieValue ( "cookie_name" ) Cookie cookie) {
System . out. println ( "key:" + cookie. getName ( ) + " value:" + cookie. getValue ( ) ) ;
return "success" ;
}
}
2.测试