尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【框架篇】Spring MVC 介绍及使用(详细教程)

【框架篇】Spring MVC 介绍及使用(详细教程) Spring MVC 介绍-------------### 1MVC 设计模式MVCModel-View-Controller是一种常见的软件设计模式用于将应用程序的逻辑分离成三个独立的组件1.模型Model模型是应用程序的数据和业务逻辑的表示。它负责处理数据的读取、存储和操作以及业务规则的处理。模型通常是独立于用户界面的可以在不同的视图和控制器之间共享和重用。2.视图View视图是用户界面的呈现部分负责展示数据给用户并接收用户的输入。视图通常是根据模型的数据进行渲染和更新的它可以是Web页面、图形界面或命令行界面等。3.控制器Controller控制器是模型和视图之间的协调者负责接收用户的输入并根据输入调用相应的模型逻辑。控制器将用户的请求转发给模型进行处理并将处理结果传递给视图进行展示。控制器还可以处理视图的事件和状态变化。MVC设计模式的作用如下*分离关注点MVC将应用程序的不同关注点数据、业务逻辑、用户界面分离开来使得各个组件可以独立开发、测试和维护提高了代码的可读性和可维护性。*提高可重用性通过将数据和业务逻辑抽象成模型可以在不同的视图和控制器之间共享和重用减少了重复编写代码的工作量。*改善可扩展性MVC模式使得各个组件之间的耦合度降低可以更方便地对应用程序进行扩展和修改而不会影响其他组件的功能。*改善用户体验通过将用户界面和业务逻辑分离MVC模式使得用户界面更加灵活和响应可以根据不同的需求进行定制和优化。总的来说MVC设计模式通过将应用程序的逻辑分离成模型、视图和控制器提供了一种结构化的开发方式使得代码更加可读、可维护和可扩展同时改善了用户体验和开发效率。* *### 2Spring MVC#### 2.1Spring MVC 的介绍Spring Web MVC是基于Servlet API构建的原始Web框架也是Spring框架的一部分。它提供了灵活可扩展的MVC架构方便开发者构建高性能的Web应用程序并与 Spring 生态系统无缝集成。*#### 2.2Spring MVC与MVC的关系**Spring MVC与MVC之间的关系的要点总结1. Spring MVC是一个Web框架而MVC是一种架构模式。Spring MVC是基于MVC模式的实现之一。2. MVC是一种将应用程序的不同方面分离的设计模式包括模型Model、视图View和控制器Controller。3. Spring MVC遵循MVC设计模式将应用程序的不同方面分离开来通过模型、视图和控制器的协作来处理Web请求。综上所述Spring MVC是Spring框架提供的基于MVC架构并继承了Servlet API的Web开发框架。它遵循MVC模式的原则提供了一套完整的开发流程和特性。通过Spring框架的支持它能够实现灵活性、可配置性和可扩展性帮助开发者构建高性能的Web应用程序。注意既然是 Web框架那么当用户在浏览器中输入了url之后我们的Spring MVC 项目就可以感知到用户的请求。*#### 2.3Spring MVC 的重要性现在的项目大部分Java项目都是基于Spring或者Spring Boot的而Spring 的核心就是Spring MVC。简单来说Spring MVC是一切项目的基础我们以后创建的所有Spring、Spring Boot项目基本都是基于Spring MVC的。在创建Spring Boot项目时我们勾选的Spring Web框架其实就是Spring MVC框架。*学习Spring MVC我们只需要掌握以下3个功能1.连接的功能︰将用户浏览器和 Java 程序连接起来也就是访问一个地址能够调用到我们的Spring程序。2.获取参数的功能︰用户访问的时候会带一些参数在程序中要想办法获取到参数。3.输出数据的功能︰执行了业务逻辑之后要把程序执行的结果返回给用户。*### 3Spring MVC 创建和使用#### 3.1Spring MVC创建Spring MVC项目的创建方式有2种分别为1. 使用Maven项目添加 Spring MVC框架依赖的方式创建2. 使用Spring Boot的方式创建Spring MVC 项目由于第一种方式中的过程较复杂而第二种方式较为简单故在2018年以后基本都是使用第二种方式来进行创建Spring MVC项目。Spring MVC项目创建和Spring Boot 项目创建基本相同只需要在创建的时候选择Spring Web 框架就相当于创建了Spring MVC项目。*#### 3.2Spring MVC连接在Spring MVC项目中实现连接操作之前我们需要先解决一个问题何为路由映射所谓的路由映射指的是当用户访问一个url时将用户的请求对应到程序中某个类的某个方法的过程。Spring MVC项目实现连接的操作就与路由映射密切相关实现路由映射可以使用注解。用来实现注册接口的路由映射的常见注解有RequestMappingPostMappingGetMapping。1RequestMapping注解RequestMapping注解的基本使用RequestMapping注解的基本用法说明RequestMapping注解可以修饰类也可以修饰方法当修饰类和方法时访问的地址是类方法。RequestMapping注解可以处理任何HTTP方法的请求包括GET、POST、PUT、DELETE等。RequestMapping注解可以使用method属性来进行限定处理请求的HTTP方法。2PostMapping注解PostMapping注解的基本使用PostMapping注解的基本用法说明PostMapping注解通常用于修饰控制器类中的方法而不是类本身。PostMapping注解只可以处理HTTP POST请求映射到处理方法上。3GetMapping注解GetMapping注解的基本使用GetMapping注解的基本用法说明GetMapping注解通常用于修饰控制器类中的方法而不是类本身。GetMapping注解只可以处理HTTP GET请求映射到处理方法上。4三类注解区别总结三类注解区别总结归纳* RequestMapping是通用的注解可以修饰类和方法可用于映射任何类型的HTTP请求。* PostMapping是专用的注解可修饰方法但不能修饰类仅用于映射HTTP POST请求。* GetMapping是专用的注解可以修饰方法但不能修饰类仅用于映射HTTP GET请求。GET请求的映射方式1使用GetMapping注解使用RequestMapping注解3使用RequestMapping注解并搭配method属性* *#### 3.3Spring MVC参数获取##### 1获取单个参数获取单个参数的操作代码对操作代码进行运行检测获取单个参数注意说明1代码中声明的参数名与请求地址栏中的参数名要完全一致若不一致则无法获取到地址栏中对应的参数值会为参数的默认值。2如果想明确指定请求中的参数要绑定到处理方法的参数可以在处理方法的参数前使用RequestParam注解进行参数重命名操作。对操作代码进行运行检测*##### 2获取多个参数获取多个参数的操作代码对操作代码进行运行检测获取多个参数注意说明1进行参数匹配时后端代码的参数名称要与地址栏中的参数名称要保证完全一致。2前后端进行参数匹配时是以参数的名称进行匹配的因此地址栏中的参数位置是不影响后端获取参数的结果。*##### 3获取普通对象实体类UserEntity创建获取普通对象的操作代码对操作代码进行运行检测获取普通对象注意说明1Spring MVC 会根据地址栏中输入的参数列表自动实现参数对象的赋值操作。* *##### 4获取Json对象获取Json对象的操作代码对操作代码进行运行检测从上述的运行检测中发现无法接收成功 Json对象尽管上述代码可以接收获取到普通对象。**那怎样才能成功接收Json对象呢*在Spring MVC 中提供了RequestBody注解来实现接收 Json 对象的操作。获取 Json对象的操作代码如下对操作代码进行运行检测*##### 5获取基础URL参数获取基础URL参数的操作代码对操作代码进行运行检测获取基础URL参数注意说明1使用PathVariable注解进行获取URL中的基础参数操作。2基础URL里面的参数是 之前的参数而不是 之后的参数参数列表内的参数。3进行参数匹配时后端代码的参数名称要与地址栏中的参数名称要保证一致且其对应的参数值要对应。*##### 6获取上传文件获取上传文件的操作代码对操作代码进行运行检测打开指定的路径进行验证文件是否成功上传观察到文件成功上传并且文件名为指定的img.png说明文件成功上传。上述操作虽然能够实现获取上传文件但也存在明显的不足缺陷那就是指定文件路径中只能有一个文件。为什么会出现这种情况呢那是因为文件名已经在代码中确定了只能为img.png当上传成功一个文件后后续成功上传的文件会覆盖之前的文件。那若想解决这个覆盖问题实现指定文件路径中有多个文件该怎么办呢出现上述这种情况的原因是文件名确定死了所以我们就只需要从文件名入手即可也就是让文件名不确定死。如果想让文件名不确定死我们可以使用UUID.randomUUID进行随机生成一组32位数的16进制数字所构成的文件名。获取上传文件的改进代码对操作代码进行运行操作后再打开指定文件目录下发现不会出现上述情况了能够实现指定文件路径中有多个文件。*##### 7获取Header获取Header的操作代码在地址栏中输入相关URL后使用抓包工具进行抓包操作抓取该请求的相关请求和响应信息。获取Header的注意事项1使用RequestHeader注解进行获取Header中的参数操作该注解里的参数的参数名要与Header里面的参数名要一致。*##### 8获取Cookie获取Cookie的操作代码手动构造Cookie操作流程获取Cookie的操作代码运行结果获取Cookie的注意事项1使用CookieValue注解进行获取Cookie的操作该注解里的参数的参数名要与Cookie列表里面的Cookie名要一致。*##### 9获取Session获取Session的操作代码存储Session的操作代码运行检测获取Session的操作代码运行检测获取Session的注意事项1使用SessionAttribute注解进行获取Session的操作该注解里的参数的参数名要与Session列表里面的Session名要一致。2存储Session操作没有与之对应的注解只有获取Session操作才有对应的注解SessionAttribute进行简便获取。3Cookie能通过手动添加但Session不能手动添加只能通过代码进行Session创建后添加故可知Session比Cookie更安全。*### 3.4Spring MVC数据输出##### 1返回静态页面静态页面代码返回静态页面操作代码注意说明如果index.html不加/表示在当前目录下查找该文件如果加了/表示在根目录下查找该文件。操作代码运行后具进行查看输出数据是否为静态网页。*##### 2返回文本数据返回文本数据操作代码操作代码运行后通过抓包工具进行查看输出数据的格式是否为文本数据格式。*##### 3返回Json对象返回Json对象操作代码操作代码运行后通过抓包工具进行查看输出数据的格式是否为Json对象格式。*### 结语这就是本期博客的全部内容啦如果有什么其他的问题无法自己解决可以在评论区留言哦最后如果你觉得这篇文章写的还不错的话或者有所收获的话麻烦小伙伴们动动你们的小手给个三连呗点赞??评论收藏??多多支持一下各位的支持是我最大的动力后期不断更新优质的内容来帮助大家一起进步。那我们下期见* *
返回列表