数据的回显
提交数据失败之后,将刚刚提交的数据重新回显到提交的页面
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
注意:
关于路径的问题:
前面加/代表的就是绝对路径
前面啥都不加的时候是相对路径
SpringMVC入门知识7
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...