SpringBoot工程下Spring MVC技术的应用
Spring MVC 简介背景分析在大型软件系统设计时 , 业务一般会相对复杂 , 假如所有业务实现的代码都纠缠在一起 , 会出现逻辑不清晰、可读性差 , 维护困难 , 改动一处就牵一发而动全身等问题 。 为了更好解决这个问题就有了我们现在常说的分层架构设计 。
MVC 是什么MVC是一种软件架构设计思想,基于MVC架构将我们的应用软件进行分层设计和实现,例如可以分为视图层(View),控制层(Controller),模型层(Model),通过这样的分层设计让我们程序具备更好的灵活性和可可扩展性.因为这样可以将一个复杂应用程序进行简化,实现各司其职,各尽所能.比较适合一个大型应用的开发.
Spring MVC 概述Spring MVC是MVC设计思想在Spring框架中的一种实现 , 基于这样的思想spring框架设计了一些相关对象 , 用于更好的基于MVC架构处理请求和响应 , 其简易架构如图所示:
文章插图
其中:
1)DispatcherServlet是客户端所有请求处理的入口,负责请求转发 。
2)RequestMapping负责存储请求url到后端handler对象之间的映射 。
3)Handler 用于处理DispatcherServlet对象转发过来的请求数据 。
4)ViewResolver负责处理所有Handler对象响应结果中的view 。
Spring MVC 快速入门准备工作第一步:创建项目module , 基本信息如图所示:
文章插图
第二步:添加项目依赖(可以在module创建时 , 也可以创建后) , 代码如下:
Spring Web 依赖(提供了spring mvc支持并且会嵌入一个tomcat)
Thymeleaf 依赖(提供了以html作为页面模板进行解析和操作的相关对象)
第三步:启动项目检测控制台启动状态是否OK
statics 目录分析及应用statics 目录为springboot工程创建时添加了web依赖以后自动创建的目录 , 此目录中可以存储html、css、js、html等相关资源 , 这些资源可以在启动服务器以后 , 直接在浏览器进行访问 。 例如:
第一步:在statics目录下创建一个index.html页面 , 代码如下:
TitleThe First Html Page
第二步:启动服务器并直接进行访问测试,如图所示
文章插图
templates 目录分析及应用templates 目录为springboot工程创建时添加了thymeleaf依赖以后自动创建的目录 , 此目录中要存储一些html模板 , 这个模板页面不能直接通过浏览器url进行访问 , 需要基于后端控制器 , 在方法中定义页面响应 , 例如:
第一步:定义TemplateController及方法 , 代码如下:
package com.cy.pj.health.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class TemplateController {@RequestMapping("doTemplateUI")public String doTemplateUI(){return "default";}}
第二步:在templates目录中定义模板页面default.html , 代码如下:
TitleThe Default Template page
其中,假如default.html要在放在templates子目录中,则还需要在配置文件中配置thymeleaf的前缀,例如:
spring.thymeleaf.prefix=classpath:/templates/module/
第三步:启动服务进行访问测试 , 如图所示:
文章插图
SpringMVC 响应数据处理
ModelAndView 应用我们有一业务,现在需要将响应数据封装到ModelAndView对象,然后响应到客户端,如何实现呢?
第一步:定义### ModelAndViewontroller以及方法,返回页面和数据形式:
package com.cy.pj.module.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class ModelViewController {@RequestMapping("/doModelAndView")public String doModelAndView(Model model) {model.addAttribute("username", "jason");model.addAttribute("state", true);return "default";}}
返回页面形式代码:
package com.cy.pj.health.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class PageController {//返回页面 @RequestMapping("/getview")public String doHealthUI(){return "default";}}
- 推新标准建新生态,下载超198亿次金山发力海内外
- 闲鱼|电诉宝:“闲鱼”网络欺诈成用户投诉热点 Q3获“不建议下单”评级
- 王兴称美团优选目前重点是建设核心能力;苏宁旗下云网万店融资60亿元;阿里小米拟增资居然之家|8点1氪 | 美团
- 先别|用了周冬雨的照片,我会成为下一个被告?自媒体创作者先别自乱阵脚
- 丹丹|福佑卡车创始人兼CEO单丹丹:数字领航 驶向下一个十年
- 看过明年的iPhone之后,现在下手的都哭了
- 砍单|iPhone12之后,拼多多又将iPhone12Pro拉下水
- 巨头|“社区薇娅”都不够用了 一线互联网巨头全员下场卖菜
- 余额|中兴通讯:现有资金余额仅能确保公司当前经营规模下现金流安全
- 销售|Shopify宣布创下51亿美元的假日购物季销售纪录