package net.biancheng.controller; import org.springframework.stereotype.Controller; @Controller public class IndexController { // 处理请求的方法 }
<context:component-scan/>
标签,指定控制器类的基本包(请确保所有控制器类都在基本包及其子包下),示例代码如下。<!-- 使用扫描机制扫描控制器类,控制器类都在net.biancheng.controller包及其子包下 --> <context:component-scan base-package="net.biancheng.controller" />
@Controller public class HelloController { @RequestMapping("/login") public String welcome() { return "login"; } }
@Controller @RequestMapping(value = "/springmvc") public class HelloController { @RequestMapping("/login") public String welcome() { return "login"; } }
@RequestMapping(value = "/register")
//省略 value 属性名 @RequestMapping( "/register")
@RequestMapping( value = {"/register", "/login"}) public String success() { return "success"; }
@RequestMapping(value = "toUser",name = "获取用户信息") public String getUsers() { …… }
method 属性用来设置控制器方法支持的请求方式。如果一个控制器方法没有设置 @RequestMapping 注解的 method 属性,则说明该控制器方法支持全部请求类型,可以处理所有类型的请求。
method 属性的取值是一个 RequestMethod 类型的数组,表示一个控制器方法支持多种方式的请求,常用的请求方式有 GET、POST、DELETE、PUT 等。
例如,控制器方法只支持 GET 方式的请求,代码如下。
@RequestMapping(value = "/toUser",method = RequestMethod.GET)
我们也可以为同一个控制器方法指定支持多种类型的请求。例如,一个方法既支持 GET 方式的请求,也支持 POST 方式的请求,代码如下。
@RequestMapping(value = "/toUser",method = {RequestMethod.GET,RequestMethod.POST}),
序号 | 表达式 | 含义 |
---|---|---|
① | "param" | 请求中必须携带名为 param 的参数 |
② | "!param" | 与表达式 ① 的含义完全相反,请求中不能携带名为 param 的参数 |
③ | "param=value" | 请求中必须携带名为 param 的参数,且参数的取值必须为:value |
④ | "param!=value" | 与表达式 ③ 的含义完全相反,请求中不能携带参数:param = value。 |
@RequestMapping(value = "/testParam", params = {"name=C语言中文网", "url=http://c.bianheng.net"}) @ResponseBody public String testParam() { return "success"; }
序号 | 表达式 | 含义 |
---|---|---|
① | "header" | 请求必须携带请求头信息:header |
② | "!header" | 与表达式 ① 的含义完全相反,请求中不能携带请求头信息:header |
③ | "header=value" | 请求中必须携带请求头信息:header=value 。 |
④ | "header!=value" | 与表达式 ③ 的含义完全相反,请求中不能携带请求头信息:header=value。 |
@RequestMapping(value = "toUser",headers = "Referer=http://task.lmcjl.com") public String metnod() { …… }
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0"> <display-name>first-springmvc-demo</display-name> <!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理 --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--配置 DispatcherServlet 的一个初始化参数:spring mvc 配置文件按的位置和名称--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--开启组件扫描--> <context:component-scan base-package="net.biancheng.c"></context:component-scan> <!-- 配置 Thymeleaf 视图解析器 --> <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"> <property name="order" value="1"/> <property name="characterEncoding" value="UTF-8"/> <property name="templateEngine"> <bean class="org.thymeleaf.spring5.SpringTemplateEngine"> <property name="templateResolver"> <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"> <!-- 视图前缀 --> <property name="prefix" value="/WEB-INF/templates/"/> <!-- 视图后缀 --> <property name="suffix" value=".html"/> <property name="templateMode" value="HTML5"/> <property name="characterEncoding" value="UTF-8"/> </bean> </property> </bean> </property> </bean> </beans>
package net.biancheng.c.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/springmvc") public class RequestMappingController { /** * @author c语言中文网 * @RequestMapping value、name、method 属性 */ @RequestMapping(value = {"/welcome", "/do"}, name = "跳转到欢迎页", method = RequestMethod.GET) public String testValue() { return "welcome"; } /** * @author c语言中文网 * @RequestMapping 注解 params 属性 */ @RequestMapping(value = "/testParam", params = {"name=springmvc", "url=http://task.lmcjl.com"}) public String params() { return "param"; } /** * @author c语言中文网 * @RequestMapping 注解 headers 属性 */ @RequestMapping(value = "/testHeader", headers = {"Content-Type=application/json", "Referer=http://task.lmcjl.com"}) public String headers() { return "header"; } }
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>C语言中文网</title> </head> <body> <h1 th:text="欢迎您访问C语言中文网"></h1> <form th:action="@{/springmvc/testParam}" th:method="post"> <table style="text-align: center;"> <tr> <td>name:</td> <td><input type="text" name="name" required><br></td> </tr> <tr> <td>url:</td> <td><input type="text" name="url" required><br></td> </tr> <tr> <td colspan="2"> <input type="submit" value="验证 params属性"> </td> </tr> </table> </form> </body> </html>
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>C语言中文网</title> </head> <body> <h1 th:text="恭喜您,请求参数设置正确!"></h1> </body> </html>
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>C语言中文网</title> </head> <body> <h1 th:text="恭喜您,请求头设置正确!"></h1> </body> </html>
图1:RequestMapping value 属性使用
图2:RequestMapping value 属性使用 2
图3:输入需要验证的请求参数
图4:请求参数设置正确
图5:Postman 设置请求头
图6:请求头验证成功
通配符 | 说明 | 请求映射举例 | 匹配的请求地址举例 |
---|---|---|---|
? | 表示任意的单个字符。 | @RequestMapping(value = "/test-user?") |
|
* | 表示任意的 0 个或多个字符。 | @RequestMapping(value = "/test-user*") |
|
** |
表示任意的一层或多层目录。 注意,在使用该通配符时,其使用方式只能时 "/**/xxx"。 |
@RequestMapping(value = "/**/testuser") |
|
本文链接:http://task.lmcjl.com/news/15620.html