springmvc(2)

17 篇文章 0 订阅

响应数据和结果视图

字符串

controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。
@RequestMapping中指定是逻辑视图名通过视图解析器,解析为物理路径

void

servlet原生API可以作为控制器方法的参数
1 使用request转向页面
2 使用response进行重定向
3 还可以使用response指定相应结果,例如相应json数据

ModelAndView

ModelAndView 是SpringMVC 为我们提供的一个对象,该对象也可以用作控制器方法的返回值

转发和重定向

转发
当指定控制器方法的返回值类型是String时默认就为转发
重定向
当指定控制器方法的返回值类型是String时,需要在返回值中使用redirect:

@ResponseBody注解相应json数据

使用@ResponseBody 注解实现将controller 方法返回对象转换为json 响应给客户端
Springmvc 默认用MappingJacksonHttpMessageConverter 对json 数据进行转换,需要加入jackson 的包。

SpringMVC 实现文件上传

文件上传的必要前提
1 form表单的enctype必须是multipart/form-data(默认为application/x-www-form-urlencoded),enctype属性是指定form表单正文的类型。
2 method为post
3 提供一个文件选择域<input type="file"/>

文件上传原理分析
1 当entype不是默认类型时,request.getParamter()方法失效。
2 当entype是默认类型时,form的正文内容是key=value的键值对形式。
3 当entype为multipart/form-data时,form内容是MIME类型。(分界符,协议头,协议正文,协议类型)

传统方式的文件上传(文件和应用在同一服务器)
1 将文件上传的jar包放在lib目录下
2 编写上传文件的jsp页面
3 编写controller类
	三个参数:文件名,文件,HttpServletRequest
	1 获取原始文件名 2获得文件后缀名  3获取一个随机数 4 文件名+随机数+"."+后缀  组成上传文件的文件名
	5 获取文件上传路径 6 解决一个文件夹下文件过多的问题:通过将当前日期加在上传路径上来得到一个子目录  7 上传文件:文件.transferTo(目录,新文件名)
4 在springmvc.xml中配置文件解析器CommonsMultipartResolver,解析器的名字必须是multipartResolver,并设置属性如文件上传的最大尺寸5MB
springmvc 跨服务器方式的文件上传
1 确保接收文件的服务器接收写入操作
2 导入jar包,多了jersey jar包
3 编写controller类
	两个参数:文件名 文件
	通过一个常量写明上传文件的目的服务器路径
	通过sun公司提供的jersey的client对象实现文件上传		
4 编写上传文件的jsp界面
5 在springmvc.xml中配置上传文件解析器

SpringMVC 中的异常处理

异常包括两类:预期异常和运行时异常 前者通过捕获异常而获得异常信息,后者主要通过规范编码,测试来减少异常
dao.service.controller出现异常都向上抛出,通过springmvc的前端控制器交由异常处理器来处理异常
1 编写异常类
2 自定义异常处理器 implements HandlerExceptionResolver
3 编写还回的异常jsp界面
4 将自定义的异常处理器在springmvc中进行配置

SpringMVC 中的拦截器

AOP思想的具体应用
springmvc的拦截器类似于servlet的filter,对处理器进行一些预处理和后处理
两则区别:是否所有java web均可用,拦截的内容
1 自定义springmvc连接器必须实现HandlerInterceptor接口,覆盖三个方法
preHandle 一开始调用
postHandle 在处理器完成,DispatcherHandler向客户端返回响应前调用。可以在该方法中对用户请求request进行处理
afterCompletion 在DispatcherHandler完全处理完请求后被调用。可以在此方法中做一些资源清理工作
2 在springmvc中配置拦截器,并指定拦截的文件路径

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值