SpringMvc的学习笔记

Easter79
• 阅读 359

springmvc_@RequestMapping注解_映射请求的URL:

1.@RequestMapping 除了修饰方法,还可以修饰类
2.类定义处: 提供初步请求的映射信息。相当于WEB应用的根目录
2).方法处:提供进一步的细分映射信息。相对于类定义处的url.
若类定义处未标注@RequestMapping,则方法处标记的url相当于web的根目录
实例: 1.在类定义处定义@RequestMapping注解:

SpringMvc的学习笔记

2.在方法处定义@RequestMapping注解:

SpringMvc的学习笔记

3.通过jsp页面链接注解内容:

SpringMvc的学习笔记

springmvc_@RequestMapping注解_请求方式:

1.定义RequestMapping方法注解加上method的属性,提交方式为POST:

SpringMvc的学习笔记

2.在jsp页面创建表单,提交方式也为POST:

SpringMvc的学习笔记

SpringMVC_RequestMapping_请求参数&请求头:

1.在方法上写上注解,以及注解属性:

SpringMvc的学习笔记

2.通过jsp页面链接注解内容,并且在链接内写上表达式:(表达式和parms属性的值一一对应)

SpringMvc的学习笔记

SpringMVC_RequestMapping_Ant 路径:

1.在方法上写上注解路径,路径可为通配符:

SpringMvc的学习笔记

2.通过jsp访问路径,路径的通配符可以写任何内容:
SpringMvc的学习笔记

SpringMvc_requestMapping_PathVariable注解:

1.创建requestMapping方法注解,然后在方法参数里写入@PathVariable注解,属性为id值:

SpringMvc的学习笔记

2.通过jsp页面访问路径,路径下传任意id值:

SpringMvc的学习笔记

SpringMVC_RequestMapping_HiddenHttpMethodFilter过滤器:

1.在全局配置文件中配置:

SpringMvc的学习笔记

2.使用rest风格的URL:

以增删查改为例:            以前的风格:
新增:/order POST POST
修改:/order/1 PUT PUT        update?id=1
获取:/order/1 GET GET        get?id=1
删除:/order/1 DELETE DELETE     delete?id=1
如何发送PUT请求 和 DELETE 请求呢?

  1. 需要配置 HiiddenHttpMethodFileter
  2. 需要发送POST请求
  3. 需要再发送POST请求时携带一个name="_method"的隐藏域,值为DELETER 或 PUT
    在SpringMVC 的目标方法中如何得到id呢?
    使用@PathVariable获取目标id值

SpringMvc的学习笔记

3.通过jsp页面a标签访问路径,其中post,delete,update需要使用表单传值:

SpringMvc的学习笔记

SpringMvc_@RequestParam注解:

SpringMvc的学习笔记

2.SpringMvc的学习笔记

SpringMvc_@RequestHeader注解:

1.在方法参数内写入注解RequestHeader,写上属性,以获取参数值:

SpringMvc的学习笔记

2.通过jsp页面a标签RequestMapping注解访问路径:

SpringMvc的学习笔记

SpringMvc_@CookieValue注解:

1.在方法参数写入**@CookieValue**注解,注解属性为Cookie头的相关信息:

SpringMvc的学习笔记

2.通过jsp页面a标签访问到方法路径:

SpringMvc的学习笔记

SpringMvc_Pojo作为参数:

1.创建一个user类(里面存在一个级联属性Address),并且有get,set方法,和tostring方法:

SpringMvc的学习笔记

2.创建一个Address类,并且有get,set方法,和tostring方法:

SpringMvc的学习笔记

3.通过jsp页面a标签找找到目标方法:
SpringMvc的学习笔记

SpringMvc_Servlet_使用servlet原生API作为参数:

1.可以使用Servlet原生的API作为目标方法的参数 具体支持以下参数
HttpServletRequest
HttpServletResponse
HttpSession
java.security.Principal
Locale InputStream
OutputStream
Reader
Writer

SpringMvc的学习笔记

SpringMvc_处理模型数据之ModelAndView:

1.创建一个ModelAndView对象,使用对象方法添加一个键值对:

SpringMvc的学习笔记

2.在视图页面写上键值对内容以显示对象添加的键值对内容:

success.jsp:SpringMvc的学习笔记

SpringMvc_处理模型数据之Map:

1.在方法中写入Map集合参数,使用put方法写入键值对:

SpringMvc的学习笔记

2.通过jsp页面a标签找到目标方法:
SpringMvc的学习笔记

3.在视图页面写上键值对内容以显示对象添加的键值对内容:

SpringMvc的学习笔记

SpringMvc_处理模型之SessionAttribute:

@SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(实际上使用的是value属性值),
还可以通过模型属性对象类型指定那些模型属性需要放到会话中(实际上使用的type属性值)
注意:该注解 只能放在类的上面 而不能修饰方法

1.将SessionAttributes注解写在类上,value和map的值均为map的键名,创建目标方法,参数为map对象,创建一个带4个参数的user对象,将它存在map对象内,并且放一个对象属性在map对象中:

SpringMvc的学习笔记

SpringMvc的学习笔记

2.在视图页面写上键值对内容以显示对象添加的键值对内容:
SpringMvc的学习笔记

3.通过jsp页面a标签找到目标方法:

SpringMvc的学习笔记

SpirngMvc_@ModelAttribute注解:

1.执行@ModelAttribute 注解修饰的方法:
从数据库中取出对象,把对象放入到了map中 键为:user
2.springmvc 从map 中取出 user对象,并把表单的请求参数赋给该user对象的对应属性
3,springmvc 把上述对象传入目标方法的参数

注意:在@ModelAttribute 修饰的方法中,放入到map时的键需要和目标方法入参类型的第一个字母小写的字符串一致!

1.写一个目标方法,输出修改后的值,一个带有ModelAttribute注解的存储数据库的方法:

SpringMvc的学习笔记

SpringMvc的学习笔记

2.通过jsp form表单跳转到目标方法提交修改后的值:

SpringMvc的学习笔记

SpringMvc_确定目标方法POJO类型入参的过程:

1.确定一个key:

1)若目标方法的pojo类型的参数木有使用@ModelAttributes作为修饰,则key为pojo类名第一字母的小写

2)若使用了@ModelAttributes来修饰,则key为@ModelAttributes注解的value属性值

2.在implicitModel 中查找key对应的对象,若存在,则作为入参传入

1)若在@ModelAttributes标记的方法在map中保存过,且key和1确定的key一致,则会获取到

3.若implicitModel中不存在key对应的对象,则检查当前的handler是否使用@SessionAttributes注解修饰,

若使用了该注解,且@SessionAttributes注解的value属性值中包含了key,则会从httpsession中来获取key

所对应的value值,若存在则直接传入到目标方法的入参中,若不存在则将抛出异常

  1. 若handler 没有表示@SessionAttributes注解或@SessionAttributes注解的value值中不包含key,则会通过

反射来创建pojo类型的参数,传入为目标方法的参数

5.SpringMVC 会把key 和value保存到implicitModel中,进而保存到request中

SpringMvc_注解修饰pojo类型的入参:

1.有@ModelAttribute标记的方法,会在每个目标方法执行之前被SpringMVC调用!

2.@ModelAttributez注解也可以来修饰目标方法pojo类型的入参,其value属性值有如下的作用:

1).SpringMVC会使用value 属性值在implicitModel中查找对应的对象,若存在则会直接传入到目标方法的入参中

2).SpringMVC会以value为key,pojo类型的对象为value,存入到request中

1.创建一个以@ModelAttribute注解为头的无返回值方法,将user实例化对象放到map库中:(map的键为pojo类名的第一个字母小写)

SpringMvc的学习笔记

2.将@ModelAttribute作为入参参数放到目标方法传给user的实例化对象,value值为map的键值:
SpringMvc的学习笔记

3.在视图页面写上键值对内容以显示对象添加的键值对内容:

SpringMvc的学习笔记

4.通过jsp页面访问目标方法:
SpringMvc的学习笔记

SpringMvc_重定向:

1.使用Redirect进行重定向:(forword类似)

SpringMvc的学习笔记

2.通过jsp页面a标签找到目标方法:
SpringMvc的学习笔记

SpringMvc_InitBinder_初始化Binder:

设置不显示某个字段:

SpringMvc的学习笔记

SpringMvc_JSR303数据校验:

1).如何校验?注解?

① 使用JSR 303 验证标准

② 加入hibernate validator 验证框架 的 Jar包

③ 在SpringMVC 配置文件中添加mvc:annotation-driven/

④ 需要在bean的属性上添加对应的注解 :

SpringMvc的学习笔记

SpringMvc的学习笔记

SpringMvc的学习笔记

⑤在目标方法bean类型的前面添加@valid注解

SpringMvc的学习笔记

验证出错页面重定向:

注意:需验证的bean 对象和其绑定结果对象或错误对象时成对出现的,它们之间不允许声明其他的入参

SpringMvc的学习笔记

错误消息显示:
SpringMvc的学习笔记 (path写上对应的bean属性)

SpringMvc_配置国际化显示:

1.在springmvc.xml文件里面配置国际化资源文件:

SpringMvc的学习笔记

2.在配置文件里配置键值对:(规则为:以校验注解类名为前缀,然后是bean在请求域里面的属性名,最后是校验的bean属性名)

SpringMvc的学习笔记

当输入数据类型不匹配的时候配置,可以不显示报错,而显示配置文件值的内容:

SpringMvc的学习笔记

SpringMvc_返回JSON:

1.通过JSP页面a链接跳转到目标方法,触发js执行遍历输出目标方法集合的内容:

SpringMvc的学习笔记

2.加入相应jar包,目标方法添加注解:

SpringMvc的学习笔记

SpringMvc_国际化_通过超链接切换Locale:

在映射文件里配置一个bean和一个拦截器实现超链接的切换:

SpringMvc的学习笔记

2.写上配置文件:

SpringMvc的学习笔记

SpringMvc的学习笔记

3.在jsp页面写上超链接实现多语言转换:”

SpringMvc的学习笔记

SpringMvc_自定义拦截器:

1.在配置文件里配置拦截器的bean:

SpringMvc的学习笔记

2.实现拦截器的接口类:

SpringMvc的学习笔记

拦截器方法的执行顺序以及作用:

preHandle:

SpringMvc的学习笔记

postHandle:
SpringMvc的学习笔记

afterCompletion:

SpringMvc的学习笔记

SpringMvc_异常处理_@ResponseStatusExceptionResolver注解:

对象:可以处理异常类和异常方法

1.异常类:

SpringMvc的学习笔记

2.通过调用异常的类来抛出异常:

SpringMvc的学习笔记

3.调用handler方法时抛出异常:

SpringMvc的学习笔记

SpringMvc_异常处理_SimpleMappingExceptionResolver:

1.通过配置映射文件可以实现异常页面的跳转:

SpringMvc的学习笔记

2.在jsp传入一个数组越界的值导致数组越界异常:

SpringMvc的学习笔记

3.目标方法:

SpringMvc的学习笔记

4.如有异常跳转到error页面并打印异常信息:

SpringMvc的学习笔记

SpringMvc整合Spring:

SpringMvc的学习笔记

springmvc终于学完了 nice!!!!

点赞
收藏
评论区
推荐文章
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
刚刚好 刚刚好
5个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
小森森 小森森
5个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
晴空闲云 晴空闲云
5个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
5个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Wesley13 Wesley13
1年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_28799839 helloworld_28799839
5个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue
helloworld_34035044 helloworld_34035044
8个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为