在Spring MVC中@RequestMapping
注解是一个十分强大的注解,Spring MVC使用@RequestMapping注解可以为控制器指定可以处理那些URL请求,在控制器的类上或类中的方法上均可以使用这个注解:
- 在类上使用可以提供初步的映射信息。相当于一个根路径
- 在方法上使用提供更进一步的细分映射信息。
(1)这是一个只在方法上使用@RequestMapping注解的例子:
package com.xzy.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloServlet0 {
@RequestMapping("/hello")
public String sayHello(Model model){
System.out.println("收到请求,正在处理.......");
model.addAttribute("msg","This is a Spring MVC Web");
return "success";
}
}
(2)这是一个在类和方法同时使用@RequestMapping注解的例子:
package com.xzy.controller;
import com.xzy.bean.Teacher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/welcome") //这个相当于是基准路径
public class HelloServlet {
@RequestMapping("/hello")
public String sayHello(Model model){
System.out.println("收到请求,正在处理......");
model.addAttribute("msg","Welcome to SpringMVC!");
return "hello";
}
}
@Requestmapping
的属性:
属性 | 作用 |
---|---|
value | 默认的属性就是value,他就是一个URL路径,可以在一个方法上或类上给多个value值 |
method | 用来定义接收浏览器发来的何种请求。在Spring中,使用枚举类RequestMethod来封装了HTTP协议的所有请求方式。最基本的有GET、POST、DELETE、PUT |
params | 表示请求参数,也就是追加在URL上的键值对,多个请求参数以&隔开 |
headers | 该属性表示请求头,通过 @RequestMapping 中的 headers 属性,可以限制客户端发来的请求 |
consumes | 规定请求头的Content-Type |
produces | 告诉浏览器返回的内容是什么,给响应头中加上Content-Type |
示例代码: method:限定请求方法
HelloServlet.java
/**
* 指定只有GET请求才可一访问
* @param model
* @return
*/
@RequestMapping(value="/handler1",method= RequestMethod.GET)
public String handler1(Model model){
System.out.println("收到请求,正在处理......");
model.addAttribute("msg","这是一个只有GET请求才可以访问页面");
return "success";
}
/**
* 指定只有POST请求才可以来访问
* @param model
* @return
*/
@RequestMapping(value = "/handler2",method = RequestMethod.POST)
public String handler2(Model model){
System.out.println("收到请求,正在处理......");
model.addAttribute("msg","这是一个只有POST请求才可以访问页面");
return "success";
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>@RequestMapping测试</title>
</head>
<body>
<center>
<a href="hello">1.只在方法方法上用@RequestMapping注解</a><br/>
<a href="home/hello">2.在类和方法上同时用@RequestMapping注解</a><br/>
<a href="home/handler1">3.通过GET方法来访问</a><br/>
<form action="home/handler2" method="post">
<button type="submit">4.POST提交</button>
</form>
</center>
</body>
</html>
parmars:限定参数 parmars支持简单的表达式计算,例如: eg1:params = {"username"} ,表示请求的路径中必须要有username这个关键字,如果没有就会报异常
eg2:params = {"!username"} ,表示请求的路径中不能有username这个关键字,如果有这个参数就会报异常 eg2:params = {"username","age=20","pwd"} ,表示请求的路径中必须要有username、age、pwd这三个关键字,并且age必须是20,如果没有或age的值不等就会报异常
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>@RequestMapping测试</title>
</head>
<body>
<center>
<a href="hello">1.只在方法方法上用@RequestMapping注解</a><br/>
<a href="home/hello">2.在类和方法上同时用@RequestMapping注解</a><br/>
<a href="home/handler1">3.通过GET方法来访问</a><br/>
<form action="home/handler2" method="post">
<button type="submit">4.POST提交</button>
</form>
<a href="home/handler3?username=hx">5.限定请求参数1</a><br/>
<a href="home/handler4?username=hx&age=20&pwd=123456">5.限定请求参数2</a><br/>
</center>
</body>
</html>
headers:限定请求头部 示例一:

测试结果:
