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一样,也可以配置多个请求头参数

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

  • 相关阅读:
    洛谷 1339 最短路
    洛谷 1330 封锁阳光大学 图论 二分图染色
    洛谷 1262 间谍网络 Tarjan 图论
    洛谷 1373 dp 小a和uim之大逃离 良心题解
    洛谷 1972 莫队
    洛谷 2158 数论 打表 欧拉函数
    洛谷 1414 数论 分解因数 水题
    蒟蒻的省选复习(不如说是noip普及组复习)————连载中
    关于筛法
    关于整数划分的几类问题
  • 原文地址:https://www.cnblogs.com/sherrykid/p/5785433.html
Copyright © 2011-2022 走看看