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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 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框架理论知识!
|
缓存 Java 数据库连接
几分钟带你快速了解MyBatis框架理论知识!
几分钟带你快速了解MyBatis框架理论知识!
|
3月前
|
Java API UED
【实战秘籍】Spring Boot开发者的福音:掌握网络防抖动,告别无效请求,提升用户体验!
【8月更文挑战第29天】网络防抖动技术能有效处理频繁触发的事件或请求,避免资源浪费,提升系统响应速度与用户体验。本文介绍如何在Spring Boot中实现防抖动,并提供代码示例。通过使用ScheduledExecutorService,可轻松实现延迟执行功能,确保仅在用户停止输入后才触发操作,大幅减少服务器负载。此外,还可利用`@Async`注解简化异步处理逻辑。防抖动是优化应用性能的关键策略,有助于打造高效稳定的软件系统。
71 2
|
6月前
|
XML Java 数据格式
🚀今天,我们来详细的聊一聊SpringBoot自动配置原理,学了这么久,你学废了吗?
🚀今天,我们来详细的聊一聊SpringBoot自动配置原理,学了这么久,你学废了吗?
110 0
|
监控 NoSQL 安全
Spring Boot 怎么做监控?这篇总算整明白了。。。
Spring Boot 怎么做监控?这篇总算整明白了。。。
2108 8
Spring Boot 怎么做监控?这篇总算整明白了。。。
|
XML 负载均衡 Dubbo
花了快2个月!自己动手写了一个简单的RPC框架
大概2个月前,我说过要利用业余时间写一个简单的 RPC 框架,今天总算将其开源出来,希望对小伙伴们有帮助。 虽说RPC 的原理实际不难,但是,自己在实现的过程中自己也遇到了很多问题。Guide-rpc-framework目前只实现了 RPC 框架最基本的功能,一些可优化点都在下面提到了,有兴趣的小伙伴可以自行完善。
|
前端开发
前端知识案例学习9-色差故障实现
前端知识案例学习9-色差故障实现
47 0
前端知识案例学习9-色差故障实现
|
算法 uml
一文简单全面了解策略模式的使用【花几分钟轻松掌握一个知识点】
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。 本文重点:介绍策略模式概念以及实际应用。 干货满满,建议收藏,需要用到时常看看。小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~
151 0
一文简单全面了解策略模式的使用【花几分钟轻松掌握一个知识点】
|
XML Java 数据库
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
|
JSON Prometheus 监控
Spring Boot 怎么做监控?这篇总算整明白了。。。(2)
Spring Boot 怎么做监控?这篇总算整明白了。。。(2)
217 0
Spring Boot 怎么做监控?这篇总算整明白了。。。(2)