主页 > 创业  > 

SpringWebMVC入门

SpringWebMVC入门

目录

学习Spring MVC

一、建立连接

@RestController和@RequestMapping

@RequestMapping 使用

访问地址:类路径+方法路径

既支持Get请求又支持Post请求

⭐️指定GET方法类型

🌙指定POST方法类型

二、请求

1️⃣传递单个参数

2️⃣传递多个参数

​3️⃣传递对象

4️⃣后端参数重命名(后端参数映射)

非必传参数设置

5️⃣传递数组 

6️⃣传递集合 

7️⃣传递JSON数据

JSON字符串和Java对象互转

​传递JSON对象

传递对象和传递JSON的区别

8️⃣获取URL中参数@PathVariable

​ 参数重命名

9️⃣上传文件@RequestPart

​ 参数重命名

🔟 获取Cookie/Session

​📝面经: Cookie 和 Session 的区别

获取Cookie

🍃传统获取Cookie

​🍂简洁获取Cookie:@CookieValue

Session存储

获取Session

🍈方式一:

🍒方式二: 

🥥方式三:    @SessionAttribute

1️⃣1️⃣获取Header

🌭传统获取 header

🍔简洁获取 Header:@RequestHeader

三、响应

返回静态页面:@Controller

前端代码

后端代码

返回数据:@ResponseBody

返回HTML代码片段

返回JSON

设置状态码

设置Header (了解)

设置Content-Type

设置其他Header


Spring Web MVC咱们简称之为: Spring MVC

Spring MVC 是⼀个实现了 MVC 模式的 Web 框架  

学习Spring MVC 一、建立连接

将用户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调用到我们的Spring 程序

@RestController和@RequestMapping @RestController public class UserController { @RequestMapping("/hello") public String sayHello() { return "Hello Spring"; } }

@RequestMapping 使用 访问地址:类路径+方法路径 @RestController @RequestMapping("/user") public class UserController { @RequestMapping("/hello") public String sayHello() { return "Hello Spring"; } } 既支持Get请求又支持Post请求 ⭐️指定GET方法类型 @RestController @RequestMapping("/user") public class UserController { @RequestMapping(value = "/hello", method = RequestMethod.GET) public String sayHello() { return "Hello Spring"; } }

@GetMapping 

@RestController @RequestMapping("/user") public class UserController { @GetMapping("/hello") public String sayHello() { return "Hello Spring"; } } 🌙指定POST方法类型 @RestController @RequestMapping("/user") public class UserController { @RequestMapping(value = "/hello", method = RequestMethod.POST) public String sayHello() { return "Hello Spring"; } }

@PostMapping 

@RestController @RequestMapping("/user") public class UserController { @PostMapping("/hello") public String sayHello() { return "Hello Spring"; } } 二、请求

用户请求的时候会带⼀些参数,在程序中要想办法获取到参数,所以请求这块主要是获取参数的功能

传递的普通参数,默认类型为String,后端接收时,会根据后端定义的类型来转换

1️⃣传递单个参数 @RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/p1") public String p1(String name) { return "接收到参数 name:" + name; } }

2️⃣传递多个参数 @RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/p2") public String p2(String name, Integer age) { return "接收到参数,age:" + age + ", name:" + name; } }  3️⃣传递对象 public class User { private String name; private Integer age; private Integer gender; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Integer getGender() { return gender; } public void setGender(Integer gender) { this.gender = gender; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + ", gender=" + gender + '}'; } }
@RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/p3") public String p3(User user) { return "user:" + user; } }

4️⃣后端参数重命名(后端参数映射) @RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/p4") public String p4(@RequestParam("userName") String name, Integer age) { return "接收到参数,age:" + age + ", name:" + name; } }


使用@RequestParam进行参数重命名时,请求参数只能和@RequestParam声明的名称一 致,才能进行参数绑定和赋值. 使用@RequestParam进行参数重命名时,参数就变成了必传参数.

非必传参数设置 @RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/p4") public String p4(@RequestParam(value = "userName", required = false) String name, Integer age) { return "接收到参数,age:" + age + ", name:" + name; } }

5️⃣传递数组  @RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/p5") public String p5(String[] arr) { return "arr:" + List.of(arr); } }


6️⃣传递集合  @RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/p6") public String p6(@RequestParam List<String> list) { return "list:" + list; } }

7️⃣传递JSON数据 JSON字符串和Java对象互转 package com.example.demo; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonTest { public static void main(String[] args) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); User user = new User(); user.setName("lisi"); user.setAge(18); user.setGender(1); // 对象转json String s = objectMapper.writeValueAsString(user); System.out.println(s); //json转对象 User user1 = objectMapper.readValue(s, User.class); System.out.println(user1); } } 传递JSON对象

@RequestBody

@RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/p7") public String p7(@RequestBody User user) {//从请求正文中 return "User:" + user; } }

 

传递对象和传递JSON的区别   8️⃣获取URL中参数@PathVariable @RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/article/{articleId}") public String p8(@PathVariable("articleId") String articleId) {//从请求正文中 return "articleId:" + articleId; } }  参数重命名 @RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/article/{articleId}/{name}") public String p8(@PathVariable("articleId") String id, @PathVariable String name) {//从请求正文中 return "articleId:" + id + ",name:" + name; } }

 

 如果方法参数名称和需要绑定的URL中的变量名称一致时,可以简写, 不用给@PathVariable的属性赋值

如果方法参数名称和需要绑定的URL中的变量名称不一致时, 需要给@PathVariable的属性value赋值

9️⃣上传文件@RequestPart @RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/p9") public String p9(MultipartFile file) { System.out.println(file.getOriginalFilename()); return "文件名称:" + file.getOriginalFilename(); } }

 参数重命名 @RequestMapping("/param") @RestController public class ParamController { @RequestMapping("/p9") public String p9(@RequestPart("fileName") MultipartFile file) { System.out.println(file.getOriginalFilename()); return "文件名称:" + file.getOriginalFilename(); } }

🔟 获取Cookie/Session

 

📝面经: Cookie 和 Session 的区别

●Cookie是客户端保存用户信息的一种机制.Session是服务器端保存用户信息的一种机制. ●Cookie和Session之间主要是通过Sessionld关联起来的,Sessionld是Cookie和Session之间的桥梁 ●Cookie和Session经常会在一起配合使用.但是不是必须配合.      o 完全可以用Cookie来保存一些数据在客户端.这些数据不一定是用户身份信息,也不一定是Sessionld       o Session中的sessionld也不需要非得通过Cookie/Set-Cookie传递,比如通过URL传递.

获取Cookie 🍃传统获取Cookie @RestController @RequestMapping("/header") public class HeaderController { @RequestMapping("/getCookie") public String getCookie(HttpServletRequest request) { Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { System.out.println(cookie.getName() + ":" + cookie.getValue()); } } return "获取cookie成功"; } } 🍂简洁获取Cookie:@CookieValue @RestController @RequestMapping("/header") public class HeaderController { @RequestMapping("/getCookie") public String getCookie2(@CookieValue("baidu") String baidu) { return "从Cookie中获取信息,baidu:" + baidu; } }

Session存储 @RestController @RequestMapping("/header") public class HeaderController { @RequestMapping("/setSession") public String setSession(HttpServletRequest request) { HttpSession session = request.getSession(); session.setAttribute("userName", "zhangsan"); session.setAttribute("age", "15"); return "设置session成功"; } } 获取Session 🍈方式一: @RequestMapping("/getSession") public String getSession(HttpServletRequest request) { HttpSession session = request.getSession(); if (session != null) { String userName = (String) session.getAttribute("userName"); System.out.println(session.getAttribute("age")); return "从session中获取信息,userName:" + userName; } return null; } 🍒方式二:  @RequestMapping("/getSession") public String getSession(HttpSession session) { if (session != null) { String userName = (String) session.getAttribute("userName"); System.out.println(session.getAttribute("age")); return "从session中获取信息,userName:" + userName; } return null; } 🥥方式三:    @SessionAttribute @RequestMapping("/getSession") public String getSession(@SessionAttribute("userName") String userName) { return "从session中获取信息,userName:" + userName; } 1️⃣1️⃣获取Header 🌭传统获取 header @RestController @RequestMapping("/header") public class HeaderController { @RequestMapping("/getHeader") public String getHeader(HttpServletRequest request) { String uesrAgent = request.getHeader("User-Agent"); return "uesrAgent:" + uesrAgent; } }

🍔简洁获取 Header:@RequestHeader @RestController @RequestMapping("/header") public class HeaderController { @RequestMapping("/getHeader") public String getHeader(@RequestHeader("User-Agent") String uesrAgent) { return "uesrAgent:" + uesrAgent; } } 三、响应 返回静态页面:@Controller 前端代码 后端代码 @RequestMapping("/response") @Controller public class ResponseController { @RequestMapping("/returnHtmlPage") public String returnHtmlPage() { return "/hello.html"; } } 返回数据:@ResponseBody @RequestMapping("/response") @Controller @ResponseBody public class ResponseController { @RequestMapping("/returnHtmlPage") public String returnHtmlPage() { return "/hello.html"; } }

返回HTML代码片段 @RequestMapping("/response") @Controller @ResponseBody public class ResponseController { @RequestMapping("/returnHtml") public String returnHtml() { return "<h1>returnHtml<h1>"; } }

返回JSON @RequestMapping("/response") @Controller @ResponseBody public class ResponseController { @RequestMapping("/returnJson") public User returnJson() { User user = new User(); user.setName("zhangsan"); user.setAge(18); return user; } }

设置状态码 @RequestMapping("/response") @Controller @ResponseBody public class ResponseController { @RequestMapping("/setStatus") public User setStatus(HttpServletResponse response) { User user = new User(); user.setName("zhangsan"); user.setAge(18); response.setStatus(500); return user; } }

设置Header (了解) 设置Content-Type @RequestMapping("/response") @Controller @ResponseBody public class ResponseController { @RequestMapping("/setHeader") public String setHeader() { return "{\"success\":true}"; } }


@RequestMapping("/response") @Controller @ResponseBody public class ResponseController { @RequestMapping(value = "/setHeader",produces = "application/json") public String setHeader() { return "{\"success\":true}"; } }

设置其他Header @RequestMapping("/response") @Controller @ResponseBody public class ResponseController { @RequestMapping("/setHeader") public String setHeader(HttpServletResponse response) { response.setHeader("myKey", "myValue"); return "success"; } }

标签:

SpringWebMVC入门由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“SpringWebMVC入门