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

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

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

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

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

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

javascript代码

function DeleteFatherModule(moduleId, title)
{
//alert(moduleId + "" + title);
if (!confirm("确认删除"" + title + ""吗?"))
{
return false;
}
//fatherModule_
$("#fatherModule_"+moduleId).html("<td colspan='3'><span style='color:red'>删除操作中...</span></td>");
$.ajax(
{
type : 'DELETE',
dataType : 'json',
contentType : 'application/json;charset=utf-8',
url : "/sfk_BBS02/rest/fatherModule/" + moduleId,
// data:{_method:'delete'},
success : function(data)
{
// data in (true,false)
if (data)
{
$("#fatherModule_"+moduleId).html("<td colspan='3'><span style='color:red'>删除成功!</span></td>");
}
else
{
$("#fatherModule_"+moduleId).html("<td colspan='3'><span style='color:red'>删除失败!</span></td>");
}
},
error : function()
{
$("#fatherModule_"+moduleId).html("<td colspan='3'><span style='color:red'>Error!</span></td>");
}
});

后台代码

package sfk.bbs.admin.rest;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import sfk.bbs.admin.action.AdminIndexAction;
import sfk.bbs.admin.service.AdminIndexService; @RestController
@RequestMapping("/rest")
public class AdminIndexRest
{
private static Logger log = Logger.getLogger(AdminIndexAction.class);
@Autowired
private AdminIndexService adminIndexService; @RequestMapping(value="/fatherModule/{id}", method=RequestMethod.DELETE)
public ResponseEntity<Boolean> delete(@PathVariable("id") Long id)
{
System.out.println("success");
return new ResponseEntity<Boolean>(adminIndexService.deleteFatherModule(id),HttpStatus.OK);
} }

配置文件 applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描的包 -->
<!-- <context:component-scan base-package="app04"/> -->
<!-- 使用转换器 -->
<!--<mvc:annotation-driven conversion-service="conversionService"/>-->
<!-- 使用格式化 -->
<!-- conversionService2 -->
<!-- <mvc:annotation-driven conversion-service="conversionService2"/> --> <!-- 使用注册器替代格式化 -->
<!-- <mvc:annotation-driven />意思是开启使用注释的功能-->
<!-- conversionService3是格式化或者转换器 -->
<!-- <mvc:annotation-driven conversion-service="conversionService3"/> --> <!-- 扫描的包 -->
<context:component-scan base-package="sfk.bbs"/> <aop:aspectj-autoproxy />
<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" /> <!-- 这个的作用是让DispatcherServlet不将下列路径理解为一个request请求,
在项目中,这个是必须的,如果没有加这些就可能造成上述问题 -->
<mvc:annotation-driven />
<!-- <mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/js/**" location="/js/"/> -->
<mvc:resources mapping="/style/**" location="/style/"/>
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/*.html" location="/"/> <!-- 视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
<property name="dataSource" ref="dataSource"/>
</bean> <!-- 读取配置文件信息,在Spring的配置文件中使用EL表达式填充值 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置数据库连接池 -->
<bean id="dataSourceLocal" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 指定连接数据库的驱动-->
<property name="driverClass" value="${jdbc.driverClassName}"/>
<!-- 指定连接数据库的URL-->
<property name="jdbcUrl" value="${jdbc.url}"/>
<!-- 指定连接数据库的用户名-->
<property name="user" value="${jdbc.username}"/>
<!-- 指定连接数据库的密码-->
<property name="password" value="${jdbc.password}"/>
<!-- 指定连接池中保留的最大连接数. Default:15-->
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
<!-- 指定连接池中保留的最小连接数-->
<property name="minPoolSize" value="${jdbc.minPoolSize}"/>
<!-- 指定连接池的初始化连接数 取值应在minPoolSize 与 maxPoolSize 之间.Default:3-->
<property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
<!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0-->
<property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>
<!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3-->
<!-- <property name="acquireIncrement" value="${jdbc.acquireIncrement}"/> -->
<!-- JDBC的标准,用以控制数据源内加载的PreparedStatements数量。
但由于预缓存的statements属于单个connection而不是整个连接池所以设置这个参数需要考虑到多方面的因数.如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default:0-->
<!-- <property name="maxStatements" value="${jdbc.maxStatements}"/> -->
<!-- 每60秒检查所有连接池中的空闲连接.Default:0 -->
<!-- <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"/> -->
</bean> <!-- <bean id="dataSourceLocal" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
制定连接数据库的驱动
<property name="driverClass" value="${jdbc.driverClassName}" />
制定连接数据库的URL
<property name="jdbcUrl" value="${jdbc.url}" />
指定连接数据库的用户名
<property name="user" value="${jdbc.username}" />
指定数据库的密码
<property name="password" value="${jdbc.password}"/>
指定连接池中保留的最大连接数 default:15
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
指定连接池中保留的最小连接数
<property name="minPoolSize" value="${jdbc.minPoolSize}" />
指定连接池的初始化连接数 取值应在minPoolSize 与MaxPoolSize之间,Default:3
<property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
最大空闲时间,60秒内未使用连接被丢弃,若为0则永不丢弃,Default:0
<property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>
当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. default: 3
<property name="acquireIncrement" value="${jdbc.acquireIncrement}" />
JDBC的标准,用以控制数据源内加载的prepareedStatement数量.但是由于预缓存的statements
属于单个connection而不是整个连接池所以色绘制这个参数需要考虑到多方面的因素,如果maxStatements
与maxStatementsPerConnection均为0,则缓存被关闭,Default:0
<property name="maxStatements" value="${jdbc.maxStatements}"/>
每60秒检查所有连接池中的空闲连接default:0
<property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}" />
</bean> -->
<!-- 错误提示信息配置,用配置文件管理错误信息 -->
<!-- <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/resource/messages" />
</bean> -->
<!-- org.springframework.context.support.ConversionServiceFactoryBean.class -->
<!-- 使用转换器的bean -->
<!-- <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="app06a.converter.StringToDateConverter" >
<constructor-arg type="java.lang.String" value="MM-dd-yyyy"/>
</bean>
</list>
</property>
</bean>
-->
<!-- 使用Formatter的格式化 -->
<!-- <bean id="conversionService2" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<set> /springMVC/src/app06a/formatter/DateFormatter.java
<bean class="app06a.formatter.DateFormatter">
<constructor-arg type="java.lang.String" value="MM-dd-yyyy"/>
</bean>
</set>
</property>
</bean> --> <!-- 使用注册器替代Formatter的格式化 -->
<!-- <bean id="conversionService3" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatterRegistrars">
<set>
/springMVC/src/app06a/formatter/DateFormatter.java
<bean class="app06a.formatter.MyFormatterRigistrar">
<constructor-arg type="java.lang.String" value="MM-dd-yyyy"/>
</bean>
</set>
</property>
</bean> --> </beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<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">
<display-name>sfk_BBS02</display-name> <!-- <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param> -->
<!-- <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/resource/applicationContext.xml</param-value>
</context-param> --> <!-- config log4j first Part -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<!-- /WEB-INF/classes/applicationContext-*.xml --> <!-- Srping监听器 -->
<!-- <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> --> <!-- RequestMethod.delete RequestMethod.put -->
<!-- HiddenHttpMethodFilter必须作用于dispatcher前,配置这个没有起作用就不配了 -->
<!-- <filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<servlet-name>springMVC</servlet-name>
</filter-mapping> --> <!-- config log4j second Part -->
<!-- 加载log4j配置文件 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup>
</servlet>
<!-- 有的项目中这里写的是.do,这样分发器只会分发带有.do的请求,
就可以规避将js.css,.png等文件的路径当作一个请求,当前没有写.do,就要用到
<mvc:annotation-driven />
<mvc:resources mapping="/css/**" location="/css/"/>
将.css等文件不当作一个请求 -->
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> </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. Unity 2D Touch Movement

    Demo试玩(Kongregate既然也有广告时间了 --!)http://www.kongregate.com/games/zhaoqingqing/2d-touch-movement 操作步骤 1 ...

  2. Linux 删除文件中某一行的方法

    如果有一个abc.txt文件,内容是: aaa bbb ccc ddd eee fff 如果要删除aaa,那么脚本可以这样写: sed -i '/aaa/d' abc.txt 如果删除的是一个变量的值 ...

  3. java11-4 字符串的遍历以及字符串中各类字符的统计

    1.需求:获取字符串中的每一个字符   分析: A:如何能够拿到每一个字符呢?  char charAt(int index) B:我怎么知道字符到底有多少个呢? int length() publi ...

  4. 实例化Model的三种方式

  5. 关于Java多态

    什么是多态 同一个实现接口,使用不同的实例而执行不同的操作 子类转换成父类的规则: *将一个父类的引用指向一个子类对象时,称为上转型,自动进行类型转换 *此时通过父类引用变量调用的方法是子类覆盖或继承 ...

  6. 使用EasyUI要引入哪些文件

    使用EasyUI,一般需要导入如下文件 <link rel="stylesheet" type="text/css" href="../reso ...

  7. 在线运行Javascript,Jquery,HTML,CSS代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xht ...

  8. C语言 数组做函数参数退化为指针的技术推演

    //数组做函数参数退化为指针的技术推演 #include<stdio.h> #include<stdlib.h> #include<string.h> //一维数组 ...

  9. 这些HTML、CSS知识点,面试和平时开发都需要 (转)

    http://www.cnblogs.com/w-wanglei/p/5414979.html No1.HTML 1.网页结构 网页结构一般都包含文档声明DOCTYPE,并且在head中的meta应该 ...

  10. warning: LF will be replaced by CRLF

    一. Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符.这个功能的选项如下: false - 不做任何检查warn - 在提交时检查并警告t ...