Spring学习——SpringMVC

Spring核心  IOC   AOP

//1. aop 

//2. 核心代码
    @Aspect // 增强方法   切点方法   顺序
    @Component
    public class LogAspect {
        //定义切点
        @Pointcut("execution(* com.itheima.service.impl.*.*(..))")
        public void pt() {
        }

        @Around("pt()")
        public Object m5(ProceedingJoinPoint pjp) throws Throwable {
			return pjp.proceed();
        }
    }

//3. 通知类型
	四大通知
	环绕通知    

//4. 切点定位
    execution  表达式   *  ..    
    annoatio   自定义注解    

//5. 声明式事务
     @Transactional
        rollbackFor
        propagation

SpringMVC入门

介绍

SpringMVC将Servlet一些通用功能进行了抽取和封装,使用它之后,代码主要有两部分组成:

  • 前端控制器:由SpringMVC提供,主要负责接收参数和返回页面和数据
  • 处理器:由程序员编写,主要负责参数的处理和业务层调用

在这里插入图片描述

入门案例

发送一个请求name=张三&age=18,后台接收参数,封装一个User对象返回json数据

在这里插入图片描述

创建web工程

创建模块,换换为web工程,添加依赖

在这里插入图片描述

 <dependencies>
      <!--servlet-->
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
      </dependency>
      <!--springmvc核心-->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.16</version>
      </dependency>
      <!--jackson-->
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.13.1</version>
      </dependency>
      <!--lombok-->
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.26</version>
      </dependency>
    </dependencies>

加入配置类

在项目中添加web环境的初始类和核心配置类

在这里插入图片描述

创建实体类

准备一个实体类,用于封装返回结果

在这里插入图片描述

创建处理器

在这里插入图片描述

部署项目

将项目部署到tomcat,浏览器访问http://localhost:8080/user/demo1?name=张三&age=18,观察效果

在这里插入图片描述

执行流程

在这里插入图片描述

注解

@RequestMapping

@RequestMapping注解用于建立请求URL和处理方法之间的对应关系, 常见属性如下:

  • value: 等同于path,用于为当前方法绑定访问路径
  • method:用于限制请求类型,如果省略此选项,代表不对请求类型做限制

注意:此注解可以标注在方法上,也可以标注在类上,标注在类上代表类中的所有方法都可以共用一段URL

在这里插入图片描述

@ResponseBody

@ResponseBody注解用于将方法返回值直接响应给浏览器,如果返回值类型是对象或集合,将会转换为JSON格式响应

位置:Controller方法上/类上(如果标在类上,代表类中所有方法上都生效)

简化:@RestController = @Controller + @ResponseBody

在这里插入图片描述

405: 请求方式错误

在这里插入图片描述

postman

Postman是一款功能强大的接口调试工具

在这里插入图片描述

接收请求参数

在SpringMVC中,可以使用多种数据类型来接收前端传入的参数

简单类型

需要保证前端传递的参数名称跟方法的形参名称一致

请求

在这里插入图片描述

代码

在这里插入图片描述

对象类型

需要保证前端传递的参数名称跟实体类的属性名称一致

请求

在这里插入图片描述

代码

在这里插入图片描述

数组类型

需要保证前端传递的参数名称跟方法中的数组形参名称一致

请求

在这里插入图片描述

代码

在这里插入图片描述

集合类型

请求参数名与形参集合名称相同且请求参数为多个,使用@RequestParam绑定参数关系

请求

在这里插入图片描述

代码

在这里插入图片描述

日期类型

接收参数为日期类型,需要使用@DateTimeFormat定义参数格式

请求

在这里插入图片描述

代码

在这里插入图片描述

json参数

SpringMVC也可以接收请求体中的json字符串为参数,并且自动封装为指定对象

此时要求JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识

请求

在这里插入图片描述

代码

在这里插入图片描述

路径参数

springmvc还支持通过请求路径直接传递参数,后台使用{…}来标识该路径参数,需要使用@PathVariable获取

请求

在这里插入图片描述

代码

在这里插入图片描述

@RequestParam

@RequestParam标注在方法参数之前,用于对传入的参数做一些限制,常见属性如下:

  • name:用于指定前端传入的参数名称
  • defaultValue:当参数为非必传参数且前端没有传入参数时,指定一个默认值

请求

在这里插入图片描述

代码

在这里插入图片描述

统一异常处理

使用SpringMVC后,异常就不必在三层代码去处理了,而是直接抛给框架,框架会将所有的异常统一转交给我们自定义的统一异常处理类来处理。

SpringMVC支持下面两个注解来实现全局异常处理

​ @RestControllerAdvice 标注在类上,声明当前类是一个用于专门处理异常的类

​ @ExceptionHandler 标注在方法上,声明当前方法可以处理哪些异常

在这里插入图片描述

模拟异常

在这里插入图片描述

全局异常处理

在这里插入图片描述

Restful

介绍

REST是一种软件架构风格,其强调HTTP应当以资源为中心[在请求地址中尽量的不要出现动词]。

REST规范了HTTP请求动作,使用四个词语分别表示对资源的CRUD操作: GET(获取)、POST(新建)、PUT(更新)、DELETE(删除)

原来Restful
保存/saveUserpost /user
修改/updateUser?id=1put /user/id/1
删除/deleteUser?id=1delete /user/1
查询所有/findAllUserget /user
查询一个/findByUserId?id=1get /user/1

保存和查询所有

请求

在这里插入图片描述

代码

在这里插入图片描述

删除和主键查询

请求

在这里插入图片描述

代码

在这里插入图片描述

回顾

404 路径问题

405 请求方式错误

400 请求参数错误

500 后台错误

200 成功

1. controller类上:  @Controller   +   @ResponseBody   --->   @RestController

2. 方法上+类上: @RequestMapping  @PostMapping    @PutMapping    @GetMapping    @DeleteMapping    

3. 接收参数
	@RequestBody----->请求体中json
	@PathVariable---->请求路径
	@DateTimeFormat ---->设置日期格式
	@RequestParam --->集合

4. 异常
	@RestControllerAdvice
    @ExceptionHandler

请求参数位置

  1. 请求参数 /user?name=张三&age=18 不用注解,直接接收

  2. 请求体json Body @RequestBody

  3. 请求路径 /user/1 @PathVariable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值