zoukankan      html  css  js  c++  java
  • Spring MVC请求到处理方法注解配置的几种方式

    • @RequestMapping

    这个是最常用的注解,可以配置在类上,也可以配置在方法上,两个一起作用组成方法能够响应的请求路径,举例如下

     1 package org.zln.myWeb.controller;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.stereotype.Controller;
     5 import org.springframework.web.bind.annotation.*;
     6 import org.zln.myWeb.domain.T00_User;
     7 import org.zln.myWeb.service.T00_UserService;
     8 
     9 import java.util.HashMap;
    10 import java.util.Map;
    11 
    12 /**
    13  * Created by sherry on 16/8/6.
    14  */
    15 @Controller
    16 @RequestMapping("/myWeb")
    17 public class T00_UserController {
    18 
    19     @Autowired
    20     private T00_UserService t00_userService;
    21 
    22     @RequestMapping("/name.json")
    23     public @ResponseBody Map<String,String> showName(@RequestParam("id") Integer id){
    24         T00_User t00_user = t00_userService.getT00_UserById(id);
    25         Map<String,String> map = new HashMap<>();
    26         map.put("name",t00_user.getName());
    27         return map;
    28     }
    29 }
    @RequestMapping demo01
    showName方法能够处理的就是请求路径为 /myWeb/name.json 的请求

    可以配置多个路径
    @RequestMapping(value={"/myWeb","/"})

    URI模板映射

    @RequestMapping("/myWeb/user/{userId}")

    其中{xxx}是占位符,在方法参数中,通过@PathVariable能够提取URI中的userId值

    当然,占位符可以使用多个

    Ant风格的URL路径

    @RequestMapping("/myWeb/**")

    所有 /myWeb/开头的地址都能够映射到,但是,当产生冲突的时候,参考最长匹配优先原则

    @RequestMapping("/myWeb/name?")

    一个问号 ?,匹配任意一个字符

    一个星号 *,匹配任意多个字符

    Ant风格和URI模板是可以混用的

    正则表达式

    @RequestMapping("/myWeb/{正则表达式名:表达式}")

    方法参数中,使用@PathVariable("正则表达式名") 获取到请求地址值

    • 请求方法限定
    @RequestMapping(value = "/name.json",method = {RequestMethod.GET})

    也可以配置允许多种提交方式

    @RequestMapping(value = "/name.json",method = {RequestMethod.GET,RequestMethod.POST})

    一般浏览器只支持GET、POST两种请求方法,Spring MVC默认开启了对GET、POST、DELETE、PUT、HEAD的支持

    对于OPTIONS、TRACE请求方法的支持,需要在web.xml中配置

    • 请求参数限定

    请求参数中必须有某种参数,也可以设置参数的值必须为某个指定值,才映射到方法

    @RequestMapping(value = "/name.json",method = {RequestMethod.GET,RequestMethod.POST,},params = "id")
    @RequestMapping(value = "/name.json",method = {RequestMethod.GET,RequestMethod.POST,},params = "!id")

    !id表示没有id请求参数

    @RequestMapping(value = "/name.json",method = {RequestMethod.GET,RequestMethod.POST,},params = "id=1")

    指定id值

    @RequestMapping(value = "/name.json",method = {RequestMethod.GET,RequestMethod.POST,},params = "submit!=create")

    指定值不等于某个值

    @RequestMapping(value = "/name.json",method = {RequestMethod.GET,RequestMethod.POST,},params = {"test1","test2=1"})

    也可以配置多个参数值,多个参数之间的配置是且的关系

    • 请求头信息限定
    @RequestMapping(value = "/name.json",method = {RequestMethod.GET,RequestMethod.POST,},params = "id",headers = "Accept")

    headers用来配置请求头信息,如上表示请求头信息必须有Accept参数

    headers="!Accept",请求头不允许包含Accept参数

    同时,和params一样,也可以配置多个请求头参数

    通过以上的方式,基本是已经可以完全满足日常使用了

  • 相关阅读:
    SNMP简介
    命令模式
    牛顿法
    仿射函数
    schedule
    命令模式
    牛顿法
    schedule
    仿射函数
    适配器模式
  • 原文地址:https://www.cnblogs.com/sherrykid/p/5785433.html
Copyright © 2011-2022 走看看