Spring MVC 基于Method的映射规则(注解版)

在Restful风格的web开发中,根据不一样的请求方法使用相应的控制器处理逻辑成为核心需求,下面就看看如何在Spring MVC中识别不一样的请求方法。web

请求方法

在Http中,请求的方法有不少种,最多见的就是GET、POST,他们的差别就不过多赘述了。因为Restful概念的兴起,即便用Url的不一样请求方法来控制业务方法,不少请求方法都开始流行起来,好比PUT、DELETE等等。spring

那么就先介绍下各个请求方法的使用场景吧!安全

GET

平时网页的一些基本的URL都是GET请求的,用于执行查询操做。
可是因为GET中URL是有长度的限制的,而GET会把全部的参数都放在URL中,好比服务器

xxx?name=xingoo

所以就会有下面的问题:app

  • 1 数据都明文暴露,用户能够直接看到
  • 2 数据长度有限制

POST

因为上面GET的缺点,POST正好弥补了这些问题。POST方法把数据都存放在body里面,这样即突破了长度的限制;又保证用户没法直接看到。在使用表单时,比较经常使用post

HEAD请求只会返回首部的信息,不会返回相应体。一般用于测试数据是否存在、当作心跳检测等等。测试

PUT

与GET相反,用于改变某些内容。code

DELETE

删除某些资源资源

TRACE

能够理解成,咱们为了看看一条请求在到达服务前数据发生了什么变化。可使用这个命令,它会在最后一站返回原始信息,这样就能够观察到中间是否修改过请求。(常常会用于跨站攻击,因此有必定的安全隐患)开发

OPTIONS

询问服务器支持的方法。

PATCH

这个方法不太常见,是servlet 3.0提供的方法,主要用于更新部分字段。与PUT方法相比,PUT提交的至关于所有数据的更新,相似于update;而PATCH则至关于更新部分字段,若是数据不存在则新建,有点相似于neworupdate。

Spring中的使用方法

在Spring MVC中,RequestMethod提供了方法的集合:

public enum RequestMethod {
    GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
}

在控制器中,咱们能够经过设置RequestMapping的method方法,改变接收数据controller:

@Controller
public class HelloController {
    @RequestMapping(value="/test",method=RequestMethod.GET)
    public @ResponseBody String get(){
        return "from get";
    }
    @RequestMapping(value="/test",method=RequestMethod.POST)
    public @ResponseBody String post(){
        return "from post";
    }
}

虽然上面的Url是同样的,可是因为请求方法不一样,他们会根据请求方法使用相应的控制器方法处理请求。

相关文章
相关标签/搜索