SpringMVC入门知识7

数据的回显
提交数据失败之后,将刚刚提交的数据重新回显到提交的页面
pojo数据回显的方法:
1、SpringMVC默认对pojo数据进行回显
pojo数据传入controller方法后,SpringMVC会自动将pojo的数据放到request域,key等于pojo的类名,首字母小写
2、@ModelAttribute(""),可以指定pojo回显到页面在request中的key
@ModelAttribute("")还可以将方法的返回值一起传到页面
将最终方法的返回值放到request中的key,页面上可以得到输出
3、使用Model将提交的pojo回显到页面
model.addAttribute(arg0,arg1)
4、对于简单类型的回显,只能使用model
统一的异常处理(面试)
异常处理的思路:
预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。
系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理
SpringMVC提供全局异常处理器进行统一的异常处理
对于不同的异常类型,定义异常类:
有多少异常类定义多少异常
定义异常类继承Exception
自定义异常类,针对预期的异常,在程序中抛出此类的异常
全局异常处理器:
思路:
当系统遇到异常,我们在程序中手动抛出,dao抛给service、service抛给controller、controller抛给前端控制器,前端控制器调用全局异常处理器
全局异常处理器处理思路:
解析出异常类型,如果该异常类型是系统自定义的类型,直接取出异常信息在错误页面展示
如果异常不是系统自定义的异常类型,即运行时异常,这时构造一个自定义的异常类型(这时的信息为“未知错误”)
SpringMVC提供了一个HandlerExceptionResolver
全局异常处理器的配置:
在springmvc.xml中配置:
<bean class="" />
只要是实现了HandlerExceptionResolver接口就是全局异常处理器
如果配置两个,那么只有一个起作用
异常测试:
在dao、service、controller中任意一处需要手动抛出异常
如果是程序中手动抛出的异常,那么在错误页面会显示自定义的异常信息,如果不是手动抛出的异常,说明是个运行时异常,在错误页面只显示自定义的异常信息
抛异常的位置:
与操作业务功能相关的信息,建议在service中抛出异常
与业务功能没有关系的异常,建议在controller中抛出
只要有异常都会进到异常处理器中,通常情况下在dao层面一般不处理异常,在业务层进行业务处理
json数据的交互
为什么要进行json数据交互:
json数据格式在接口调用中,以及页面中较常用,json格式比较简单,解析比较方便
webservice接口,传输json数据,也可以传输xml数据
Spring中的json交互:
SpringMVC进行json交互:
1、请求json,输出json:
要求请求的是json串,在前端页面中需要将请求的内容转成json串,不太方便
2、请求的是key/value,输出的是json,此方法比较常用
SpringMVC需要通过json转换器进行json转换:
json转换需要的包:
jackson-core-asl.jar
jackson-mapper-asl.jar
@requestBody和@responseBody就是使用上面两个包进行json的转换
配置json转换器:
在适配器中加入messageConverters
如果使用了注解驱动来配置的话就不用对json转化器进行单独的配置
json交换的测试:
输入json串,输出是json串
页面里面使用jQuery的ajax提交json串,对输出的json结果进行解析
在方法返回值类型上添加@ResponseBody将java对象转成json输出
在方法java对象形参上添加@RequestBody将请求的json数据转成java对象
输入的是key/value,输出的是json
请求key/value时不需要指定contentType,默认就是key/value的类型
RESTful支持
什么是RESTful:
RESTful架构,是一种当前比较流行的互联网的架构
RESTful(Representational State Transfer)表现层的状态转换,相当于一种开发的理念,这种理念是对Http的一种很好的诠释
状态转化:
首先,http要求互联网任何的东西都是资源,http的get方法表示获取资源,POST表示创建资源,put更新资源,delete删除资源
RESTful的规范:
1、首先,需要对url进行规范,都写成RESTful的格式的url
特点:url简介,将参数通过url传到服务端
2、http的方法规范:
不管是添加、删除、还是更新,使用的url是一致的,如果进行删除,需要设置http的方法为delete,同理添加也一样
后台的controller方法判断http方法,如果是delete,就删除,如果是POST就执行添加
3、可以对http的contentType进行规范:
请求时指定contentType,要json数据,就设置成json格式的type
4、实际使用用到url规范就行
url模板映射:
在地址中添加{参数}属性,然后在对应的形参前面添加@PathVariable("参数"),与前面的参数对应
要想实现REST还需要配置一个REST的前端控制器,使用的地址映射用/
对静态资源的url的解析:
配置前端控制器的url-partten指定/,对静态资源的解析就出现了问题
在springmvc.xml中添加静态资源的解析方法
静态资源:
image、css、js。。。
配置方法:
<mvc:recources location="",mapping="">
上传图片
需求:
在修改商品信息页面添加上传商品图片的功能
SpringMVC对多部件类型数据的解析:
在form中提交enctype="multipart/form-data"的数据时,需要SpringMVC对这种类型的数据进行解析
需要在SpringMVC.xml中配置multipart类型解析器
如果不配置参数绑定失败
创建一个图片的虚拟目录:
在Tomcat服务器中配置虚拟目录
也可以直接修改Tomcat配置文件/config/server.xml
在图片目录中注意使用分级创建,提高I/O性能,分级一般采用日期分级创建,按照日期:
年/月/日
上传图片代码:
在controller中添加形参:MultipartFile pic_file
1、设置存储图片的物理路径
2、获取到文件的原始名称,通过getOriginalFilename()这方法取得文件的原始名称
3、生成新的图片名称:
UUID.randomUUID()+originalfilename.substring(originalfilename.lastIndexOf("."))
前面是随机数设置的名字,然后后面加上在点之后分割的文件后缀
4、将文件写入磁盘:
File file = new File("具体的路径");
pic_file.transferTo(file);
加入上传图片的jar包:
commons-fileupload.jar
commons-io.jar
注意:
关于路径的问题:
前面加/代表的就是绝对路径
前面啥都不加的时候是相对路径

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 1.Spring web mvc介绍 Spring web mvc和Struts2都属于表现层的框架,它是Spri...
    七弦桐语阅读 11,505评论 2 38
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,733评论 6 342
  • 文/亦珺 一、梦回千年 千年老林里,十五的明月高悬,已是子时,森林一片宁静,万物都已沉睡...
    亦珺阅读 327评论 2 2
  • 山间的泉流叮咚响着 小孩子拨开石头吧螃蟹找着 牵牛花依偎着篱栏笑着 你,在我身边轻轻跟着 夏季的山林是这么的清爽 ...
    梦断桃源阅读 196评论 0 0