SpringMVC 学习笔记5 - 文件上传 & json数据交互 & RESTful风格

文件上传

一、导入

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/jquery.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方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值