SpringMVC理解

在这里插入图片描述
在这里插入图片描述

preHandle是一个方法,它属于HandlerInterceptor接口,用于在Handler(即Controller)执行之前进行拦截和处理。preHandle方法可以返回true或false,如果返回true,表示继续执行后续的Handler和拦截器;如果返回false,表示中断执行,不再调用后续的Handler和拦截器1。
handlermapping是一个接口,它负责根据请求的URL找到对应的Handler(即Controller)。Spring MVC提供了多种实现handlermapping的方式,例如使用@RequestMapping注解、实现Controller接口、实现HttpRequestHandler接口等2。handlermapping接口只有一个方法getHandler,它返回一个HandlerExecutionChain对象,该对象包含了Handler和一系列的拦截器3。
handlerAdaptor是一个接口,它负责根据找到的Handler执行对应的方法,并返回一个ModelAndView对象。handlerAdaptor接口也有多种实现方式,例如AnnotationMethodHandlerAdapter、SimpleControllerHandlerAdapter、HttpRequestHandlerAdapter等4。handlerAdaptor接口只有一个方法handle,它接收一个HttpServletRequest、HttpServletResponse和一个Handler对象作为参数,并返回一个ModelAndView对象。
总之,preHandle、handlermapping和handlerAdaptor之间的关系是这样的:当DispatcherServlet收到一个请求时,它会从一组handlermapping中找到匹配的handlermapping,并调用其getHandler方法得到一个HandlerExecutionChain对象。 DispatcherServlet会遍历HandlerExecutionChain对象中的拦截器列表,并依次调用其preHandle方法。如果所有的preHandle方法都返回true,则继续执行下一步;否则,中断执行并返回响应。DispatcherServlet会从一组handlerAdaptor中找到匹配的handlerAdaptor,并调用其handle方法,传入HttpServletRequest、HttpServletResponse和Handler对象,得到一个ModelAndView对象。DispatcherServlet会将ModelAndView对象交给视图解析器ViewResolver,得到一个View对象,并调用其render方法渲染视图并返回响应。

Handler是一个接口,它表示一个可以处理HTTP请求的对象,它有多个实现类,如Controller、HttpRequestHandler、Servlet等。HandlerMethod是一个类,它封装了一个标注了@RequestMapping的控制器方法的信息,包括方法本身、方法参数、方法注解、所属类等。HandlerMethod也是一种Handler,它实现了Handler接口。
Handler和HandlerMethod之间的关系是一对多的,即一个Handler可以对应多个HandlerMethod,但一个HandlerMethod只能对应一个Handler。例如,一个Controller类可以有多个@RequestMapping方法,每个方法都会被封装成一个HandlerMethod对象,但这些对象都属于同一个Controller对象。
Spring MVC框架使用HandlerMapping来根据请求的URL和条件来查找匹配的Handler和HandlerMethod,并使用HandlerAdapter来执行找到的Handler和HandlerMethod。其中,RequestMappingHandlerMapping是一种特殊的HandlerMapping,它专门用于查找标注了@RequestMapping的控制器方法,并将它们注册到一个内部的映射表中。RequestMappingHandlerAdapter是一种特殊的HandlerAdapter,它专门用于执行找到的HandlerMethod,并处理其返回值和响应状态码。

1.表示层分为负责页面展示的V也就是前端静态资源,用于和用户交互+界面展示,还有对应C用于控制跳转调用业务逻辑层。通过控制器加前端页面实现了表示层 ,业务逻辑层包含他的Service 接口和Service的实现类数据访问层表示直接对数据库进行访问的操作本项目使用mybatisplus对mybatis进行功能增强配合实现对数据库增删改查操作。
当用户使用界面时会发送一个restful web请求,所谓restful web请求实际上就是URL+请求方式,当服务器接受到一个URL请求后会根据请求路径,对其进行响应处理,由于本项目使用了过滤去所以这个请求要首先经过过滤器过滤,使用过滤器时使用了@webFilter注解设置urlPatterns = “/*“拦截所有请求重写doFilter对请求进行过滤放行.
经过DispatcherServlet请求HandlerMapping和HandlerAdaptor从而调用对应Controller对请求进行处理。开发时这一阶段过程使用到了@Controller,@RequestMapping,@RestConroller,Contoller 表明类为控制器 Requestmapping请求会根据Requestmapping中的值来寻找对应的控制器和对应方法来对请求进行处理。下面举一个例子对其说明

当发送请求…/employee/login 请求方式为POST时候会寻找到我们所写的这个控制器下的login方法,@RestController包含了两个注解 它相当于@Controller + @ResponseBody,表示该控制器的所有方法都会返回JSON或XML格式的数据,而不需要视图解析器。控制器调用了通过@Autowired注入了EmployeeService对象。@Autowired的作用是让Spring自动装配Bean对象,它可以对类成员变量、方法和构造函数进行标注.控制器调用了业务逻辑层的对应Service 接口和Service的实现类,Service 接口定义了需要对数据库进行操作的抽象方法,ServiceImpl实现了抽象方法,并且调用了数据访问层被标注@Mppaer的文件对数据库进行增删改查操作,操作完成后返回控制器完成剩余操作,控制器会将结果返回给处理器适配器(HandleAdaptor) ,之后继续返回给中央调度器(DispatcherServlet),如果返回的数据时Jason文件不会进行视图解析直接返回给浏览器,如果ModelAndIView会交给中央调度器(DispatcherServlet)进行视图解析后返回给浏览器。
涉及的@RequestBody表示JASON解析为JAVA类,举例过程中涉及到的实体类Employee需要与表中数据对应。对数据库操作设计Mybaitsplus提供的方法,插入方法:用于向数据库中添加一条或多条记录,如save(), saveBatch(), saveOrUpdate()等更新方法:用于修改数据库中的一条或多条记录,如updateById(), updateBatchById(), update()等删除方法。用于删除数据库中的一条或多条记录,如removeById(), removeByMap(), remove(),用于从数据库中查询一条或多条记录,如selectById(), selectByMap(), selectOne()。分页方法:用于对查询结果进行分页处理,如selectPage(), selectMapsPage()等.连接数据库时需要YML文件,截图如下所示

这里配置了数据源 数据库类型 驱动类型 用户名 密码等
2.Springboot 采用约定大于配置的思想,使用Springboot后我们可以省去编写XML文件,同时一定程度上解决了很多配置错误例如版本不匹配等问题。并且Springboot内嵌了服务器这一点非常棒,之前配置tomcat等服务器是个非常麻烦的事情,按现在我们使用内嵌服务器可以很方便的测试和启动。与此同时Springboot可以了利用starter继承很多种框架使我们可以轻松开发。Spring Boot支持多种编程语言,如Java, Kotlin, Groovy等,也支持多种数据源,如MySQL, PostgreSQL, MongoDB等,还支持多种模板引擎,如Thymeleaf, Freemarker, Velocity等。这样可以让我们根据项目的需求和喜好来选择合适的技术栈,也可以轻松地切换和替换.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值