HiddenHttpMethodFilter和HttpPutFormContentFilter的使用

HiddenHttpMethodFilter的使用

(1)浏览器端的form表单只支持GET与POST这两个值,而不支持DELETE、PUT等,就算你硬要写成PUT它也识别不了,会默认用POST发送,

@RequestMapping(value="/emp/{id}",method=RequestMethod.PUT)

public String update(Employee employee){//.... }

那么当要请求springmvc中PUT类型的接口时,请求不到,该怎么解决呢?

可以用js,除了js,spring3提供啦HiddenHttpMethodFilter过滤器来解决这个问题。

第一步:在web.xml中配置过滤器

<!-- 配置可以把 POST 请求转为 PUT、DELETE 请求的 Filter -->

<filter>

    <filter-name>HiddenHttpMethodFilter</filter-name>

    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>

</filter>

<filter-mapping>

    <filter-name>HiddenHttpMethodFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

第二步:修改form表单

有两种做法都能达到效果:

用spring的form标签,可以直接修改method属性为PUT:

<form:form action="${url}" method="PUT" ">...<form:form>

用HTML的form标签,则在表单中添加隐藏域“_method“字段,后台都能接收:

<from method="PUT" ...>

    <input type="hidden" name="_method" value="PUT"/>

</from>

 

HttpPutFormContentFilter的使用

浏览器端的form表单只支持GET与POST,而非浏览器客户端可是能发送PUT等其他类型的请求,而Servlet规范要求ServletRequest.getParameter *()系列方法只能获取POST请求的参数,怎么办?

装个过滤器:

第一步:在web.xml中配置过滤器

<!-- 支持PATCH、PUT请求: 此过滤器只能接受enctype值为application/x-www-form-urlencoded的表单 -->

<filter>

    <filter-name>httpPutFormFilter</filter-name>

    <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>

</filter>

<filter-mapping>

    <filter-name>httpPutFormFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

第二步:发送接收

//后端代码

@RequestMapping(value="/emp/{id}",method=RequestMethod.PUT)

public String update(Employee employee){

    //....

}

//前端代码

//注意:jquery发送ajax的PUT请求,有些浏览器课程不支持。

$.ajax({
    url:"/emp/1",
    type:"PUT",
    data:{
        id:1,
        lastName:'zhoutian',
        email:'123@qq.com',
        birth:'2015-10-10',
    },
    success:function(result){
        alert(result);
    }

});

//如果不配置HttpPutFormContentFilter过滤器,Employee 对象只能接收到id值,因为id值是从路径上传递的。

===================================================================================

小说是否精彩,不是由开头决定的。

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值