SpringMVC 学习笔记5 - 文件上传 & json数据交互 & RESTful风格
2017-11-02 07:43
801 查看
文件上传
一、导入
Jar包:commons-fileupload
commons-io
二、springmvc配置文件配置上传模块
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--限制大小为2M--> <property name="maxUploadSize" value="2097152"/> </bean>
三、定义form表单
表单属性:enctype="multipart/form-data" 表单文件域: <input type="file" name="imgFile1" value="上传"> <input type="file" name="imgFile2" value="上传">
四、在控制方法中定义形参MultipartFile获取上传的文件,形参名与文件域名一致
常用方法: multipartFile.getOriginalFilename();// 获取上传文件名 multipartFile.transferTo(new File(path));// 保存
json数据交互
请求Json数据转换为POJO对象
POJO形需参要注解@RequestBody 注意:整个请求体都必须是Josn文本
POJO对象转换为json文本作为响应体
控制方法的返回值类型改为POJO类,并在控制方法上注解@ResponseBody。
使用示例:
function send() { $.ajax({ type: "post", url: "/json.action", contentType: "application/json;charset=UTF-8", data: '{"id":1,"name":"wang","pass":"123","sex":0,"score":0.0}', success: function (data) { alert(data.name + " " + data.pass);// "rong 123" } }); }
@ResponseBody @RequestMapping("/json.action") public User getJson(@RequestBody User user) { LogUtil.printEntity(user); user.setName("rong"); return user; }
RESTful风格
什么是RESUful
RESTful(即Representational State Transfer的缩写)其实是一个开发理念,是对http的很好的诠释。 RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以得到越来越多网站的采用。
RESTful架构
每一个URI代表一种资源 客户端和服务器之间,传递这种资源的某种表现层 客户端通过四个HTTP动词,对服务器端资源进行操作 GET 获取资源 PUT 添加资源 POST 修改资源 DELETE 删除资源
REST与非REST的对比
非REST的url: http://...../queryItems.action?id=001&type=T01 REST的url风格: http://..../items/001
使用步骤
1. web.xml中Spring的DispatcherServlet的url-pattern设置为"/",代表处理所有静态资源(除了jsp和默认主页)请求和controller请求。 说明:设置为/而不是/*是为了避免jsp页面的请求也被DispatcherServlet拦截到。因为jsp必须由tomcat处理,如果由Spring处理就仅仅是文本文件。 注意:这时浏览器访问静态资源会出现问题,需要在springmvc.xml中配置: <mvc:resources mapping="/js/**" location="/js/"/> <mvc:resources mapping="/css/**" location="/css/"/> 原因:Tomcat把请求如/js/jqu 97c0 ery.js交给Spring的DispatcherServlet处理, Spring不知道这是静态资源,就找匹配的控制方法,找不到了,就显示404。 如果进行了以上配置,当路径开头是/js/时,Spring就知道这是静态资源并且 会在/js/**下寻找对应的文件并返回。(/js/**代表) 注意:mapping必须是/js/**,而不能是/js/*。后者访问/js/util/TextUtil.js会报404,而前者正常访问。 /js/**代表js目录及其子目录,/js/*仅仅代表js目录。 2. 请求时的增删查改,使用url是一致的,如果进行删除,需要设置请求方法为delete,其他同理。 注意:请求时需要指定contentType,如果要json数据,设置成json格式的type。 3. 处理请求的controller方法: 1. 注解的method参数规定http方法,如果是delete执行删除,如果是post执行添加。 2. 注解的value的格式为/shop/{sid}/goods/{gid},然后在形参shopId中注解@PathVariable("sid"),goodsId同理。 注意:如果@PathVariable没有value值,则url变量名与形参变量名必须相同。
在使用过程中,发现form表单不支持put和delete方法,解决方法如下:
方法一:使用Spring自带的隐藏方法域读取过滤器
1. web.xml配置org.springframework.web.filter.HiddenHttpMethodFilter过滤器 2. form表单添加一个隐藏域:<input type="hidden" name="_method" value="delete"/>
方法二:使用Spring的form标签
<%@taglib uri=”http://www.springframework.org/tags/form” prefix=”form” %>
…
参照:
http://blog.csdn.net/ruangong1203/article/details/51050586 - spring MVC配置form支持PUT和DELETE方法
相关文章推荐
- 【SpringMVC注解开发】上传图片---json数据交互学习笔记十
- SpringMVC——返回JSON数据&&文件上传下载
- SpringMVC——返回JSON数据&&文件上传下载
- springmvc学习笔记(18)-json数据交互
- springmvc学习笔记(18)-json数据交互
- springMVC学习(11)-json数据交互和RESTful支持
- 迟到的总结(四)--springmvc的系统学习之文件上传、ajax&json处理
- json数据交互---SpringMVC学习笔记(十二)
- SpringMVC之json数据交互,RestFul风格与拦截器实现
- springmvc学习笔记(18)-json数据交互
- JAVAWEB开发之SpringMVC详解(二)——高级开发、数据回显、参数绑定集合、图片上传、json交互、validation校验、异常处理、RESTful支持、拦截器
- json数据交互---SpringMVC学习笔记(十二)
- SpringMVC(四)-- springmvc的系统学习之文件上传、ajax&json处理
- 框架 day69 SpringMVC高级(Validation校验,数据回显,上传,json数据交互,RESTful支持,拦截器)
- Spring学习笔记2——表单数据验证、文件上传
- springMVC学习笔记---day04-上传图片、JSON转对象、校验、全局异常、拦截器、静态资源
- SpringMVC_json数据交互笔记
- SpringMVC中文件上传和json数据配置
- springmvc学习笔记--支持文件上传
- springMVC学习笔记---文件的上传和下载