SpringMVC

@RequestMapping

1@RequestMapping映射请求

  • SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些URL请求
  • 在控制器的类定义及方法处都可标注
    @RequeMapping
    -类定义处:提供初步的请求映射信息。相对于WEB应用的根目录。
    -方法处:提供进一步的细分映射信息。相对于类定义处的URL。若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录。

  • DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理

2 使用@RequestMapping映射请求参数、请求方法或请求头

  • 标准的HTTP请求报头
    这里写图片描述

  • @RequestMapping的value,method,params及heads分别表示请求URL、请求方法、请求参数及请求头的映射条件,他们之间是的关系,联合使用多个条件可让请求映射更加精确化。

  • params和headers支持简单的表达式:
    -param1:表示请求必须包含名为param1的请求参数
    -!param1:表示请求不能包含名为param1的请求参数
    -param1!=value1:表示请求包含名为param1的请求参数,但其值不能为value1
    -{“param1=value1”,”param2”}:请求必须包含名为param1和param2的两个请求参数,且param1参数的值必须为value1
@RequestMapping(value="/testMethod",method=RequestMethod.POST,params={"username","!age=10"})

@PathVariable 映射URL绑定的占位符

  通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中:URL中的{xxx}占位符可以通过@PathVariable(“xxx”)绑定到操作方法的入参中。

    @RequestMapping("/testPathVariable/{id}")
    public String testPathVariable(@PathVariable("id") Integer id){
        System.out.println(id);
        return "success";
    }

REST

  REST即Representational State Transfer,(资源)表现层状态转化,是目前最流行的一种互联网软件架构。结构清晰,符合标准,易于理解,扩展方便。 

  • 资源(Resources):网络上的一个实体或者说是网络上的一个具体信息,可以是一段文本,一张图片,一首歌,一种服务,是一种具体的存在。可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取资源,访问它的URI就可以,因此URI即为每一个资源的独一无二的识别符。
  • 表现层(Represetation):把资源具体呈现出来的形式,叫做它的表现层。比如,文本可以用txt格式表现,也可以用HTML格式,XML格式,JSON格式表现,甚至可以采用二进制格式。
  • 状态转化(State Transfer):没发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态的协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态转化”。而这种转化是建立在表现层之上的,所以就是“表现层的状态转化”。具体说就是HTTP协议里面,四个表示操作方式的动词:GET(获取资源),POST(新建资源),PUT(更新资源),DELETE(删除资源)。

请求处理方法签名

  Spring MVC通过分析处理方法的签名,将HTTP请求信息绑定到处理方法的相应入参中。可以对方法及方法入参标注相应的注解(@PathVariable、@RequestParam、@RequestHeader)、Spring MVC框架会将HTTP请求的信息绑定到相应的方法入参中,并根据方法的返回值类型做出相应的后续处理。

@RequesParam绑定请求参数值
  在处理方法的入参处使用@RequestParam可以把请求参数传递给请求方法:① value表示参数名;② required表示是否必须。默认为true,表示请求参数中必须包含对应的参数,若不存在则抛出异常;③使用defaultValue设定请求参数的默认值,则当required=false时,若请求的url没有传该参数进来,不会因为改参数不存在而报错。

    @RequestMapping(value = "/testRequestParam")
    public String testRequestParam(@RequestParam(value = "username") String un,
    @RequestParam(value = "age",required = false, defaultValue = "0") int age){
        System.out.println("username: " + un + ",age: "+age);
        return "success";
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值