SpringMVC常见面试题(2024最新)
作者:mmseoamin日期:2024-04-01

目录

  • 前言
  • 1.简单介绍下你对springMVC的理解?
  • 2.说一说SpringMVC的重要组件及其作用
  • 3.SpringMVC的工作原理或流程
  • 4.SpringMVC的优点
  • 5.SpringMVC常用注解
  • 6.SpringMVC和struts2的区别
  • 7.怎么实现SpringMVC拦截器
  • 8.SpringMvc的控制器是不是单例模式?如果是,有什么问题?怎么解决?
  • 9.在 SpringMVC 中拦截器的使用步骤是什么样的?
  • 10.说一下SSM和SSH都代表哪些框架?

    前言

    我整理的都是常见的,很多不常见的,几乎问不到的,我就没整理

    java最新面试题(java基础、集合、多线程、jvm、锁、算法、CAS、Redis、数据库、mybatis、spring、springMVC、springBoot、微服务)

    1.简单介绍下你对springMVC的理解?

    是基于java的MVC设计模式的轻量级MVC框架,通过对Model、view、Controller分离,把web应用分成逻辑清晰的几部分,简化了开发,方便了开发人员的配合。

    2.说一说SpringMVC的重要组件及其作用

    前端控制器(DispatcherServlet): 接收请求、响应结果,解耦了其他组件。

    处理器映射器(HandlerMapping): 根据url去查找对应的处理器(Handler)。

    处理器适配器(HandlerAdapter): 执行处理器(Handler)。

    处理器(Handler): 处理业务逻辑的类,程序员编写。

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

    视图(View): 是一个接口,它的实现类支持不同类型的视图,jsp,pdf等。

    3.SpringMVC的工作原理或流程

    SpringMVC常见面试题(2024最新),在这里插入图片描述,第1张

    ①用户发送请求,前端控制器接到请求。

    ②前端控制器把请求分发给处理器映射器。

    ③处理器映射器根据url去找对应的处理器。

    ④获取处理器,返回给处理器映射器。

    ⑤处理器映射器返回给前端控制器。

    ⑥前端控制发给处理器适配器,请求执行处理器。

    ⑦处理器适配器通知处理器执行业务逻辑。

    ⑧然后处理器返回ModelAndView。

    ⑨处理器适配器把ModelAndView返回给前端控制器。

    ⑩前端控制器发给视图解析器,视图解析器根据视图名称去查询视图。

    ⑪返回真正的视图。

    ⑫渲染视图。

    ⑬返回视图,给前端控制器。

    ⑭然后响应用户的请求。

    4.SpringMVC的优点

    ①支持各种视图。JSP、PDF等

    ②可以与spring集成。

    ③各个组件分工明确。解耦。

    5.SpringMVC常用注解

    @RequestMapping:用于处理请求的URL,可以用于方法或类。

    @RequestBody:接受请求的json数据,转换成java对象。

    @ResponseBody:将controller返回对象,转成json响应回去。

    @RestController:相当于@Controller和@ResponseBody。

    @PathVariable:用于接收路径参数,比如@RequestMapping(“/hello/{name}”)声明的路径,将注解放在参数前,即可获取该值

    6.SpringMVC和struts2的区别

    ①SpringMVC入口是servlet(前端控制器),struts2入口是过滤器。

    ②SpringMVC基于方法开发,struts2基于类开发。

    7.怎么实现SpringMVC拦截器

    ①实现HandlerInterceptor接口。

    ②继承适配器类。

    8.SpringMvc的控制器是不是单例模式?如果是,有什么问题?怎么解决?

    是单例模式,在多线程访问的时候有线程安全问题。

    解决方案是不在控制器里面写可变状态量,如果需要使用这些可变状态,可以使用ThreadLocal机制解决,为每个线程单独生成一份变量副本,独立操作,互不影响。

    9.在 SpringMVC 中拦截器的使用步骤是什么样的?

    定义拦截器类: SpringMVC 为 我 们 提 供 了 拦 截 器 规 范 的 接 口 , 创 建 一 个 类 实 现 HandlerInterceptor,重写接口中的抽象方法。

    preHandle 方法: 在调用处理器之前调用该方法,如果该方法返回 true 则请 求继续向下进行,否则请求不会继续向下进行,处理器也不会调用。

    postHandle 方法: 在调用完处理器后调用该方法 。

    afterCompletion 方法: 在前端控制器渲染页面完成之后调用此方法。

    10.说一下SSM和SSH都代表哪些框架?

    SSM:SpringMVC,Spring,Mybatis。

    SSH:struts,Spring,Hibernate。