文章目录

  • 前言
  • 面试题系列文章传送门
  • SpringMVC面试题内容
    • 1. 什么是Spring MVC?
    • 2. Spring MVC的优点什么是?
    • 3. Spring MVC的主要组件是什么?
    • 4. SpringMVC的工作原理是什么?
    • 5. 什么是DispatcherServlet
    • 6. 什么是Spring MVC框架的控制器?
    • 7. Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?
    • 8. SpingMVC中的控制器的注解一般用哪个,有没有别的注解可以替代?
    • 9. @Controller注解的作用?
    • 10. @RequestMapping注解用在类上面有什么作用?
    • 11. 请描述Spring MVC(DispatcherServlet)的工作流程?
    • 12. MVC是什么?MVC设计模式的好处有哪些?
    • 13. Spring MVC常用的注解有哪些?
    • 14. @ResponseBody注解的作用
    • 15. @PathVariable注解和@RequestParam注解的区别?
    • 16. SpringMVC中如何解决POST请求中文乱码问题,GET请求的又如何处理呢?
    • 17. Spring MVC怎么进行异常处理?
    • 18. 如果想在拦截的方法里面得到从前台传入的参数,怎么得到?
    • 19. 如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?
    • 20. 怎么样在方法里面得到request(session)?
    • 21. SpringMVC怎么样设定重定向和转发的?
    • 22. Spring MVC中函数的返回值是什么?
    • 23. Spring MVC用什么对象从后台向前台传递数据的?
    • 24. 怎么样把ModelMap里面的数据放入Session里面?
    • 25. SpringMVC中有个把视图和数据都合并在一起的,叫什么?


前言

作为应届生,处于找工作中ing。今年2月份刚刚整理出来的面试题,时间比较赶就没有按照模块分类排序了。总而言之,顺序比较乱,希望大家耐着性子 看。如果实在介意,评论告知,我会视情况作修改的。另外如果大家觉得我找的答案不够清晰,欢迎私信或者评论只出,我看到都会去修改的!


面试题系列文章传送门

2021年后端开发面试题整理合集


SpringMVC面试题内容

1. 什么是Spring MVC?

Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几个部分来简化开发。

2. Spring MVC的优点什么是?

(1)支持各种视图技术,而不仅仅局限于JSP;
(2)与Spring框架集成,如AOP、IoC容器等
(3)清晰的角色分配,比如前端控制器、处理器映射器、 处理器适配器、 视图解析器等等
(4) 支持各种请求资源的映射策略。

3. Spring MVC的主要组件是什么?

前端控制器(DispatcherServlet):用于接收请求、响应结果,相当于转发器,通过DispatcherServlet 可以减少与其它组件之间的耦合度。
处理器映射器(HandlerMapping):根据请求的URL来查找Handler
处理器适配器(HandlerAdapter):按照HandlerAdapter要求的规则去编写Handler,适配器才可以正确的去执行。
处理器(Handler):主要负责处理前端请求,完成业务逻辑,生成ModelAndView对象返回给HandlerAdapter
视图解析器 (ViewResolver):进行视图的解析,根据视图逻辑名解析成真正的视图
视图(View):是一个接口, 它的实现类支持不同的视图类型,比如jsp,freemarker,pdf等等

4. SpringMVC的工作原理是什么?

客户端发送请求到前端控制器DispatcherServlet,DispatcherServlet查询处理器适配器HandlerAdapter,找到处理请求的控制器Controller。Controller调用业务逻辑后,返回ModelAndView对象,DispatcherServlet查询ModelAndView对象,找到指定的视图View并将结果返回到客户端。

5. 什么是DispatcherServlet

Spring MVC 是围绕DispatcherServlet来设计的,也就是前端控制器,它用来处理所有的HTTP请求和响应。

6. 什么是Spring MVC框架的控制器?

控制器提供一个访问应用程序的行为,通常通过服务接口实现。控制器解析用户的输入并将其转换为一个由视图呈现给用户的模型。Spring用一个非常抽象的方式实现了一个控制层,允许用户创建多种用途的控制器。

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

SpringMVC的控制器是单例模式,在多线程访问的时候会存在线程安全问题。不要用同步的方式解决线程安全问题,会影响性能,解决方案是在控制器里面不能写成员字段。

8. SpingMVC中的控制器的注解一般用哪个,有没有别的注解可以替代?

SpringMVC中的控制器一般使用@Controller注解表示,也可以使用@RestController注解。@RestController注解相当于@ResponseBody注解 + @Controller注解。除此之外,一般不用别的注解代替。

9. @Controller注解的作用?

在Spring MVC 中,带有@Controller注解的控制器负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个模型Model ,然后再把该Model返回给对应的视图进行展示。

10. @RequestMapping注解用在类上面有什么作用?

@RequestMapping注解用于处理请求地址映射,可用于类或方法上。用于类上,表示该类中的所有响应请求的方法都是以该路径作为父路径

11. 请描述Spring MVC(DispatcherServlet)的工作流程?

用户的请求发送给前端控制器DispatcherServlet,DispatcherServlet收到请求后调用处理器映射器HandlerMapping,请求获取对应的处理器Handler。
HandlerMapping根据请求的URL找到具体的Handler,生成Handler对象和处理器拦截器一起返回给DispatcherServlet。
DispatcherServlet 调用处理器适配器HandlerAdapter,HandlerAdapter 经过适配调用具体的后端控制器Controller。
Controller执行完成后,返回一个ModelAndView对象,HandlerAdapter将Handler执行结果生成的ModelAndView对象返回给DispatcherServlet。
DispatcherServlet将ModelAndView对象传给视图解析器ViewResolver进行解析,ViewResolver解析完成后返回具体的视图View。
DispatcherServlet对View进行渲染,将数据模型填充到视图中,最后由DispatcherServlet响应用户的请求。

12. MVC是什么?MVC设计模式的好处有哪些?

mvc是一种模型-视图-控制器组成的三层架构的设计模式,用于实现前端页面的展现与后端业务数据处理的分离。
mvc设计模式的好处
分层设计,实现了系统中各个组件之间的解耦,有利于系统业务的扩展和维护。
.有利于系统的并行编程,提升开发效率。

13. Spring MVC常用的注解有哪些?

@RequestMapping注解:用于处理请求地址的映射,可用于类或方法上
@RequestBody注解:接收Http请求的Json数据,将Json转换为java对象。
@ResponseBody注解:将Conreoller方法返回的对象,转化为Json对象响应给客户端。

14. @ResponseBody注解的作用

该注解用于将Conreoller方法返回的对象,转化为Json对象响应给客户端。

15. @PathVariable注解和@RequestParam注解的区别?

@PathVariable注解:用来获得请求的URL中的动态参数,从路径中获取变量。
@RequestParam注解:从请求里面获取参数

16. SpringMVC中如何解决POST请求中文乱码问题,GET请求的又如何处理呢?

解决post请求乱码问题:在web.xml中配置一个CharacterEncodingFilter过滤器,并设置编码为utf-8
get请求中文参数出现乱码解决方法:在tomcat配置文件添加与项目工程编码一致的编码类型

17. Spring MVC怎么进行异常处理?

  1. 可以将异常抛给Spring框架来处理;
  2. 配置简单的异常处理器同时添加视图页面。

18. 如果想在拦截的方法里面得到从前台传入的参数,怎么得到?

直接在方法的形参里面声明这个参数,但名称必须和传过来的参数名称一样。

19. 如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

直接在方法中声明这个对象,Spring MVC会自动把属性值赋予这个对象。

20. 怎么样在方法里面得到request(session)?

直接在方法的形参中声明request(session),Spring MVC就会自动把request(session)对象传入

21. SpringMVC怎么样设定重定向和转发的?

在返回值前面加forward,可以让结果转发,在返回值前面加redirect,可以让返回值重定向

22. Spring MVC中函数的返回值是什么?

SpringMVC中函数的返回值有String, ModelAndView。ModelAndView类把视图和数据合并一起,一般用String比较好。

23. Spring MVC用什么对象从后台向前台传递数据的?

后台通过调用ModelMap对象里面的put方法传递数据,前台通过el表达式拿到数据。

24. 怎么样把ModelMap里面的数据放入Session里面?

通过使用@SessionAttributes注解,里面包含的字符串就是要放入session里面的key。

25. SpringMVC中有个把视图和数据都合并在一起的,叫什么?

ModelAndView


有问题欢迎私信/评论指出,谢谢您的观看,希望对您有帮助哦!
https://lianghongbin.blog.csdn/

更多推荐

2021年SpringMVC面试题