@RequestMapping用来映射请求:RequestMapping可以修饰方法外,还可以修饰类

1)SpringMVC使用@RequestMapping注解为控制指定可以处理哪些URL请求;

2)在控制的类定义以及方法定义处都可以使用@RequestMapping标注

---类定义:提供初步的请求映射信息,相对于WEB应用的根目录。

---方法    :提供进一步的细分映射信息,相对于类定义处的URL。若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录。

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

示例:基于上一篇文章中搭建的demo project上修改HelloWord.java类。

package com.dx.springlearn.handlers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
@RequestMapping("class_requestmapping")
public class HelloWord {
private static String SUCCESS = "success"; @RequestMapping("/hello")
public String hello() {
System.out.println("hello word...");
return SUCCESS;
}
}

此时,index.jsp中链接路径编辑为:

<a href="class_requestmapping/hello">hello action</a>

@RequestMapping指定方法的请求方式:

1)@ReuqestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数及请求头映射请求。

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

3)params和headers支持简单的表达式:

--- param1:表示请求必须包含名为param1的请求参数

--- !param1:表示请求不能包含名为param1的请求参数

--- param1 != value1:表示请求包含名为param1的请求参数,但其值不能为value1

--- {"param1=value1","param2"}:请求必须包含名为param1和param2的两个请求参数,且param1参数的值必须为value1

在HelloWord.java中添加testMethod方法:

package com.dx.springlearn.handlers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; @Controller
@RequestMapping("class_requestmapping")
public class HelloWord {
private static String SUCCESS = "success"; @RequestMapping(value = "/testMethod", method = RequestMethod.POST)
public String testMethod() {
System.out.println("test method");
return SUCCESS;
} @RequestMapping("/hello")
public String hello() {
System.out.println("hello word...");
return SUCCESS;
}
}

在index.jsp中指定请求testMethod方法的html脚本:

    <form id="form_testMethod" name="form_testMethod" method="POST"
action="class_requestmapping/testMethod">
<button name="submit" id="submit">test method</button>
</form>

@RequestMapping指定请求参数和请求头

在HelloWord.java中添加testParamsAndHeaders方法:

package com.dx.springlearn.handlers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; @Controller
@RequestMapping("class_requestmapping")
public class HelloWord {
private static String SUCCESS = "success"; @RequestMapping(value="/testParamsAndHeaders",params={"username","password!=23456"},headers={"Accept-Language=zh-CN,zh;q=0.8"})
public String testParamsAndHeaders() {
System.out.println("test params and headers");
return SUCCESS;
} @RequestMapping(value = "/testMethod", method = RequestMethod.POST)
public String testMethod() {
System.out.println("test method");
return SUCCESS;
} @RequestMapping("/hello")
public String hello() {
System.out.println("hello word...");
return SUCCESS;
}
}

修改index.jsp,添加请求链接:

<a href="class_requestmapping/testParamsAndHeaders?username=abc&password=12345">testParamsAndHeaders</a>

@RequestMapping支持Ant路径方式:

1)Ant风格资源地址支持3种匹配符:

--- ?:匹配文件名中的一个字符;

--- * :匹配文件名中的任何个字符;

--- **:匹配多层路径

2)Ant风格示例:

--- /user/*/createuser:配置/user/aaa/createuser、user/bb/createuser等URL

--- /user/**/createuser:匹配/user/createuser、/user/abc/ab/createuser等URL

--- /user/createuser??:配置/user/createuseraa、/user/createuserbc等URL

测试方法:

    @RequestMapping("/testAnt/*/createuser")
public String testAnt(){
System.out.println("test ant");
return SUCCESS;
}

index.jsp支持的链接方式:

http://localhost:8080/SpringMVC_01/class_requestmapping/testAnt/oiasdkj/createuser

http://localhost:8080/SpringMVC_01/class_requestmapping/testAnt/oxd/createuser

SpringMVC(二):RequestMapping修饰类、指定请求方式、请求参数或请求头、支持Ant路径的更多相关文章

  1. SpringMVC(三) RequestMapping修饰类

    SpringMVC使用@RequestMapping 注解为控制器指定可以处理哪些URL请求. 可以用于类定义以及方法定义: 类定义:提供初步的请求映射信息.相对于WEB应用的根目录. 方法处:提供进 ...

  2. SpringMVC总结三:请求Controller返回视图类型以及请求方式、参数介绍

    视图解析,请求Controller返回的视图类型: @Controller @RequestMapping("/test") public class TestController ...

  3. SpringMVC之使用requestMapping映射请求、映射参数、映射头

    1. 映射请求 作用:使用requestMapping可以指定处理器可以处理那些请求 地方:类和方法前面都可以 @requestMapping 类定义处: 提供初步的请求映射信息,相对于web应用的根 ...

  4. SpringBoot08 请求方式、参数获取注解、参数验证、前后台属性名不一致问题、自定义参数验证注解、BeanUtils的使用

    1 请求方式 在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台开发人员必须对接收到的参数进行参数验证来确保程序的健壮性 1 ...

  5. Feign服务调用请求方式及参数总结

    前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...

  6. 百度网盘上下载文件,调用api接口的请求方式和参数

    REST api 功能:下载单个文件. Download接口支持HTTP协议标准range定义,通过指定range的取值可以实现断点下载功能. 例如: 如果在request消息中指定“Range: b ...

  7. HTTP请求方式中8种请求方法(简单介绍)

    简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范.HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动态分配的.当我们没有指定端口访问时,浏览器会 ...

  8. go中处理各种请求方式以及处理接口请求参数

    话不多说直接上代码,解读内容全部在代码中 1.处理请求方式 package main import ( "fmt" "io/ioutil" "net/ ...

  9. (2).net web api 请求方式与参数

    一.GET 二.POST 如果方法名前缀不带GET 默认为POST请求方法 1.无参数 2.带一个参数 客户端请求时,名称必须为空,不能是dictCategory.不是空的话,会返回空数据 [ ] 3 ...

随机推荐

  1. Geth 控制台使用及 Web3.js 使用实战

    在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3.Geth 控制台(REPL)实现了所有的web3 API及Admin API,使用好 Geth 就是必修课.结合Geth命令用法阅 ...

  2. 20165226 学习基础和C语言基础调查

    心得体会 驱动迭代 学习是一个老师与学生互动的过程,二者关系又恰如健身教练与学员,在进行基础知识的培训后还需借助工具加强相关方面的训练.学习提升的过程离不开学生在实践中发现问题并在老师的帮助下解决问题 ...

  3. java--计时器

    计时器 一.窗口化 public class Pro extends JFrame{ private JTextField textField = new JTextField(45);//系统时间文 ...

  4. ios滑动流畅(丝般顺滑)滚动

    在ios html->body->list(少一个样式都不行!) html->body->list <!DOCTYPE html> <html lang=&q ...

  5. HEX文件合并方法

    通过开发嵌入式系统时,可能需要boot引导应用程序,一个小工程就需要两个hex文件进行合并,但是生产的时候都是裸片烧的,因此需要将两个合并为一个文件 以下是具体合并的方法: 1.确保自检安装了ultr ...

  6. es6学习笔记--promise对象

    Promise对象是为了简化异步编程.解决回调地狱情况 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise 是一个对象,从它可 ...

  7. SSE(Server-sent events)技术在web端消息推送和实时聊天中的使用

    最近在公司闲着没事研究了几天,终于搞定了SSE从理论到实际应用,中间还是有一些坑的. 1.SSE简介 SSE(Server-sent events)翻译过来为:服务器发送事件.是基于http协议,和W ...

  8. rpm打包工具---FPM

    FPM的安装:fpm是由ruby gem仓库里面安装的所以要先装ruby.yum安装的ruby版本是1.8.7版本,使用gem命令会报错: >= 1.9.3,所以要安装一个比1.9.3版本高的 ...

  9. .NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序

    一.前言 为什么选择VS Code?VS Code 是一款跨平台的代码编辑器,想想他的哥哥VS,并是微软出品的宇宙第一IDE,那作为VS的弟弟,VS Code 也不会差,毕竟微软出品.反正ken是这么 ...

  10. 设计模式 --> (14)中介者模式

    中介者模式 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.中介者模式的例子很多,大到联合国安理会,小到房屋中介,都扮演了 ...