Java学习 day67_Spring-mvc3

今日的无语大bug
忘记倒入mybatis和spring整合大包,如果没导包,在运行时并不会报错,但是扫描不出来mapper

1 Handler方法的形参

执行Handler方法是通过反射来执行
method.invoke(object,args);
形参主要是请求参数

1.1 ★★★请求参数接收

localhost:8080/user/register?username=songge&password=niupi&age=30&gender=male
这个请求它的请求参数是谁?
username、password、age、gender

1.1.1 直接在形参中接收

请求参数名和Handler方法的形参名一致

1.1.1.1 基本类型、包装类、字符串

建议:基本类型的值建议使用对应的包装类来进行接收,避免没有传入参数,导致null值转换异常

在这里插入图片描述

接收指定形参名的请求参数 → 直接先接收到字符串,然后将字符串转换为对应的类型

是因为提供了转换器: Converter

1.1.1.2 数组

?hobbys=sing&hobbys=dance&hobbys=rap&hobbys=basketball
构造一个数组请求参数:多个请求参数名相同
请求参数名和Handler方法的形参名一致
在这里插入图片描述


1.1.1.3 Date(引出转换器)

1、直接接收:yyyy/MM/dd
2、使用指定格式的转换器:@DateTimeFormat(pattern=“日期格式”)
3、自定义转换器,自己来写转换
在这里插入图片描述

自定义转换器 → Converter接口
在这里插入图片描述

在这里插入图片描述

将转换器配置给SpringMVC的转换服务conversionService
1、 注册转换器组件
2、 注册一个conversionService,并且配置自定义转换器
3、 通知SpringMVC做了转换服务
在这里插入图片描述

后续在JavaConfig和SpringBoot使用过程中都会简化这个过程

1.1.1.4 文件

文件上传

1.1.1.4.1 引入依赖

commons-io\commons-fileupload
在这里插入图片描述

1.1.1.4.2 注册multipartResolver组件

根据组件id来进行使用:注册这个组件的时候需要指定特定的组件id 👉multipartResolver
在这里插入图片描述

1.1.1.4.3 构造请求(表单)

enctype=multipart/form-data
method=post
在这里插入图片描述

1.1.1.4.4 Handler方法

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

1.1.2 以Pojo类来接收

原先在Handler方法中的这些形参,作为JavaBean的成员变量名
在这里插入图片描述
在这里插入图片描述

1.1.3 混合方式

直接接收请求参数和Pojo类接收的混合
在这里插入图片描述
在这里插入图片描述


1.1.4 ★★★Json请求参数的接收
1.1.4.1 Json请求

请求方法:POST
Content-Type:application/json
data:Json字符串


1.1.4.2 接收Json请求参数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
参数比较少,可以直接用Map来接收;如果需要固定参数类型,建议以JavaBean来接收

1.1.5 小结

先看请求URL 👉 @RequestMapping
请求方法:
GET,一定不会使用到@RequestBody注解
POST:判断请求参数中是否包含{}或[]

1.2 其他参数

1.2.1 HttpServletRequest和HttpServletResponse

当前的请求的request和response
用法就和你在servlet中的doGet和doPost

1.2.2 Model

Handler方法的返回值为字符串,作为viewName;Model是放在形参中的

1.2.3 Cookie(不能直接放在形参中)

通过request获得cookie

1.2.4 Session

可以直接以HttpSession放在形参中;
也可以通过request来获得

1.2.5 代码

在这里插入图片描述

2 RESTful(一种风格)

表述性状态传递

user相关的请求:新增、修改、删除、查询
/user GET 查询
/user POST 新增
/user DELETE删除
/user PUT 修改
根据请求方法的不同做不同的请求
现在我们不用了,主流做的是前后端分离,请求方法主要就是GET或POST
/user/list
/user/update
/user/delete
/user/add
请求URL是具备一些特征的,资源+操作
方便我们去设计拦截器(过滤器),窄化请求

最重要的点:响应JSON数据

再讲几个注解:获得请求的组成部分,作为Handler方法的形参,让你的Handler方法能够拿到这一些

2.1 请求URL → @PathVariable

在这里插入图片描述

用户名/article/details/文章id

在这里插入图片描述

2.2 请求参数 → @RequestParam

没啥用,脱裤子放屁
在这里插入图片描述

2.3 请求头 → @RequestHeader

获得指定请求头的值,根据key获得对应的value
在这里插入图片描述

2.4 Cookie → @CookieValue

根据cookie的name获得对应的value
构造cookie:songge=niupi

2.4.1 浏览器

在这里插入图片描述

2.4.2 postman

在这里插入图片描述

2.4.3 获得cookiename对应的value

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

2.5 Session → @SessionAttribute

根据attributeName,拿到对应的value
在这里插入图片描述

3 静态资源处理

之前JavaEE应用我们放在web资源路径的下静态资源可以直接访问到,整合SpringMVC之后发现访问不了

DispatcherServlet的servlet-mapping = /
在这里插入图片描述

3.1 default这个servlet 分流

在这里插入图片描述

在这里插入图片描述

3.2 default-servlet-handler

在这里插入图片描述

在这里插入图片描述

前面这两种方式,处理的都是web资源根路径下的静态资源


3.3 静态资源映射

在这里插入图片描述

根据url找到对应的resourceHandler的location,输出对应的静态资源
配置ResourceHandler,配置的就是mapping、location
<mvc:resources mapping location/>
在这里插入图片描述

4 filter

filter是在进入到servlet之前过滤
非常重要的一件事情,对request和response做通用的处理
要解决一个通用的编码问题 CharacterEncodingFilter
在这里插入图片描述

5 全局搜索

ctrl+shift+f →通常和你的输入法的简繁体转换的快捷键冲突(把输入法的这个快捷键关掉)
ctrl+shift+r 全局替换
双击shift

6 附录

为什么我们要引入servlet-api → 编译的时候需要(scope=provided)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值