RESTful架构与SpringMVC框架的结合使用以及PUT、DELETE

本文介绍如何在SpringMVC框架中实现RESTful风格的服务,包括配置HiddenHttpMethodFilter过滤器来支持HTTP方法PUT和DELETE,以及在控制器中定义对应的处理方法。

步骤:

  1. 在web.xml文件配置过滤器HiddenHttpMethodFilter
  2. 在controller中设置与调用

详细讲解:

配置过滤器HiddenHttpMethodFilter

    <filter>
  		<filter-name>methodFilter</filter-name>
  		<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
    	<filter-name>methodFilter</filter-name>
  		<url-pattern>/*</url-pattern>
    </filter-mapping>

关注源码中的doFilterInternal

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
			throws ServletException, IOException {

		HttpServletRequest requestToUse = request;

		if ("POST".equals(request.getMethod()) && request.getAttribute(WebUtils.ERROR_EXCEPTION_ATTRIBUTE) == null) {
			String paramValue = request.getParameter(this.methodParam);
			if (StringUtils.hasLength(paramValue)) {
				requestToUse = new HttpMethodRequestWrapper(request, paramValue);
			}
		}

		filterChain.doFilter(requestToUse, response);
	}
里面高亮的代码就是获取请求方式,默认是get

而这个methodParam就是通过前端参数传过来的值来判断PUT、DELETE的

以下是前端页面表格中_method的值,对应的是DELETE

<form action="springmvc/testRest/1" method="post">
		<input type="hidden" name="_method" value="DELETE">
		<input type="submit" value="restDelete">
	</form>


在SpringMVC中调用

@Controller
@RequestMapping("/springmvc")
public class Hello {
	private static final String SUCCESS = "success";
/**
	 * 最终的视图:
	 * 	prefix+returnValue+suffix
	 * 	/WEB-INF/views/success.jsp
	 */
/**
	 * https://www.douyu.com/485503 restful风格
	 * {roomId}占位符
	 * 两种命名情况
	 * 1.参数的名字和占位符的名字保持一致
	 * 2.@PathVariable中的名字和占位符中的名字一致,参数的名字就任意
	 * @return
	 */
/**
	 *  /testRest    POST  新增
	 * /testRest/1   GET 获取
	 * /testRest/1   PUT 更新
	 * /testRest/1   DELETE 删除
	 * 
	 * @param id
	 * @return
	 */
	@RequestMapping("/testRest/{id}")
	public String testRestGet(@PathVariable Integer id){
		System.out.println("testRestGet:"+id);
		return SUCCESS;
	}
	@RequestMapping(value = "/testRest",method = RequestMethod.POST)
	public String testRestPost(){
		System.out.println("testRestPost:");
		return SUCCESS;
	}
	
	@RequestMapping(value = "/testRest/{id}",method = RequestMethod.PUT)
	public String testRestPut(@PathVariable Integer id){
		System.out.println("testRestPut:"+id);
		return SUCCESS;
	}
	@RequestMapping(value = "/testRest/{id}",method = RequestMethod.DELETE)
	public String testRestDelete(@PathVariable Integer id){
		System.out.println("testRestDelete:"+id);
		return SUCCESS;
	}
	
}


单向双向V2G 环境下分布式电源电动汽车充电站联合配置方法(Matlab代码实现)内容概要:本文介绍了在单向和双向V2G(Vehicle-to-Grid)环境下,分布式电源电动汽车充电站的联合配置方法,并提供了基于Matlab的代码实现。研究涵盖电力系统优化、可再生能源接入、电动汽车充放电调度、储能配置及微电网经济调度等多个关键技术领域,重点探讨了在不同电价机制和需求响应策略下,如何通过智能优化算法实现充电站分布式电源的协同规划运行优化。文中还展示了多种应用场景,如有序充电调度、鲁棒优化模型、多目标优化算法(如NSGA-II、粒子群算法)在电力系统中的实际应用,体现了较强的工程实践价值和技术综合性。; 适合人群:具备电力系统、新能源、智能优化算法等相关背景的科研人员、研究生及从事能源系统规划优化的工程技术人员;熟悉Matlab/Simulink仿真工具者更佳。; 使用场景及目标:①用于科研项目中关于电动汽车分布式电源协同配置的模型构建仿真验证;②支持毕业论文、期刊投稿中的案例分析算法对比;③指导实际电力系统中充电站布局能源调度的优化设计。; 阅读建议:建议结合文中提供的Matlab代码具体案例进行同步实践,重点关注优化模型的数学建模过程算法实现细节,同时可参考文末网盘资源获取完整代码数据集以提升学习效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值