From a68e239971086ea264a72d92afed9493df5dd094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=AD=A3=E6=B3=A2?= <1938448998@qq.com> Date: Thu, 4 Jan 2024 21:00:55 +0800 Subject: [PATCH] 0104 --- .../20240103 SpringMVC.md" | 150 +++++++++++++++++ .../20240104 SpringMVC.md" | 154 ++++++++++++++++++ 2 files changed, 304 insertions(+) create mode 100644 "09 \346\233\271\346\255\243\346\263\242/20240103 SpringMVC.md" create mode 100644 "09 \346\233\271\346\255\243\346\263\242/20240104 SpringMVC.md" diff --git "a/09 \346\233\271\346\255\243\346\263\242/20240103 SpringMVC.md" "b/09 \346\233\271\346\255\243\346\263\242/20240103 SpringMVC.md" new file mode 100644 index 0000000..c77bc56 --- /dev/null +++ "b/09 \346\233\271\346\255\243\346\263\242/20240103 SpringMVC.md" @@ -0,0 +1,150 @@ +## 1. 接收请求中的json数据 + +1.添加json数据转换相关坐标 + +~~~ xml + + com.fasterxml.jackson.core + jackson-databind + 2.11.3 + +~~~ + +2.开启自动转换json数据的支持 + +~~~ java +@Configuration +@ComponentScan("com.mdd.controller") +// 该注解整合了多个功能,此处仅使用其中一部分功能,即json数据进行自动类型转换 +@EnableWebMvc +public class SpringMvcConfig { +} +~~~ + +3.设置接收json数据 + +~~~ java +// 接收JSON数据 +@RequestMapping("/listJSON") +@ResponseBody +// @RequestParam 指明为集合,不是对象 +public String getJSON(@RequestBody List list){ + System.out.println("JSON参数传递 ===>"+list); + return "ok"; +} +~~~ + +4.响应JSON数据 + +~~~ java +// 响应JSON数据 +@RequestMapping("/listResponseJSON") +@ResponseBody +// @RequestParam 指明为集合,不是对象 +public List getResponseJSON(@RequestBody List list){ + System.out.println("JSON参数传递 ===>"+list); + return list; +} +~~~ + +@RequestParam用于接收url地址传参 + +@RequestBody用于接收json数据 + +5.日期类型参数传递 + +~~~ java +// 时间类型 +@RequestMapping("/data") +@ResponseBody +// @DateTimeFormat 规定日期类型的格式 +public String getData(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date){ + System.out.println(date); + return "ok"; +} +~~~ + +## 2. REST风格 + +REST(Representational State Transfer),表现形式状态转换 + +- 传统风格资源描述形式 + + http://localhost/user/getById?id=1 + + http://localhost/user/saveUser + +- REST风格描述形式 + + http://localhost/user/1 + + http://localhost/user + +优点:隐藏资源的访问行为,无法通过地址得知对资源是何种操作书写简化 + +### 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作 + +http://localhost/users 查询全部用户信息 GET(查询) + +http://localhost/users/1 查询指定用户信息 GET(查询) + +http://localhost/users 添加用户信息 POST(新增/保存 + +http://localhost/users 修改用户信息 PUT(修改/更新) + +http://localhost/users/1 删除用户信息 DELETE(删除) + +```java + +案例: +// 使用 REST风格简化代码 +@RestController +//@RequestMapping("users") +public class userController { + + // 查询所有用户 + @RequestMapping(value = "/users",method = RequestMethod.GET) + @ResponseBody + public String selectAll(){ + System.out.println("selectAll is ok..."); + return "selectAll is ok..."; + } + + // 新增用户 + @RequestMapping(value = "/users",method = RequestMethod.POST) + @ResponseBody + public String save(){ + System.out.println("user save is ok..."); + return "user save is ok..."; + } + + // 根据id查询用户 + @RequestMapping(value = "/users/{id}",method = RequestMethod.GET) + @ResponseBody + // @PathVariable 绑定路径参数 + public String selectById(@PathVariable Integer id){ + System.out.println("selectById is ok..."); + return "selectById is ok..."+id; + } + + // 根据id修改用户 + @RequestMapping(value = "/users/{id}",method = RequestMethod.PUT) + @ResponseBody + // @PathVariable 绑定路径参数 + public String updateById(@PathVariable Integer id){ + System.out.println("updateById is ok..."); + return "updateById is ok..."+id; + } + + // 根据id删除用户 + // 根据id修改用户 + @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE) + @ResponseBody + // @PathVariable 绑定路径参数 + public String deleteById(@PathVariable Integer id){ + System.out.println("deleteById is ok..."); + return "deleteById is ok..."+id; + } +} +``` + diff --git "a/09 \346\233\271\346\255\243\346\263\242/20240104 SpringMVC.md" "b/09 \346\233\271\346\255\243\346\263\242/20240104 SpringMVC.md" new file mode 100644 index 0000000..75d4250 --- /dev/null +++ "b/09 \346\233\271\346\255\243\346\263\242/20240104 SpringMVC.md" @@ -0,0 +1,154 @@ +## REST风格 + +REST(Representational State Transfer),表现形式状态转换 + +- 传统风格资源描述形式 + + http://localhost/user/getById?id=1 + + http://localhost/user/saveUser + +- REST风格描述形式 + + http://localhost/user/1 + + http://localhost/user + +优点:隐藏资源的访问行为,无法通过地址得知对资源是何种操作书写简化 + +### 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作 + +http://localhost/users 查询全部用户信息 GET(查询) + +http://localhost/users/1 查询指定用户信息 GET(查询) + +http://localhost/users 添加用户信息 POST(新增/保存 + +http://localhost/users 修改用户信息 PUT(修改/更新) + +http://localhost/users/1 删除用户信息 DELETE(删除) + +# 案例 + +SpringConfig + +```java +package com.mdd.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@ComponentScan({"com.mdd.mapper","com.mdd.service"}) +@Import({JdbcConfig.class, MybatisConfig.class}) +public class SpringConfig { +} + +``` + +MybatisConfig + +```java +package com.mdd.config; + +import com.sun.deploy.security.MSCredentialManager; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.mapper.MapperScannerConfigurer; + +import javax.sql.DataSource; + +public class MybatisConfig { + public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ + SqlSessionFactoryBean sql = new SqlSessionFactoryBean(); + sql.setTypeHandlersPackage("com.mdd.domain"); + sql.setDataSource(dataSource); + return sql; + } + + public MapperScannerConfigurer mc(){ + MapperScannerConfigurer mapp = new MapperScannerConfigurer(); + mapp.setBasePackage("com.mdd.mapper"); + return mapp; + } +} + +``` + +JdbcConfig + +```java +package com.mdd.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; + +import javax.sql.DataSource; + +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource dr = new DruidDataSource(); + dr.setDriverClassName("com.mysql.cj.jdbc.Driver"); + dr.setUrl("jdbc:mysql:///user01"); + dr.setUsername("root"); + dr.setPassword("123456"); + return dr; + } +} + +``` + +BrandController + +```java +package com.mdd.controller; + +import com.mdd.domian.Brand; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/brands") +public class BrandController { + @PostMapping + public String addBrand(@RequestBody Brand brand){ + System.out.println("添加了一条数据==》"+brand); + return "add ok!"; + } + + @DeleteMapping("/{id}") + public String deleteBrand(@PathVariable Integer id){ + System.out.println("删除了一条数据==》"+id); + return "delete ok!"; + } + + @PutMapping + public String updateBrand(@RequestBody Brand brand){ + System.out.println("修改了一条数据==》"+brand); + brand.setName("老赵"); + System.out.println("修改成功!"); + return "update ok!"; + } + + @GetMapping + public List getBrand(Brand brand){ + ArrayList brands = new ArrayList(); + brands.add(new Brand(1,"你好","男性",18)); + brands.add(new Brand(2,"你好2","女性",38)); + brands.add(new Brand(3,"你好3","男性",28)); + brands.add(new Brand(4,"你好3","女性",48)); + return brands; + } + + @GetMapping("/{id}") + public Brand gettBrand(@PathVariable Integer id){ + System.out.println("查询到一条数据==》"+id); + return new Brand(id,"你好369","女性",48); + } +} + +``` + -- Gitee