第2章:SpringMVC的@RequestMapping注解

news/2025/1/12 22:05:29/

一、SpringMVC搭建框架

1.创建一个Maven程序的步骤

 ①在pom.xml导入maven依赖

<!--打包方式是war-->
<!--war 包通常用于网站,它是一个可以直接运行的 web 模块-->
<packaging>war</packaging>
<dependencies><!-- SpringMVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.1</version></dependency><!-- 日志 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><!-- ServletAPI --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><!--scope 依赖范围provided已存在,程序打包为War包,依赖不会存在--><scope>provided</scope></dependency><!-- Spring5和Thymeleaf整合包 --><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version></dependency>
</dependencies>

②在main包下创建webapp,并把xml导入

 ③配置web.xml,前端控制器

<!--配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理-->
<servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--配置SpringMVC配置文件的位置和名称--><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>SpringMVC</servlet-name><url-pattern>/</url-pattern>
<!-- 设置springMVC的核心控制器所能处理的请求的请求路径/所匹配的请求可以是/login或.html或.js或.css方式的请求路径但是/不能匹配.jsp请求路径的请求-->
</servlet-mapping>

④配置springMVC.xml

扫描组件—视图解析器

<context:component-scan base-package="com.atguigu.mvc.controller"></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>

二、@RequestMapping注解

1.@RequestMapping注解的功能

作用是将请求和处理请求的控制方法关联起来,建立映射关系

SpringMVC接收到指定请求,就会找到映射关系中对应的控制器方法来处理这个请求

2.多个控制器下的@RequestMapping的value值一样,会报错

 

 报错结果

 /方法已经被映射了,所以@RequestMapping的value值要唯一

3. @RequestMapping注解的位置

  • @RequestMapping标识一个类:设置映射请求路径的初始信息
  • @RequestMapping标识一个方法:设置映射请求路径的具体信息

此时请求映射的请求路径为:/test/ target

@Controller
@RequestMapping("/test")
public class RequestMappingController {@RequestMapping("/target")public String target (){//返回视图名称--通过视图解析器解析return "target";}   
}

 4. @RequestMapping注解的value属性

  • @RequestMapping注解的value属性通过请求地址匹配请求映射
  • @RequestMapping注解的value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求
  • @RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射。

 访问的http://localhost:8080/SpringMVCTest/t2(t1)时候都是跳转target.html

5. @RequestMapping注解的method属性

  • @RequestMapping注解的method属性通过请求的请求方式(get或post)匹配请求映射
  • @RequestMapping注解的method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方式的请求
  • 若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器报错405:Request method ‘POST’ not supported
  • get请求:在地址栏上,请求参数会显示上面。采用?拼接。数据量有限

    Post请求:请求参数不会在地址栏上,会放在请求体中。

①当控制器不指定@RequestMapping注解的method属性时

 ②不管是post请求还是get请求都能访问

 ③当@RequestMapping注解加上method属性时

 ④此时访问只能是get请求,如果是post进行请求出现405

6. @RequestMapping注解结合请求方式的派生注解

①:对于处理指定请求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解

处理get请求的映射–>@GetMapping

处理post请求的映射–>@PostMapping

处理put请求的映射–>@PutMapping

处理delete请求的映射–>@DeleteMapping

②常用的请求方式有get,post,put,delete

③但是目前浏览器只支持get和post,若在form表单提交时,为method设置了其他请求方式的字符串(put或delete),则按照默认的请求方式get处理

④若要发送put和delete请求,则需要通过spring提供的过滤器HiddenHttpMethodFilter,在RESTful部分会讲到

7. @RequestMapping注解的params属性(了解)

  • @RequestMapping注解的params属性通过请求的请求参数匹配请求映射
  • @RequestMapping注解的params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系
  • “param”:要求请求映射所匹配的请求必须携带param请求参数
  • “!param”:要求请求映射所匹配的请求必须不能携带param请求参数
  • “param=value”:要求请求映射所匹配的请求必须携带param请求参数且param=value
  • “param!=value”:要求请求映射所匹配的请求必须携带param请求参数但是param!=value

index.html

<a th:href="@{/target(username='admin',password=123456)}">访问目标页面target.html</a>

②控制器

@RequestMapping(value = "/target",params = {"username=admin","password=123456"})
public String ToTarget(){return "target";
}

8.@RequestMapping注解的headers属性(了解)

①:@RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射

②:@RequestMapping注解的headers属性是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系

  • “header”:要求请求映射所匹配的请求必须携带header请求头信息
  • “!header”:要求请求映射所匹配的请求必须不能携带header请求头信息
  • “header=value”:要求请求映射所匹配的请求必须携带header请求头信息且header=value
  • “header!=value”:要求请求映射所匹配的请求必须携带header请求头信息且header!=value
  • ③:若当前请求满足@RequestMapping注解的value和method属性,但是不满足headers属性,此时页面显示404错误,即资源未找到

9. SpringMVC支持ant风格的路径

:表示任意的单个字符

http://localhost:8080/SpringMVCTest/a?a/testAnt ?任意的单个字符

@RequestMapping("/a?a/testAnt")
public String testAnt(){return "target";
}

② *:表示任意的0个或多个字符

http://localhost:8080/SpringMVCTest/a*a/testAnt

@RequestMapping("/a*a/testAnt")
public String testAnt(){return "target";
}

**:表示任意的一层或多层目录

注意:在使用**时,只能使用**/**/xxx的方式

@RequestMapping("/**/testAnt")
public String testAnt(){return "target";
}

10.SpringMVC支持路径中的占位符(重点)

  • 原始方式:/deleteUser?id=1
  • rest方式:/deleteUser/1
  • SpringMVC路径中的占位符常用于RESTful风格中,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的@RequestMapping注解的value属性中通过占位符{xxx}表示传输的数据,在通过@PathVariable注解,将占位符所表示的数据赋值给控制器方法的形参

浏览器输入http://localhost:8080/SpringMVCTest/testAnt/6/zhilei

 输出:id=6,username=zhilei


http://www.ppmy.cn/news/228834.html

相关文章

长虹智能电视怎么进入工程模式

亲测&#xff0c;CHANGHONG 长虹 32D2060G

长虹彩电进入维修模式

先音量最小&#xff0c;再找按静音&#xff0c; 再按MENU 退出维修模式也是按MENU

ioh3000t长虹盒子刷机固件 S905LB-高安-xian刷固件

固件特点&#xff1a;&#xff08;不是海 思芯片&#xff09; 1、调出原厂固件wifi&#xff0c;开放软件安装&#xff1b; 2、修改dns&#xff0c;三网通用&#xff1b; 3、大量精简内置的没用的软件&#xff0c;多出大量的存储空间&#xff1b; 4、去除应用安装限制&…

长虹电视U1机芯(49U3C等型号)开机卡界面进不去系统解决,刷机方法及固件下载。

适用机型&#xff1a;确认自己型号是否为U1机芯 1、将百度云盘的文件下载到U盘&#xff0c;软件放到U盘的根目录&#xff0c;U盘格式&#xff1a;FAT32.2、将U盘接入电视的 USB接口。 2、将电视关机&#xff0c;交流断电&#xff08;拔掉电源&#xff09;。按住电源按键&#x…

长虹LED42C2080i液晶电视(ZLM41机芯)HDMI端输出无图像

长虹LED42C2080i液晶电视&#xff08;ZLM41机芯&#xff09;HDMI端输出无图像 2022-01-19 14:13:40作者&#xff1a;杜云鹏224我要评论 接修一台长虹LED42C2080i液晶电视(机芯:ZLM41 )HDMI端输出无图像。据用户反映&#xff0c;该机使用高清机顶盒没有图像显示&#xff0c;但T…

记一次长虹IHO3000拆机学习

一、准备材料 1、软件&#xff0c;win7_32系统&#xff0c;Putty.exe &#xff08;使用com19,波特率是115200&#xff09; 2、硬件&#xff0c;PL2303 USB转TTL模块FT232线&#xff0c;长虹机顶盒&#xff08;实际是广东地区电信4k机顶盒&#xff09;&#xff0c;PC电脑 二、接…

长虹电视免降级安装第三方应用

长虹电视新系统限制第三方应用的安装&#xff0c;相信很多用户都曾苦恼&#xff0c;只能沦为广告机或者投屏仪&#xff0c;分享一个免降级教程&#xff0c;毕竟刷机有风险&#xff0c;这里演示的系统版本是65Q6K&#xff08;V3.00115&#xff09; 准备工作&#xff1a;1.通过应…

【长虹电视刷机降级】可装第三方软件

前言&#xff1a; 长虹电视&#xff08;具体型号忘记了&#xff0c;机芯是zls58gi&#xff09;系统自动升级后就不能装第三方软件了。&#xff08;试了N多种取巧的方法都不行&#xff0c;最后还是选择了刷机&#xff09; 其实买个电视盒子也可以&#xff0c;不过过年期间快递比…