zoukankan      html  css  js  c++  java
  • SpringMVC笔记(七)RESTFul风格的SringMVC

    一、REST:

    即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。
    它结构清晰、符合标准、易于理解、扩展方便, 所以正得到越来越多网站的采用.
    HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。
    它们分别对应四种基本操作:
    GET 用来获 取资源,
    POST 用来新建资源,
    PUT 用来更新资源,
    DELETE 用来删除资源。

    二、示例:

     @Controller @RequestMapping("/rest") 
                 public class RestController {
                     @RequestMapping(value="/user/{id}",method=RequestMethod.GET) 
                     public String get(@PathVariable("id") Integer id){
                         System.out.println("get"+id);
                         return "/hello";
                     }
                     @RequestMapping(value="/user/{id}",method=RequestMethod.POST) 
                     public String post(@PathVariable("id") Integer id){
                         System.out.println("post"+id);
                         return "/hello"; 
                     }
                     @RequestMapping(value="/user/{id}",method=RequestMethod.PUT)
                     public String put(@PathVariable("id") Integer id){
                         System.out.println("put"+id);
                         return "/hello";
                     } 
                     @RequestMapping(value="/user/{id}",method=RequestMethod.DELETE)
                     public String delete(@PathVariable("id") Integer id){
                         System.out.println("delete"+id);
                         return "/hello";
                     }
                 }
    前端URL 请求方式: Controller
    /user/1 HTTP GET : 请求 method=RequestMethod.GET的方法
    /user/1 HTTP DELETE: 请求 method=RequestMethod.DELETE的方法
    /user/1 HTTP PUT: 请求 method=RequestMethod.PUT的方法
    /userr HTTP POST: 请求 method=RequestMethod.POST的方法

    三、浏览器只支持GET和POST请求,如何才能发起DELETE和PUT的请求呢

    浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支 持,Spring3.0  添加了一个过滤器----HiddenHttpMethodFilter,

    可以将这些请求转换 为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求。

    1.将POST请求转化为put请求和delele请求的步骤

     1).在web.xml文件中配置:

                           <!-- HiddenHttpMethodFilter过滤器可以将POST请求转化为put请求和delete请求! -->
    			<filter>
    				<filter-name>hiddenHttpMethodFilter</filter-name>
    				<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    			</filter>
    			<filter-mapping>
    				<filter-name>hiddenHttpMethodFilter</filter-name>
    				<url-pattern>/*</url-pattern>
    			</filter-mapping>
    

     2)在表单域中需要携带一个name值为_method, value值为put或者delete的参数,如下所示:

    		<form action="${pageContext.request.contextPath }/user/1" method="post">
    			<input type="hidden" name="_method" value="put"/>
    			<input type="submit" value="Submit"/>
    		</form>
    		<form action="${pageContext.request.contextPath }/user/1" method="post">
    			<input type="hidden" name="_method" value="delete"/>
    			<input type="submit" value="Submit"/>
    		</form>	   
    

     此时点击Submit按钮,两个表单会分别以put 和delete点的方式进行提交

     2.将<a>标签的请求转换成delete------get转delete
    <!--一个删除链接,为get请求-->
    <a class="delete" href="emp/${emp.id}">Delete</a>
    <!--利用js,将get请求转为DELETE请求-->
    <script type="text/javascript">
            $(function() {
                alert("hello");
                $(".delete").click(function(){
                    var href=$(this).attr("href");
                    $("form").attr("action",href).submit();
                    return false;
                });
            });
        </script>
    <!--DELETE请求细节-->
    <form action="" method="POST">
            <input type="hidden" name="_method" value="DELETE" >
    </form>
    <!--接收DELETE请求的细节-->
    @RequestMapping(value="/emp/{id}",method=RequestMethod.DELETE)
    public String delete(@PathVariable("id") Integer id){
            System.out.print(employeeDao.delete(id));
            return "redirect:/emps";
    }
    
     
  • 相关阅读:
    C#中的异常处理
    How to: Create a Windows Communication Foundation Client
    王立平--result += &quot;{&quot;;
    Gradle增量学习建筑
    android 当屏幕截图,你如何改变屏幕内容,他们俩bitmap将合并的图像被一起显示
    惊人go语言(image网站开发)
    树莓派的演奏音符3 -- LCD1602显示文章
    Linux解析内核源代码——传输控制块诞生
    Preemption Context Switches 和 Synchronization Context Switches
    folat i = 0.1; 警告
  • 原文地址:https://www.cnblogs.com/Actexpler-S/p/7425221.html
Copyright © 2011-2022 走看看