【Day1】简介、@RequestMapping注解、获取请求参数的方式

一、SpringMVC简介

1 什么是MVC

(1)MVC是一种软件架构思想,将软件按照模型、视图、控制器来划分
(2)
M:Model,模型层,指工程中的JavaBean,作用是处理数据,JavaBean分为两类

  • 一类是实体类Bean,专门存储业务数据
  • 一类是业务处理Bean,指Service或Dao对象,专门用于处理业务逻辑和数据访问

V:View,视图层,指工程中的html或jsp页面,作用是与用户进行交互,展示数据
C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器

2 什么是SpringMVC

是Spring为表述层开发提供的一整套完备的解决方案
三层架构分别为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet
SpringMVC本质是一个Servlet

3 SpringMVC的特点

(1)Spring家族原生产品,与IOC容器等基础设施无缝对接
(2)基于原生的Servlet,通过功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理
(3)表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案
(4)代码清新简洁,大幅度提升开发效率
(5)内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可
(6)性能卓著,尤其适合大型互联网项目要求

二、HelloWorld

1 创建Maven工程

jar包和war包:jar包就是将jar程序打包,war包是将整web工程打包,可以理解为一种发布方式
< scope > 中的provided,说明该包在目标容器中是已经被提供了的,只在编译和测试阶段需要

2 流程总结

  • 浏览器发送请求,若请求地址符合前端控制器的url-pattern,该请求就会被前端控制器DispatcherServlet处理。
  • 前端控制器会读取SpringMVC的核心配置文件,通过扫描组件找到控制器,将请求地址和控制器中@RequestMapping注解的value属性值进行匹配,若匹配成功,该注解所标识的控制器方法就是处理请求的方法。
  • 处理请求的方法需要返回一个字符串类型的视图名称,该视图名称会被视图解析器解析,加上前缀和后缀组成视图的路径,通过Thymeleaf对视图进行渲染,最终转发到视图所对应页面

三、@RequestMapping注解

1 @RequestMapping注解的功能

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

2 @RequestMapping注解的位置

@RequestMapping标识一个类:设置映射请求的请求路径的初始信息,用来设置相似功能路径中的不同模块,比如/Students/list 和 /Teachers/list 中的students与teachers
@RequestMapping标识一个方法:设置映射请求请求路径的具体信息

3 @RequestMapping注解的value属性

value参数实际上是一个String[],也就是说多个地址可以映射到同一个方法(但是一个地址不能映射到多个方法)
写法就是:

@ResquestMapping(value = {"/test1", "/test2"}) 

@RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射

4 @RequestMapping注解的method属性

@RequestMapping注解的method属性通过请求的请求方式(get或post)匹配请求映射

@RequestMapping注解的method属性是一个RequestMethod类型(Spring中提供的枚举类)的数组,表示该请求映射能够匹配多种请求方式的请求

若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器报错405:Request method ‘POST’ not supported

若当前不设置method,则表示不以method为匹配条件,也就是说所有请求方式都能请求成功

5 @RequestMapping注解的params属性

通过请求参数去匹配请求 类型也是String[],但是不同于value和method的并集关系,这个必须全部满足

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

“param”:要求请求映射所匹配的请求必须携带param请求参数

“!param”:要求请求映射所匹配的请求必须不能携带param请求参数

“param=value”:要求请求映射所匹配的请求必须携带param请求参数且param=value

“param!=value”:要求请求映射所匹配的请求必须携带param请求参数但是param!=value

@RequestMapping(
        value = {
   "/testRequestMapping", "/test"}
        ,method = {
   RequestMethod.GET, RequestMethod.POST}
        ,params = {
   "username","password!=123456"}
)
public String testRequestMapping(){
   
    return "success";
}

6 @RequestMapping注解的headers属性

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

@RequestMapping注解的headers属性是一个字符串类型的数组,可以通过四种表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值