知识点总结--day07(Spring-MVC框架)
目录1Spring MVC的核心组件有哪些?2SpringMVC的请求执行流程是什么样的?3SpringMVC的拦截器用过没有?4. SpringMVC怎么处理异常?5. 聊聊SpringMVC中的常用注解?末尾页1Spring MVC的核心组件有哪些?好的SpringMVC中的组件比较多职责各不相同那我就说一下核心的几个。那首先第一个就是DispatchServlet叫核心控制器这个是SpringMVC中最为核心的组件其本质就是一个Servlet用于将请求分发给相应的处理程序通过DispatchServlet这个组件就可以降低组件之间的耦合度。那第二个核心组件就是HandlerMapping叫处理器映射器这个组件的作用就是根据请求的url匹配能够处理这次请求的Handler指Controller中的方法那还有就是HandlerAdapter叫处理器适配器其作用呢就是来执行Handler处理器的并获取到执行的结果。第四个核心组件就是Handler叫处理器其实可以简单理解为就是我们开发的Controller中的方法。最后一个就是视图解析器 ViewResolver其作用是进行视图的解析根据逻辑视图名解析成真正的视图View。当然在现在前后端分离的开发模式中基本上也不存在对应的jsp、freemarker这一类的视图解析了。那刚才所提到的这些个组件呢只有一个组件是需要我们开发的就是Handler其他的组件都不需要我们自己开发框架底层已经提供了这些组件并且现在我们直接基于SpringBoot进行项目开发这些组件我们也不需要在做额外的配置了SpringBoot底层已经自动配置好了。2SpringMVC的请求执行流程是什么样的?SpringMVC的请求执行流程如下所示1). 用户发送请求到前端控制器DispatcherServlet 。2). DispatcherServlet接收到请求之后会调用HandlerMapping处理器映射器来查找能够处理本次请求的处理器生成处理器对象及处理器拦截器(如果有)然后再一起返回给DispatcherServlet 。3). DispatcherServlet调用HandlerAdapter处理器适配器让其执行对应的Handler。4). HandlerAdapter执行对应的HandlerController中的方法并将执行的结果封装在ModelAndView中返回给DispatcherServlet。5). DispatcherServlet将ModelAndView传给ViewReslover视图解析器视图解析器负责对视图进行解析处理最后返回视图对象View。6). DispatcherServlet根据View进行渲染视图即将模型数据填充至视图中。7). DispatcherServlet响应用户 。3SpringMVC的拦截器用过没有?必答内容拦截器的应用场景还是很多的比如在项目中我们基于拦截器实现登录校验的功能、参数统一转换处理、数据的脱敏、统一编码处理等功能。 在SpringBoot项目拦截器的使用分为两步进行第一步呢需要定义一个类实现HandlerInterceptor接口然后再实现接口中的方法比如preHandle、postHandle、afterCompletion。第二步呢就是需要定义一个配置类然后实现WebMvcConfigure然后在这个配置类中配置拦截器指定拦截器的拦截路径、排除哪些路径等信息。可能继续追问的问题你说的这些个功能过滤器好像也能干那拦截器Interceptor 与 过滤器Filter有什么区别?接口规范不同过滤器需要实现Filter接口而拦截器需要实现HandlerInterceptor接口。拦截范围不同过滤器Filter会拦截web服务器中的所有资源而Interceptor只会拦截Spring环境的资源主要就是Controller。实现机制不同过滤器在实现上是基于函数回调的拦截器是基于java的反射机制的属于面向切面编程的一种运用。那其实在开发中很多的功能我们既可以通过过滤器Filter来实现也可以通过拦截器Interceptor来实现。4. SpringMVC怎么处理异常?SpringMVC的异常处理就比较简单了可以直接使用Spring MVC中的全局异常处理器对异常进行统一处理此时在我们的三层架构中都不需要处理异常了如果运行过程中出现异常最终会被全局异常处理器捕获然后返回统一的错误信息。开发一个全局异常处理器需要使用到两个注解RestControllerAdvice 、ExceptionHandlerRestControllerAdvice加在全局异常处理器的这个类上而ExceptionHandler加在异常处理的方法上来指定这个方法捕获什么样的异常。那在定义异常处理方法的时候可以也定义多个根据业务的需求可以针对不同类型的异常进行不同的处理。5. 聊聊SpringMVC中的常用注解?SpringMVC中的注解就比较多了平时项目开发中比较常用的注解有以下几个1、RequestMapping用于映射请求路径可以定义在类上和方法上。用于类上则表示类中的所有的方法都是以该地址作为父路径 。我们也可以基于该注解中的method属性来限定请求方式由此也衍生了几个注解如GetMapping、PostMapping、PutMapping、DeleteMapping。2、RequestBody该注解实现接收请求的json数据将json转换为java对象 。3、RequestParam指定请求参数的名称 如果请求参数名与方法形参不一致可以使用此注解映射绑定 。也可以使用该注解来设置参数的默认值。4、PathViriable从请求路径中获取请求参数(/user/{id})传递给方法的形式参数 。5、ResponseBody注解实现将controller方法返回值直接作为请求体响应如果返回值是对象/集合会转化为json对象响应给客户端 。6、RequestHeader获取指定的请求头数据 。末尾页