SpringMvc学习笔记

SpringMvc学习笔记

SpringMvc架构思路

在这里插入图片描述
首先笑脸代表客户端 客户端发送请求到前端控制器DispatcherServlet。前端控制器通过请求查找Handler,就是去找处理器映射器HandlerMapping,说白话就是去Controller类中去找对应requestmapping属性的方法 比如图中的/hello。然后其返回一个执行链,就是返回该方法,又返回在前端控制器里;然后说到处理器适配器,适配器的模式是指将任何controller类变成适配器,然后用适配器去执行相对应的controller的方法。刚拿到了执行链就那方法,然后去请求适配器为它执行,执行之后,方法正常执行,返回一个modelandview,其实就是一个view,又返回给前端控制器,最后它又去找视图解析器,视图解析器再跳转至相应的页面,这时候前端控制器就可以相应回去了,SpringMvc就是一个基于组件的方式执行流程。

关于SpringMvc的配置

首先有一个web.xml 配置了前端控制器 并且在SpringMvc.xml中配置了视图解析器

<mvc:annotation-driven>

剩下的两个由上面这个自动装配 处理映射器还有处理适配器

注解

RequestMapping

简单复述一遍作用:

用于建立请求url和处理请求方法之间的对应关系

关于该注解的作用范围

点开RequestMapping源码可以看到底层注解有写到,可以作用在类上,可以作用在方法上,作用在类上的话,就是相当于在类上的是父路径 在方法上就是子路径 比如/user/delete

该注解的属性

name value path method params headers

首先不看name 看后两者 后两者我们在源码中可以看到都有个@AliasFor("")该注解是表示别名的意思 两者互相映射 就相当于两者相等了

然后我们再看下method method是用来规定允许的请求方式 点开源码 可以发现返回值是一个枚举类 我们可以method等于然后把这个枚举类复制过来 直接点get post之类的;

params是指请求中必须带相关的参数 限制请求的参数条件 params={"username"}如果是这样 就表示我进这个请求必须得带有username这个参数 具体是什么 不限制 params={username = "oyby"}这种情况的话 就要求key value都得对应相等了

headers表示相对应的请求必须带有相应的请求头 请求头可以f12看

自定义类型转换器

当我们遇到像2019/09/22可以转换为日期格式, 但是2019-08-23却不能转换。这种情况可以说是用mvc的一个类型转换器的组件 首先自己手写一个工具类 但是该类必须实现Converter<S,T> S表示接受的类型, T表示目标类型 在这个类中 重写convert方法 source是这个方法唯一参数 就是传进来需要转换的参数

然后在SpringMvc.xml中配置类型转换器 需要在里面配置自己写的工具类

在这里插入图片描述在这里插入图片描述

完整的应该是下图 因为前面那个注解只配置了处理映射器和处理适配器 还需要自己手动配置一下类型转换器

在控制器中如何拿到servlet原生api

这个在SpringMvc中 大部分数据传输感觉都可以在Controller中的方法中的参数中传递 包括request response 如图

在这里插入图片描述

没写返回值 MVC默认的返回路径是request mapping

一般会报404错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值