Springmvc上传文件
SpringMVC的控制器响应数据和结果视图
响应返回值类型分类
String类型
方法返回值为字符串类型,可以指定逻辑视图名,被视图解析器加前缀和后缀,得到物理视图,返回给客户端
void类型
方法返回值为void时,如果方法体内没有请求转发,或重定向的操作,会报404错误
可以在方法参数处添加
HttpServletRequest request, HttpServletResponse参数,用request请求转发方式给出响应,需要的数据可以添加到request域中也可以用response来给出重定向,或者是返回Ajax请求的结果
ModelAndView类型
该对象可以作为控制器的返回值
第一个方法:
mav.addObject(String attributeName,Object attributeValue)设置返回给页面的数据,k-v格式,可以在jsp页面上用${attributeName}获得值(跟request域存值一样)返回ModelAndView类型,浏览器只是请求转发,要想jsp可以用El表达式,需要在xml头中设置:
isELIgnored="false"第二个方法:
mv.setViewName("success");用于设置逻辑视图名称,视图解析器会根据名称前往指定的视图(相当于返回String类型的字符串)
SpingMVC结果视图
视图跳转方式
控制器提供了返回String类型值时,默认就是请求转发
不过还提供两个类似命令的关键字,必须在String类型的返回值前面
return:"forward:/WEB-INF/page/success.jsp"代表请求转发到success.jsp界面,forward后面只能写实际视图,不能写成逻辑视图
return:"redirect:hello2"代表重定向到hello2这个路径下,如果重定向到jsp界面,则jsp不能写在WEB-INF下面,否则找不到
过滤静态资源
页面请求一些静态资源时不需要拦截下来,则需要在Springmvc.xml下配置,当客户端请求一些静态资源时,不拦截
<!--前端控制器,哪些静态资源不拦截--> <mvc:resources location="/css/" mapping="/css/**"/> <mvc:resources location="/images/" mapping="/images/**"/> <mvc:resources location="/js/" mapping="/js/**"/>
Ajax请求响应json数据格式
异步请求返回json数据,,在方法参数上加
@RequestBody在方法返回值上面加@ResponseBody注解,SpringMVC可以自动将返回值类型转换成json数据类型。@ResponseBody也可以加到该方法上,一样的效果
必须导入jackson相关的三个jar包,否则会报415异常
文件上传
上传的三个要求
method方法必须是POST
form表单的enctype取值必须是multipart/form-data,enctype:表单请求正文的请求
提供一个表单域:
<input type="file"/>传统方式
springMVC上传文件原理
MultipartFile:SpringMVC文件上传核心接口对象需要在
springmvc.xml中配置方法中MultipartFile 名称(需要跟前台 file 域的name属性一致)(upload)
MultipartFile 有一个方法
getOriginalFilename()获取文件名称
跨服务器上传文件
异常处理机制
自己定义一个异常类SysException
自定义一个异常处理器实现
HandlerExceptionResolver接口,重写抽象方法在 springmvc.xml 配置文件中配置异常处理器bean
需要使用的时候,在catch代码块里 throw new 自定义异常(信息)
最后更新于
这有帮助吗?