几分钟带你快速了解SpringMVC框架理论知识!

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 几分钟带你快速了解SpringMVC框架理论知识!

1.SpringMVC的理解

MVC 其实就是Model View Controller的简称,它是一种模式框架,分离机了表示和交互。它被分为了模型、视图、控制器。

(1)Model模型:程序的主体部分,主要包含业务数据和业务逻辑。在模型层,还会涉及到用户发布的服务,在服务里面会根据不同的业务需求,更新业务模型中的数据。

(2)View视图:程序呈现给用户的部分,是用户和程序交互的入口。用户通过视图输入需要的业务数据,并通过界面的事件交互,将对应的输入参数提交给后台管理器进行处理。

(3)Controller控制器:用来处理用户输入的数据已经更新业务模型的部分。控制器里面接收了用户和界面交互时候传递过来的数据,并根据数据业务逻辑来执行服务的调用和更新业务模型的数据和状态。

2.SpringMVC的执行流程

(1)用户通过客户端或者浏览器发送请求

(2)DispatcherServlet根据请求信息调用处理器映射器HandlerMapping解析对应Handler

(3)其实解析到的Handler就是Controller控制器

(4)处理器适配器HandlerAdapter会根据Handler找到真正的处理器来处理请求和执行相应业务逻辑

(5)处理器处理完之后,会返回一个ModelAndView,Model是返回的数据,View是逻辑视图

(6)视图解析器ViewResolver会将View逻辑视图解析成物理视图

(7)DispatcherServlet会根据返回的Model将其传给View

(8)把View返回给请求者

注意:

(1)DispatcherServlet是前端控制器:它是里面的核心组件,SpringMVC的入口函数,接口请求,相应结果。前端控制器就类似一个中央控制器,它的存在降低了各个组件之间的耦合度。请求到该控制器后,它就是里面的控制器,由它负责调用其它组件处理用户请求,也是整个流程控制的中心。

(2)HandlerMapping是处理器映射器:根据用户请求找到Handler

(3)HandlerAdapte是适配器处理器:按照特定规则去执行Handler

(4)ViewResolver是视图解析器:将返回的逻辑视图解析成物理视图也就是找到物理路径,最后在对View进行渲染呈现给用户

(5)Handler是处理器

(6)View是视图

3.SpringMVC转发和重定向的设置

(1)转发:在返回值前面加上forward

(2)重定向:在返回值前面加上redirect

4.SpringMVC常用的注解有哪些

(1)@ReuqestMapping:可以放在类上,也可以放在方法上,放在方法上的话是该方法的请求路径,在类上的话是本类下面的所有方法前面都得加上该父路径。

(2)@RequestBody:请求时可以将json作为参数传输给方法并转成对象。

如下面代码片段:

在想要访问getUserAuth方法时候,路径就是前缀/system/getUserAuth。里面的/system就是父级路径,/getUserAuth和/captcha就是各个方法上的访问路径,由于类上定义@RequestMapping,因此每个方法访问需要加上父路径。

@Controller

@RequestMapping("/system")

public class LoginController {


   @Autowired

   private SysUserService sysUserService;


   @Autowired

   private SysCaptchaService sysCaptchaService;


   @RequestMapping("/getUserAuth")

   public LoginVo getUserAuth(@RequestParam("username") String username) throws Exception {

       return sysUserService.getUserAuth(username);

   }


   /**

    * 验证码

    */

   @RequestMapping("/captcha")

   public void captcha(HttpServletResponse response, String uuid)throws IOException {

       response.setHeader("Cache-Control", "no-store, no-cache");

       response.setContentType("image/jpeg");

       BufferedImage image = sysCaptchaService.getCaptcha(uuid);

       ServletOutputStream out = response.getOutputStream();

       ImageIO.write(image, "jpg", out);

       IOUtils.closeQuietly(out);

   }



}


(3)@ResponseBody:将控制层方法的返回对象转化成json响应给前端客户。

5.SpringMVC处理统一异常

方式一:

自定义个异常处理类实现HandlerExceptionResolver接口,并实现里面的异常处理方法,然后把这个类交给Spring容器管理。

方式二:

在类上面加上@ControllerAdvice表名这一个全局异常处理类,在方法上面加上注解@ExceptionHandler,在这个注解里面有一个value属性值可以指定可处理的类型。

相关文章
|
存储 Java 数据库
几分钟带你快速了解Spring框架理论知识!
几分钟带你快速了解Spring框架理论知识!
|
7月前
|
存储 Web App开发 运维
发布、部署,傻傻分不清楚?从概念到实际场景,再到工具应用,一篇文章让你彻底搞清楚
部署和发布是软件工程中经常互换使用的两个术语,甚至感觉是等价的。然而,它们是不同的! • 部署是将软件从一个受控环境转移到另一个受控环境,它的目的是将软件从开发状态转化为生产状态,使得软件可以为用户提供服务。 • 发布是将软件推向用户的过程,应用程序需要多次更新、安全补丁和代码更改,跨平台和环境部署需要对版本进行适当的管理,有一定的计划性和管控因素。
1610 1
|
前端开发
前端知识案例学习9-色差故障实现
前端知识案例学习9-色差故障实现
48 0
前端知识案例学习9-色差故障实现
工作和学习中都能用到的5款实用软件
如今,工作和学习都离不开电脑,所以电脑里的软件自然也是必不可少的,但是电脑软件那么多,不可能每个都装上吧,所以我们要装好用的、实用的,下面给大家分享5款好用到爆的软件,很多懂电脑的人都在用。
104 0
工作和学习中都能用到的5款实用软件
|
存储 Python
热饭的测开成果盘点第二十二期:wqrfnium自动维护库
本期介绍的是一个组件,身为python的第三方库,已经被pypi收录,且国内镜像源也早已复制。也就是说可以通过pip install 来下载。这个组件包括:wqrfnium 和 wqrfnium_app 。他们都是基于python/selenium/appium的一个可以自动维护ui元素,抵抗ui元素定位变化的组件。
热饭的测开成果盘点第二十二期:wqrfnium自动维护库
|
JSON 前端开发 JavaScript
|
设计模式 前端开发 Java
|
缓存 Java 测试技术
CURD系统怎么做出技术含量--怎样引导面试
CURD系统怎么做出技术含量--怎样引导面试
CURD系统怎么做出技术含量--怎样引导面试
|
存储 前端开发 JavaScript
#yyds干货盘点# 前端一文带你理解如何解决工作中的需求
#yyds干货盘点# 前端一文带你理解如何解决工作中的需求
143 0
#yyds干货盘点# 前端一文带你理解如何解决工作中的需求
|
消息中间件 JavaScript Java
[技术杂谈]最近一段时间值得分享的内容(1)
[技术杂谈]最近一段时间值得分享的内容(1)
179 0
[技术杂谈]最近一段时间值得分享的内容(1)