`

在jsp中渲染隐藏的方法域

    博客分类:
  • jsp
阅读更多

相信大家都遇到过在浏览器中表单提交的时候如果使用post和get是完全没有问题的,但是你使用delete和put方式提交,能够成功吗?

目前html5和一些新的浏览器支持所有的http方法,但是不是全部浏览器都支持,这个时候你如果还是想通过浏览器进行提交该怎么办了?

 

哈哈,不绕圈子了
html表单中,将put和delet请求伪装成post请求就可以了,关键是创建一个带有隐藏域并且method为post的表单。例如下面:

<form method="post">

     <input type="hidden" name="_method" value=“delete"/>

     .......

</form>

 

下面还有一种更简单的方式:

当使用spring 的表单绑定库时,<sf:form>会让其变得更加简单。你可以讲method属性设置为期望的HTTP方法,<sf:form>将为你隐藏域:

<sf:form method="delete" modelAttribute="spitter">

</sf:form>

 

当然你的服务器端还是应该做相应的配置。

web.xml

<filter>

   <filter-name>httpMethodFilter</filter-name>

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

</filter>

<filter-mapping>

    <filter-name>httpMethodFilter</filter-name>

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

</filter-mapping>

这里我们将HiddenHttpMethodFilter匹配到/*模式,这样所有URL的请求在到达DispatcherServlet前都会经过HiddenHttpMethodFilter。

注:通过非浏览器发送的请求以及RestTemplate发送的请求,没有必要包装成post,因此他们都支持所有的HTTP请求方式。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics