@RequestMapping和Rest
1.@RequestMapping
1.1基本使用
@RequestMapping注解可以指定 控制器(处理器) 的某个方法的请求url
1.2@RequestMapping其他使用方式
1.2.1修饰方法和类
@RequestMapping注解可以修饰方法,还可以修饰类。
当同时修饰类和方法时,请求的url就是组合形式:/类请求值/方法请求值
例子
(1)UserHandler.java:
package com.li.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* @author 李
* @version 1.0
*/
@RequestMapping(value = "/user")
@Controller //UserHandler就是一个处理器/控制器,注入到spring容器
public class UserHandler {
/**
* 1.method = RequestMethod.POST 表示请求buy方法必须是post请求
* 2.RequestMethod 四个常用的选项 :GET, POST, PUT, DELETE
* 3.如果没有配置 RequestMethod,SpringMVC控制器默认支持 get和 post两种方式
* 4.buy()方法对应的完整请求url = http://ip:port/web工程路径/user/buy
* @return
*/
@RequestMapping(value = "/buy", method = RequestMethod.POST)
public String buy() {
System.out.println("购买商品");
return "success";
}
}
(2)request.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>购买商品</title>
</head>
<body>
<h1>购买商品</h1>
<%--
buy()方法对应的完整请求 url = http://ip:port/web工程路径/user/buy
--%>
<form action="user/buy" method="post">
购买人:<input type="text" name="username"/><br/>
购买量:<input type="text" name="nums"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
(3)success.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>操作成功</title>
</head>
<body>
<h1>恭喜,操作成功!</h1>
</body>
</html>
在浏览器中访问 http://localhost:8080/springmvc/request.jsp
,点击提交按钮,结果如下:
1.2.2指定请求方式
-
@RequestMapping 可以指定请求的方式(post/get/put/delete...),请求方式要和指定方式一致,否则报错:
-
SpringMVC 控制器默认支持get 和 post两种请求方式,即如果没有指定 method,可以接收 get 和 post请求
1.2.3指定params和headers,支持简单表达式
param1
:表示请求必须包含名为 param1 的请求参数!param1
:表示请求不能包含名为 param1 的请求参数param1 != value1
:表示请求包含名为 param1 的请求参数,但其值不能为 value1{"param1 = value1", "param2"}
:请求必须包含名为 param1 和 param2 的两个请求参数,且 param1的值必须为 value1
应用实例
(1)修改UserHandler.java,增加方法
//...
@RequestMapping(value = "/user")
@Controller
public class UserHandler {
//...
/**
* 1.params = "bookId" 表示请求该方式时,必须给一个名为 bookId的参数
* 2.search(String bookId){} 表示请求目标方法时,
* 携带的 bookId参数的值会被填充到目标方法的同名形参中
* @param bookId
* @return
*/
@RequestMapping(value = "/find", params = "bookId", method = RequestMethod.GET)
public String search(String bookId) {
System.out.println("查询书籍 bookId=" + bookId);
return "success";
}
}
(2)request.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>购买商品</title>
</head>
<body>
<h1>演示params的使用</h1>
<a href="user/find?bookId=100">查询书籍</a>
</body>
</html>