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> |
(3) success.jsp 不变。
(4)redeployTomcat,在浏览器地址栏访问:http://localhost:8080/springmvc/request.jsp
,点击查询书籍超链接,结果如下:
(5)修改UserHandler.java,指定参数的值=100。
(6)修改request.jsp,修改发送的值为200.
(7)redeployTomcat,重新范文request.jsp,点击超链接&#