上午
springmvc的底层也是servlet
在后台能接请求的 只能servlet和过滤器
一.快速入门
第一步:
导入依赖 day34_demo1_helloworld
第二步:做成web项目
第三步:在webapp里面写二个页面
第四步:写后台
第五步:写.xml文件
springmvc里面内置了一个servlet,所以我们只要登记servlet,让他接收/*的请求,目的就是我们从浏览器发任何请求来,都是发给springmvc里面内置的servlet,由servlet内部进行判定,把请求转移到请求路径上
第三步:登记
第四步:运行 访问index.jsp首页 看它会不会发请求给sayHi
发完后会不会跳转到success.jsp
二 .原理
解释:
当我们的浏览器(客户端)发出请求时,不是到达Controller
而是先达到DispatcherServlet(中央处理器,前端控制器/核心处理器),DispatcherServlet负责接收请求,响应请求,DispatcherServlet收到请求之后,要调用Controlle,但是不知道要调用哪个Controller能够处理发过来的请求,这时就先让HandlerMapping(处理器映射器)去找Controller,看哪个Controller可以处理发过来的请求,等找到之后 在安排HandlerAdapter(处理器适配器)去调用Controller,HandlerAdapter就可以去调用Controller方法,调用Controller方法之后会返回一个视图名称,然后视图解析器在去咨询找页面,在经过渲染页面,在返回给我们的客户端
解释:
ViewResolver视图解析器
调用之后,得到视图,在根据ViewResolver视图解析器
寻找页面
三.配置解释
错误分析
.xsd没有引进来
如果没有引进来选把这行删除
![](https://i-blog.csdnimg.cn/blog_migrate/58352a52cb499d9c2d8e8eedcccf7c00.png)
四.演示视图解析器
五.静态资源处理
六. web.xml里面的配置解释
七 @Controller和@RequestMapping
八 .请求参数绑定
第一步:导入依赖
第二步:变成web项目
第三步:写二个页面 index.jsp success.jsp 先用get请求
第四步:写后台Controller01
第一种:简单参数
第五步:springmvc.xml配置 以下四个是固定 可以导个模板
第六步.web.xml 固定写法 可以导个模板
第七步 访问
访问首页
访问成功页面
用到的是get请求
后台接收到的一个数据
第二种 对象类型
第一步:写首页
第二步:javabeen
第三步:后台
第四步:运行
第三种:数组类型
第一步:写首页(前端)
第二步:写后台
第三步 运行
二种传值写法
用list集合接收
第一步:写后台
第二步:
总结:
九 .中文乱码
第一步:写首页 post请求
第二步:web.xml里面写配置
第三步:运行
十 .类型转换器
我们从页面上传过来的是字符串,但是springmvc内部已经默认写好了类型转换器,比如说string转换int类型,不过日期格式做得并不好,springmvc只认2022/2-1,所以我们得自己写一个类型转换器
第一步:写首页
第二步:后台
第三步:运行
如果日期输入的是2020-10-10
那么就会报错,如图所示(400-客户端 500-服务端)
解决办法
第一步:
第二步:注册类型转换器
第三步:把类型转换器放在注解驱动上
第四步:运行
下午
注解
一.@RequestParam
第一步:导入依赖
第二步:写后台
第三步:运行
这时会发现客户端并没有带参数过来
所以要用到@RequestParam
作用:要求客户端一定要携带指定名字的参数过来
大部分这样写
以下比较少写
理解 :
二.@RequestBody
作用:
-
用于获取请求体内容。直接使用得到是 key=value&key=value...结构的字符串。【不常用】
第一步:写后台
第二步:写首页
把首页中表单的数据提交给Controll里面的requestBody01上
第三步:运行
F12 返回
重新提交
用这个Mozilla Firefox抓包
2.把获得json类型的数据转成JavaBean对象(后面再讲)【推荐】
超链接触发普通的json数据javascript:sendJSON()
第一步:写首页
第二步:写javabeen
第三步:写后台
第四步 导入jackson-databind 的依赖
解决运行时如下错误
解决办法 复制选中
Ctrl+R
先把程序停止
同理 把另外二个删除
第五步:发请求
总结:
三 .@PathVariable
作用:
用于截取请求地址(url)里面的某些部分的数据。这个需要配合RestFul风格来说明
localhost:81/delete?id=3 ==========> localhost:81/delete/3
属性:
value: 用于指定 url 中占位符名称。
required:是否必须提供占位符。
第一步:写首页
第二步:写后台
第三步:运行
四 .@RequestHeader
作用:
获取指定名字的请求头数据,赋值给方法参数
属性:
value:提供消息头名称
required:是否必须有此消息头 , 默认值是true
第一步:写首页
第二步:写后台
第三步:运行
六 .@CookieValue
作用:
用于把指定 cookie 名称的值传入控制器方法参数。
属性:
value:指定 cookie 的名称。
required:是否必须有此 cookie, 默认值是:true
第一步:写首页
第二步:写后台
第三步.运行
以上的笔记是自己在看视频时所做 如要源码或是视频可以评论区扣1