1、 什么是RestFul接口设计模式
RestFul这是一种springmvc接口的设计模式,用来区别不同类型的请求,来匹配控制器处理映射。
例如请求URL为 /test /那么中根据Get、put、post等请求方式,就可以具体映射到对应的控制器方法。
2、使用该接口设计模式后端还需要配置什么
后端使用RestFul设计风格,除了一些必备的MVC配置,还需要使用一个过滤器,叫HiddenHttpMethodResolver,配置上之后,前台传入的带有特殊标识的请求,才会被识别并将请求方式成功设置为对应的Method。
··原因参见下面前端设计注意点。
<!--配置请求方式过滤器-->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<!-- 浏览器解析的 /* 就是拦截所有的请求-->
<!-- 服务器解析的 /* 就是拦截,上下文路径下单层的所有的请求、例如/*/aa的请求就拦截不了,得使用/**-->
<url-pattern>/*</url-pattern>
</filter-mapping>
3、使用该接口设计模式前端需要注意什么
在前端设计中,一般使用jsp,或者HTML。用表单来提交请求。
···但是我们发现,表单默认提交方式有两种method={GET,POST},不指定默认为get。如果指定为其他的例如 PUT、DELETE、等请求方式,向后台发送请求发现method会被默认设置为get。
····至此,我们就需要在后台设置HiddenHTTPMethodFilter过滤器来帮我们处理这件事。
···而前端需要做的就是在提交表单中设置一个隐藏的行,提交内容包括三个参数:
··name=“_method” 这一个参数是固定的,参数值也必须是 _method;
``value=“实际的请求方式” PUT/Delete/…
···type=“hidden”------》这个是用来隐藏当前行,因为没必要让用户看到这一步操作
设置这三个
用例如下面代码第二行所示
<form action="/test1">
<input type="hidden" name="_method" value="DELETE">
用户名:<input type="text" name="username">
<input type="submit" value="提交">
</form>
除了GET和POST,其他的请求方式都需要通过这样提交。
4、Controller具体实现方式
基于RestFul模式,springmvc提供了一些注解来辨识方法的请求方式,而不是再在@RequestMapping中指定请求方式。

使用这些注解就可以代替@RequestMapping注解,并且直接显式的指定了请求匹配的请求方式。参数只需要写URL即可。
下面是四种常见的控制器方法
如果对内部其他注解不清楚,以及注解对应参数的意思不理解,可以移步到我的MVC常见注解详解中学习哦~
//使用了Rest方式写URL,即不使用?作为占位符,直接在 / 后 以 { } 添加参数即可。
//不过这种方式要对形参进行绑定就需要使用到@PathVariable注解。其次指定请求方式
@RequestMapping(value = "/test1/{username}",method ={RequestMethod.DELETE} )
public String test8( @PathVariable(value = "username") String name){
return "success";
}
//这是使用了上面说的便捷注解,不需要再指定method属性了。
@DeleteMapping (value = "/test1/{username}")
public String test9( @PathVariable(value = "username") String name){
return "success";
}
//这种方式就是原来的方式,将请求参数的绑定直接放在了形参上,使用@RequestParam注解进行绑定入参。不理解可以上上面的CSDN学习。
@RequestMapping(value = "/test8",method ={RequestMethod.DELETE} )
public String test11( @RequestParam(value = "username") String name){
return "success";
}
//这里没有使用@RequestParam注解的原因就是传入参数名和形参名一致,就可以自动入参。
@RequestMapping(value = "/test8",method ={RequestMethod.DELETE} )
public String test12(String username){
return "success";
}
注:本文章适合有一定基础的同学学习。不理解可以看我的其他文章来快速了解springmvc的快速搭建,配置文件配置,常见注解学习等。
本文介绍了RestFul接口设计模式在SpringMVC中的应用,后端配置了HiddenHttpMethodFilter解决请求方式问题,同时强调了前端表单提交的技巧。讲解了Controller的快捷注解使用和常见方法示例。

845

被折叠的 条评论
为什么被折叠?



