SpringMVC面试题 Spring MVC 的优点 MVC 是什么? MVC 设计模式的好处有哪些 简单的谈一下SpringMVC的工作流程 Spring MVC 的控制器是不是单例模式,如果是,有什么问题怎么解决? 什么是DispatcherServlet 几个常用注解 说出SpringMVC常用的5个注解?如何使用 SpringMVC完成JSON操作?: SpringMVC怎么样设定重定向和转发的? 怎么样在方法里面得到Request,或者Session? SpingMvc 中的控制器的注解一般用哪个,有没有别的注解可以替代?

  • 可以支持各种视图技术而不仅仅局限于JSP ;
  • 与Spring 框架集成
  • 有清晰的角色分配
  • 支持各种请求资源的映射策略。

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

mvc 是一种设计模式(设计模式就是日常开发中编写代码的一种好的方法和经 验的总结)。模型(model)-视图(view)-控制器(controller) , 三层架构 的设计模式。用于实现前端页面的展现与后端业务数据处理的分离。

简单的谈一下SpringMVC的工作流程

1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet调用HandlerAdapter处理器适配器
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户

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

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

什么是DispatcherServlet

Spring 的MVC 框架是围绕DispatcherServlet 来设计的, 它用来处理所有的HTTP 请求和响应。

为什么设计成单例设计模式?

1.性能(不用每次请求都创建对象)

2.不需要多例(不要在控制器中定义成员变量)

几个常用注解

  • @RequestMapping: 用千处理请求url 映射的注解, 可用千类或方法上。用 千类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。
  • @RequestBody 注解实现接收http 请求的json 数据, 将json 转换为Java对象。
  • @ResponseBody注解实现将conreoller 方法返回对象转化为json 对象响应给客户。
  • @Conntroller : 控制器的注解, 表示是表现层不能用用别的注解代替

说出SpringMVC常用的5个注解?如何使用 SpringMVC完成JSON操作?:

常用的 5 个注解 @RequestMapping 、 @PathVariable 、 @RequestParam 、 @RequestBody 、@ResponseBody

如何使用 SpringMVC 完成 JSON 操作:

①. 配置 MappingJacksonHttpMessageConverter
②. 使用 @RequestBody 注解或 ResponseEntity 作为返回值

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

在返回值前面加"forward:“就可以让结果转发,譬如"forward:user.do?name=method4” 在返回值前面加"redirect:“就可以让返回值重定向,譬如"redirect:http://www.baidu.com”

怎么样在方法里面得到Request,或者Session?

直接在方法的形参中声明request,SpringMvc就自动把request对象传入

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

@ RestController = @ResponseBody + @Controller