首页 > 其他分享 >面试题之:SpringMVC框架

面试题之:SpringMVC框架

时间:2022-08-31 16:13:02浏览次数:57  
标签:面试题 调用 请求 框架 SpringMVC 控制器 视图 处理器

1、谈一下你对 SpringMVC 框架的理解(了解)
  SpringMVC 是一个基于 Java 的、实现了 MVC 设计模式的请求驱动类型的轻量级 Web框架,通过把 Model,View,Controller 分离,

将web 层进行职责解耦,把复杂的 web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

  在我看来,SpringMVC 就是将我们原来开发在 servlet 中的代码拆分了,一部分由SpringMVC 完成,一部分由我们自己完成

2、SpringMVC 主要组件(必会)

① 前端控制器 DispatcherServlet:也称请求分发控制器(项目中处理web请求的大管家)

  SpringMVC的核心就是DispatcherServlet,其实质是一个HttpServlet,负责将请求分发,所有请求都经过它来统一分发。

② 处理器映射器 HandlerMapping:根据请求的 URL 来查找 Handler

③ 处理器适配器 HandlerAdapter:负责执行 Handler

④ 处理器 Handler:处理业务逻辑的 Java 类

⑤ 视图解析器 ViewResolver:进行视图的解析,根据视图逻辑名将 ModelAndView 解析成真正的视图(view)

⑥ 视图 View:View 是一个接口, 它的实现类支持不同的视图类型,如 jsp,freemarker,pdf 等等

3、谈一下 SpringMVC 的执行流程以及各个组件的作用(必会)

 

1. 用户发送请求到前端控制器

2.前端控制器收到请求调用处理器映射器去查找处理器

3. 处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器一并返回给 DispatcherServlet。

4. 前端控制器调用处理器适配器

5. 处理器适配器去调用自定义的处理器类(Controller,也叫后端控制器)。

6.自定义的处理器类将得到的参数进行处理并返回结果给处理器适配器

7. 处理器适配器将得到的结果返回给前端控制器

8. 前端控制器将 ModelAndView传给视图解析器

9. 视图解析器将得到的参数从逻辑视图转换为物理视图并返回给前端控制器

10. 前端控制器调用物理视图进行渲染并返回

11. 前端控制器将渲染后的结果返回

4、SpringMVC 的常用注解(必会)

  @Controller  处理器类

  @RequestMapping  映射请求

  @RequestParam  作用:把请求中指定名称的参数赋值给控制器中的形参。

  @RequestBody  作用:用于获取请求体内容。get 请求方式不适用。

  @RsponseBody  作用:其实是将方法返回值转为json格式的数据,写到响应报文中的响应体中。

  @PathVaribale  作用:用于绑定url中的占位符。

 5、在 SpringMVC 中拦截器的使用步骤是什么样的?(必会)

  ① 定义拦截器类:
    定义拦截器实现类实现HandlerInterceptor,重写接口中的抽象方法;
    preHandle 方法:在调用处理器之前调用该方法,如果该方法返回 true 则请求继续向下进行,否则请求停止向下进行,处理器也不           会被调用
    postHandle 方法:在调用完处理器后调用该方法
    afterCompletion 方法:在前端控制器渲染页面完成之后调用此方法
  ② 注册拦截器:写一个配置类注册拦截器,配置类上添加@Configuration注解

6、谈一下 SpringMVC 统一异常处理的思想和实现方式(必会)

  使用 SpringMVC 之后,代码的调用者是 SpringMVC 框架,也就是说最终的异常会抛到框架中,然后由框架指定异常处理类进行统一处理
    方式一: 创建一个自定义异常处理器(实现 HandlerExceptionResolver 接口),并实现里面的异常处理方法,然后将这个类交给 Spring 容器管理
    方式二: 在类上加注解 @ControllerAdvice 表明这是一个全局异常处理类,在方法上加注解 @ExceptionHandler 、注解中有一个value 属性,指定可以处理的异常类型

 

标签:面试题,调用,请求,框架,SpringMVC,控制器,视图,处理器
From: https://www.cnblogs.com/Cienu7u/p/16641629.html

相关文章

  • 前端面试题每日3题——2022/08/30
    1以下代码执行后,控制台中的输出内容为?for(leti=0;i<3;i++){setTimeout(()=>{console.log(i);});}for(varj=0;j<3;j++){setTimeout......
  • JAVA面试题总结归纳
    问题一:JAVA的原始数据类型有哪些,它们的大小以及其对应的封装类是什么?数据类型对应大小对应的封装类boolean1bit,boolean类型单独使用是4个字节,而在数组中又是1个......
  • SpringMVC 01: SpringMVC + 第一个SpringMVC项目
    SpringMVCSpringMVC概述:是基于MVC开发模式的框架,用来优化控制器是Spring家族的一员,也具备IOC和AOP什么是MVC:它是一种开发模式,是模型视图控制器的简称,所有的......
  • 跨框架组件库 与使用 Lit 的 Web 组件(第一部分)
    跨框架组件库与使用Lit的Web组件(第一部分)WebComponents是一套新的技术,允许我们创建自定义元素并将其功能封装在其他代码之外,使它们在您的Web应用程序中具有高度......
  • 面试题-什么叫优雅降级和渐进增强?
    优雅降级和渐进增强印象中是随着CSS3流出来的一个概念。由于低级浏览器不支持CSS3,但CSS3的效果又太优秀不忍放弃,所以在高级浏览中使用CSS3而低级浏览器只保证最......
  • web框架与django
    web框架手写web框架1.web框架可以看成是一个功能强大的socker服务端先根据socket套接字编写一个简易的服务端importsocketserver=socket.socket()server.bind(('......
  • JS面试题一
    1、所有对象都有原型吗?并不是所有对象都有原型;比如使用Object.create()创建一个对象,我们传递一个参数,那么创建的对象的原型则会指向传递的那个对象;而不传参数,也就是创......
  • SpringMvc请求流程源码解析
    目录SpringMvc请求流程图请求流程粗讲解方法细讲doDispatcher-->核心找到Handler#getHandlergetHandler(request)mapping.getHandler(request)getHandlerInternal()looku......
  • 杭州市民卡面试题【杭州多测师】【杭州多测师_王sir】
    市民卡面试题:1.自我介绍2.项目介绍一下3.项目里做接口的部分是哪些4.自动化做过么5.接口用什么做的6.自动化用什么做的7.Linux查文件命令8.数据库用过么  ......
  • MockServer 服务框架设计
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取大部分现有的mock工具只能满足HTTP协议下简单业务场景的使用。但是面对一些复杂的业务场景......