Spring MVC添加支持Http的delete、put请求!(HiddenHttpMethodFilter)

Spring3.0之后->Spring MVC过滤器-HiddenHttpMethodFilter

SpringMVC DELETE,PUT请求报错 添加支持Http的DELETE、PUT请求

昨天看上面的博客,然后自己实践了一下,还是不行,今天早上来就用我的办法了猜

不知道为什么,虽然现在实现了但是还不知道为什么

  1. jauery好像也支持这样写了吗 type : 'DELETE',

javascript代码

  1. function DeleteFatherModule(moduleId, title)
  2. {
  3. //alert(moduleId + "" + title);
  4. if (!confirm("确认删除"" + title + ""吗?"))
  5. {
  6. return false;
  7. }
  8. //fatherModule_
  9. $("#fatherModule_"+moduleId).html("<td colspan='3'><span style='color:red'>删除操作中...</span></td>");
  10. $.ajax(
  11. {
  12. type : 'DELETE',
  13. dataType : 'json',
  14. contentType : 'application/json;charset=utf-8',
  15. url : "/sfk_BBS02/rest/fatherModule/" + moduleId,
  16. // data:{_method:'delete'},
  17. success : function(data)
  18. {
  19. // data in (true,false)
  20. if (data)
  21. {
  22. $("#fatherModule_"+moduleId).html("<td colspan='3'><span style='color:red'>删除成功!</span></td>");
  23. }
  24. else
  25. {
  26. $("#fatherModule_"+moduleId).html("<td colspan='3'><span style='color:red'>删除失败!</span></td>");
  27. }
  28. },
  29. error : function()
  30. {
  31. $("#fatherModule_"+moduleId).html("<td colspan='3'><span style='color:red'>Error!</span></td>");
  32. }
  33. });

后台代码

  1. package sfk.bbs.admin.rest;
  2.  
  3. import org.apache.log4j.Logger;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.http.HttpStatus;
  6. import org.springframework.http.ResponseEntity;
  7. import org.springframework.web.bind.annotation.PathVariable;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RequestMethod;
  10. import org.springframework.web.bind.annotation.RestController;
  11.  
  12. import sfk.bbs.admin.action.AdminIndexAction;
  13. import sfk.bbs.admin.service.AdminIndexService;
  14.  
  15. @RestController
  16. @RequestMapping("/rest")
  17. public class AdminIndexRest
  18. {
  19. private static Logger log = Logger.getLogger(AdminIndexAction.class);
  20. @Autowired
  21. private AdminIndexService adminIndexService;
  22.  
  23. @RequestMapping(value="/fatherModule/{id}", method=RequestMethod.DELETE)
  24. public ResponseEntity<Boolean> delete(@PathVariable("id") Long id)
  25. {
  26. System.out.println("success");
  27. return new ResponseEntity<Boolean>(adminIndexService.deleteFatherModule(id),HttpStatus.OK);
  28. }
  29.  
  30. }

配置文件 applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <beans xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:p="http://www.springframework.org/schema/p"
  6. xmlns:mvc="http://www.springframework.org/schema/mvc"
  7. xmlns:aop="http://www.springframework.org/schema/aop"
  8. xmlns:context="http://www.springframework.org/schema/context"
  9. xsi:schemaLocation="
  10. http://www.springframework.org/schema/beans
  11. http://www.springframework.org/schema/beans/spring-beans.xsd
  12. http://www.springframework.org/schema/mvc
  13. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  14. http://www.springframework.org/schema/aop
  15. http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
  16. http://www.springframework.org/schema/context
  17. http://www.springframework.org/schema/context/spring-context.xsd">
  18.  
  19. <!-- 扫描的包 -->
  20. <!-- <context:component-scan base-package="app04"/> -->
  21. <!-- 使用转换器 -->
  22. <!--<mvc:annotation-driven conversion-service="conversionService"/>-->
  23. <!-- 使用格式化 -->
  24. <!-- conversionService2 -->
  25. <!-- <mvc:annotation-driven conversion-service="conversionService2"/> -->
  26.  
  27. <!-- 使用注册器替代格式化 -->
  28. <!-- <mvc:annotation-driven />意思是开启使用注释的功能-->
  29. <!-- conversionService3是格式化或者转换器 -->
  30. <!-- <mvc:annotation-driven conversion-service="conversionService3"/> -->
  31.  
  32. <!-- 扫描的包 -->
  33. <context:component-scan base-package="sfk.bbs"/>
  34.  
  35. <aop:aspectj-autoproxy />
  36. <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" />
  37.  
  38. <!-- 这个的作用是让DispatcherServlet不将下列路径理解为一个request请求,
  39. 在项目中,这个是必须的,如果没有加这些就可能造成上述问题 -->
  40. <mvc:annotation-driven />
  41. <!-- <mvc:resources mapping="/css/**" location="/css/"/>
  42. <mvc:resources mapping="/js/**" location="/js/"/> -->
  43. <mvc:resources mapping="/style/**" location="/style/"/>
  44. <mvc:resources mapping="/js/**" location="/js/"/>
  45. <mvc:resources mapping="/*.html" location="/"/>
  46.  
  47. <!-- 视图解析器 -->
  48. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  49. <property name="prefix" value="/WEB-INF/pages/"/>
  50. <property name="suffix" value=".jsp"/>
  51. </bean>
  52. <!-- jdbcTemplate -->
  53. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
  54. <property name="dataSource" ref="dataSource"/>
  55. </bean>
  56.  
  57. <!-- 读取配置文件信息,在Spring的配置文件中使用EL表达式填充值 -->
  58. <context:property-placeholder location="classpath:jdbc.properties"/>
  59. <!-- 配置数据库连接池 -->
  60. <bean id="dataSourceLocal" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  61. <!-- 指定连接数据库的驱动-->
  62. <property name="driverClass" value="${jdbc.driverClassName}"/>
  63. <!-- 指定连接数据库的URL-->
  64. <property name="jdbcUrl" value="${jdbc.url}"/>
  65. <!-- 指定连接数据库的用户名-->
  66. <property name="user" value="${jdbc.username}"/>
  67. <!-- 指定连接数据库的密码-->
  68. <property name="password" value="${jdbc.password}"/>
  69. <!-- 指定连接池中保留的最大连接数. Default:15-->
  70. <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
  71. <!-- 指定连接池中保留的最小连接数-->
  72. <property name="minPoolSize" value="${jdbc.minPoolSize}"/>
  73. <!-- 指定连接池的初始化连接数 取值应在minPoolSize 与 maxPoolSize 之间.Default:3-->
  74. <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
  75. <!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0-->
  76. <property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>
  77. <!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3-->
  78. <!-- <property name="acquireIncrement" value="${jdbc.acquireIncrement}"/> -->
  79. <!-- JDBC的标准,用以控制数据源内加载的PreparedStatements数量。
  80. 但由于预缓存的statements属于单个connection而不是整个连接池所以设置这个参数需要考虑到多方面的因数.如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default:0-->
  81. <!-- <property name="maxStatements" value="${jdbc.maxStatements}"/> -->
  82. <!-- 每60秒检查所有连接池中的空闲连接.Default:0 -->
  83. <!-- <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"/> -->
  84. </bean>
  85.  
  86. <!-- <bean id="dataSourceLocal" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  87. 制定连接数据库的驱动
  88. <property name="driverClass" value="${jdbc.driverClassName}" />
  89. 制定连接数据库的URL
  90. <property name="jdbcUrl" value="${jdbc.url}" />
  91. 指定连接数据库的用户名
  92. <property name="user" value="${jdbc.username}" />
  93. 指定数据库的密码
  94. <property name="password" value="${jdbc.password}"/>
  95. 指定连接池中保留的最大连接数 default:15
  96. <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
  97. 指定连接池中保留的最小连接数
  98. <property name="minPoolSize" value="${jdbc.minPoolSize}" />
  99. 指定连接池的初始化连接数 取值应在minPoolSize 与MaxPoolSize之间,Default:3
  100. <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
  101. 最大空闲时间,60秒内未使用连接被丢弃,若为0则永不丢弃,Default:0
  102. <property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>
  103. 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. default: 3
  104. <property name="acquireIncrement" value="${jdbc.acquireIncrement}" />
  105. JDBC的标准,用以控制数据源内加载的prepareedStatement数量.但是由于预缓存的statements
  106. 属于单个connection而不是整个连接池所以色绘制这个参数需要考虑到多方面的因素,如果maxStatements
  107. 与maxStatementsPerConnection均为0,则缓存被关闭,Default:0
  108. <property name="maxStatements" value="${jdbc.maxStatements}"/>
  109. 每60秒检查所有连接池中的空闲连接default:0
  110. <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}" />
  111. </bean> -->
  112. <!-- 错误提示信息配置,用配置文件管理错误信息 -->
  113. <!-- <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
  114. <property name="basename" value="/WEB-INF/resource/messages" />
  115. </bean> -->
  116. <!-- org.springframework.context.support.ConversionServiceFactoryBean.class -->
  117. <!-- 使用转换器的bean -->
  118. <!-- <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
  119. <property name="converters">
  120. <list>
  121. <bean class="app06a.converter.StringToDateConverter" >
  122. <constructor-arg type="java.lang.String" value="MM-dd-yyyy"/>
  123. </bean>
  124. </list>
  125. </property>
  126. </bean>
  127. -->
  128. <!-- 使用Formatter的格式化 -->
  129. <!-- <bean id="conversionService2" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
  130. <property name="formatters">
  131. <set>
  132.  
  133. /springMVC/src/app06a/formatter/DateFormatter.java
  134. <bean class="app06a.formatter.DateFormatter">
  135. <constructor-arg type="java.lang.String" value="MM-dd-yyyy"/>
  136. </bean>
  137. </set>
  138. </property>
  139. </bean> -->
  140.  
  141. <!-- 使用注册器替代Formatter的格式化 -->
  142. <!-- <bean id="conversionService3" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
  143. <property name="formatterRegistrars">
  144. <set>
  145. /springMVC/src/app06a/formatter/DateFormatter.java
  146. <bean class="app06a.formatter.MyFormatterRigistrar">
  147. <constructor-arg type="java.lang.String" value="MM-dd-yyyy"/>
  148. </bean>
  149. </set>
  150. </property>
  151. </bean> -->
  152.  
  153. </beans>

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  3. <display-name>sfk_BBS02</display-name>
  4.  
  5. <!-- <context-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>classpath:applicationContext.xml</param-value>
  8. </context-param> -->
  9. <!-- <context-param>
  10. <param-name>contextConfigLocation</param-name>
  11. <param-value>/WEB-INF/resource/applicationContext.xml</param-value>
  12. </context-param> -->
  13.  
  14. <!-- config log4j first Part -->
  15. <context-param>
  16. <param-name>log4jConfigLocation</param-name>
  17. <param-value>classpath:log4j.properties</param-value>
  18. </context-param>
  19. <!-- /WEB-INF/classes/applicationContext-*.xml -->
  20.  
  21. <!-- Srping监听器 -->
  22. <!-- <listener>
  23. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  24. </listener> -->
  25.  
  26. <!-- RequestMethod.delete RequestMethod.put -->
  27. <!-- HiddenHttpMethodFilter必须作用于dispatcher前,配置这个没有起作用就不配了 -->
  28. <!-- <filter>
  29. <filter-name>HiddenHttpMethodFilter</filter-name>
  30. <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  31. </filter>
  32. <filter-mapping>
  33. <filter-name>HiddenHttpMethodFilter</filter-name>
  34. <servlet-name>springMVC</servlet-name>
  35. </filter-mapping> -->
  36.  
  37. <!-- config log4j second Part -->
  38. <!-- 加载log4j配置文件 -->
  39. <listener>
  40. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  41. </listener>
  42. <servlet>
  43. <servlet-name>springMVC</servlet-name>
  44. <servlet-class>
  45. org.springframework.web.servlet.DispatcherServlet
  46. </servlet-class>
  47. <init-param>
  48. <param-name>contextConfigLocation</param-name>
  49. <param-value>classpath:applicationContext.xml</param-value>
  50.  
  51. </init-param>
  52.  
  53. <load-on-startup>1</load-on-startup>
  54. </servlet>
  55. <!-- 有的项目中这里写的是.do,这样分发器只会分发带有.do的请求,
  56. 就可以规避将js.css,.png等文件的路径当作一个请求,当前没有写.do,就要用到
  57. <mvc:annotation-driven />
  58. <mvc:resources mapping="/css/**" location="/css/"/>
  59. 将.css等文件不当作一个请求 -->
  60. <servlet-mapping>
  61. <servlet-name>springMVC</servlet-name>
  62. <url-pattern>/</url-pattern>
  63. </servlet-mapping>
  64.  
  65. <welcome-file-list>
  66. <welcome-file>index.html</welcome-file>
  67. <welcome-file>index.htm</welcome-file>
  68. <welcome-file>index.jsp</welcome-file>
  69. <welcome-file>default.html</welcome-file>
  70. <welcome-file>default.htm</welcome-file>
  71. <welcome-file>default.jsp</welcome-file>
  72. </welcome-file-list>
  73.  
  74. </web-app>

RequestMethod.DELETE相关,如何用jquery实现RequestMethod.DELETE请求的更多相关文章

  1. 如何用jquery实现实时监控浏览器宽度

    如何用jquery实现实时监控浏览器宽度 2013-06-05 14:36匿名 | 浏览 3121 次 $(window).width();这代码只能获取浏览器刷新时的那一刻的宽度,如何才能达到实时获 ...

  2. 如何用jQuery获得select的值

    如何用jQuery获得select的值,在网上找了看了一下,下面将总结一下: 1.获取第一个option的值        $('#test option:first').val(); 2.最后一个o ...

  3. 如何用jquery获取input输入框中的值?

    如何用jquery获取<input id="test" name="test" type="text"/>中输入的值? $(&q ...

  4. jquery 拦截 post 等请求实现aop效果

    $(function(){ jQuery.extend({ put: function( url, data, callback, type ) { // shift arguments if dat ...

  5. jquery的ajax异步请求接收返回json数据

    http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...

  6. jquery ajax跨域请求详解

    本文章来给大家详细jquery中的ajax跨域请求, 在JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式.分别是JQuery的jquery.ajax jsonp格式和jque ...

  7. jQuery Ajax: $.post请求示例

    jQuery Ajax: $.post请求示例 leyangjun.html页面 <html> <head> <meta http-equiv="Content ...

  8. 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题

    前段时间做一个项目,而项目中所有的请求都要用jquery 中的ajax请求或者post请求,但是开始处理一些简单操作还好,但是自己写了一些验证就出现问题了,比如表单提交的时候,要验证帐号的唯一性,所以 ...

  9. jquery版 发同步请求 自定义头部信息 公共请求体

    //jquery版 发同步请求 function getData(url,param,fn){ var Authorization=localStorage.getItem("Authori ...

随机推荐

  1. 头像上传功能实现,PC端的需要做兼容

    暂时实现的效果: http://sandbox.runjs.cn/show/v2vkds3j <form action=""> <img id="vie ...

  2. 【WPF】FillRule

    获取或设置如何组合此 GeometryGroup 中所包含对象的相交区域. Dependency property identifier field: FillRuleProperty FillRul ...

  3. 思科产品选型pdf

    以前做工程时候想起了设备选型时候用过的一份文档. 有个小伙伴今天问起思科设备选型,恰好google到了这份文档 https://www.cisco.com/web/CN/products/pdf/04 ...

  4. php基础31:正则匹配-元字符

    <?php //2.正则表达式:元字符 $model = "/php/"; $string = "php"; // 1.元字符 [a-z] 匹配任何a-z ...

  5. 一个按钮,如果5分钟内点击再次点击给予提示操作频繁,在JS里可以这样写

    很简单. 但是,如果你要离开这个页面再进来, 就没办法限制了. 除非用cookie 储存状态 给个示例 var isLock = flase; //定义全局变量 按钮点击事件: if(isLock){ ...

  6. listview的头布局把我的ACTION_DOWN事件给吃了.....

    因为头布局的viewpager自己处理点击事件 public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) ...

  7. Java系列:《Java核心技术 卷一》学习笔记,chapter11 记录日志

    11.5 日志记录 可以通过Loger.getGlobal().info(xxxx);的方式来记录log. 11.5.2 高级日志 1)通过一个包名来 创建一个新的日志记录器. private sta ...

  8. double相加(減)结果会有些误差

    前提介绍 今天在调试代码的时候发现了一个double类型数据相减的有趣问题,148163.1 - 82692.09大家猜猜结果等于多少,经过调试最终为5471.010000000009. 是不是很奇怪 ...

  9. NetBios网络基础及编程

    开始学习(算是复习)网络编程了,第一个就是局域网的netbios协议编程. 首先了解一下什么是netbios:IBM公司为PC-Network开发的一套网络标准.,NetBIOS最广泛的应用之一就是对 ...

  10. 无光驱安装原版 windows server2008,win7 的方法,64位的。

    这几天要对一台服务器进行安装 windows server2008的系统,64位.尼玛在网上买了一个光驱迟迟不到所以只能用U盘来了 以前安装ghost的系统U盘分分钟搞定.安装原版的iso文件遇到了一 ...