架构师面试题系列之Spring MVC面试专题及答案(31题)
目录
- 1、什么是 SpringMvc?说一下你对它的理解
- 2、SpringMVC 的优点 :
- 3、SpringMVC 工作原理?
- 4、SpringMVC 的主要组件?
- 5、讲下 SpringMvc 的执行流程
- 6、SpingMvc 中的控制器的注解一般用那个,有没有别的注解可以替代?
- 7、如果在拦截请求中,想拦截 get 方式提交的方法,怎么配置?
- 8、怎样在控制器方法里面得到 request 或者 session?
- 9、如果想在拦截的方法里面得到从前台传入的参数,怎么得到?
- 10、前台传入多个参数,并且这些参数都是一个对象的属性,怎么进行参数绑定?
- 11、SpringMVC 用什么对象从后台向前台传递数据的?
- 12、SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决?
- 13、如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?
- 14、SpingMvc 中的控制器的注解一般用那个,有没有别的注解可以替代?
- 15、 @RequestMapping 注解用在类上面有什么作用?
- 16、怎么样把某个请求映射到特定的方法上面?
- 17、如果在拦截请求中,我想拦截 get 方式提交的方法,怎么配置?
- 18、怎么样在方法里面得到 Request,或者 Session?
- 19、我想在拦截的方法里面得到从前台传入的参数,怎么得到?
- 20、如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快
- 21、SpringMvc 中函数的返回值是什么?
- 22、SpringMVC 怎么样设定重定向和转发的?
- 23、SpringMvc 用什么对象从后台向前台传递数据的?
- 24、SpringMvc 中有个类把视图和数据都合并的一起的,叫什么?
- 25、怎么样把 ModelMap 里面的数据放入 Session 里面?
- 26、SpringMvc 怎么和 AJAX 相互调用的?
- 27、当一个方法向 AJAX 返回特殊对象,譬如 Object,List 等,需要做什么处理?
- 28、当一个方法向 AJAX 返回特殊对象,譬如 Object,List 等,需要做什么处理?
- 29、如何解决 POST 请求中文乱码问题,GET 的又如何处理呢?
- 30 、SpringMvc 里面拦截器是怎么写的
- 31、什么是 MVC 模式?
- 总结
1、什么是 SpringMvc?说一下你对它的理解
答:Spring MVC 是一个基于 Java 的实现了 MVC 设计模式的请求驱动类型的轻
量级 Web 框架,通过把 Model,View,Controller 分离,将 web 层进行职责解
耦,把复杂的 web 应用分成逻辑清晰的几部分,简化开发,减少出错,方便组
内开发人员之间的配合。
2、SpringMVC 的优点 :
答:
(1)可以支持各种视图技术,而不仅仅局限于 JSP;
(2)与 Spring 框架集成(如 IoC 容器、AOP 等);
(3)清晰的角色分配: 前端控制器(dispatcherServlet) , 请求到处理器映射
(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器
(ViewResolver)。
(4) 支持各种请求资源的 映射策略。
3、SpringMVC 工作原理?
答:
1)客户端发送请求到 DispatcherServlet
2)DispatcherServlet 查询 handlerMapping 找到处理请求的 Controller
3)Controller 调用业务逻辑后,返回 ModelAndView
4)DispatcherServlet 查询 ModelAndView,找到指定视图
5)视图将结果返回到客户端
4、SpringMVC 的主要组件?
答:
1)前端控制器:其作用是接收用户请求,然后给用户反馈结果。它的作用相当
于一个转发器或中央处理器,控制整个流程的执行,对各个组件进行统一调
度,以降低组件之间的耦合性,有利于组件之间的拓展。
2)处理器映射器:其作用是根据请求的 URL 路径,通过注解或者 XML 配置,
寻找匹配的处理器信息。
3)处理器适配器:其作用是根据映射器处理器找到的处理器信息,按照特定规
则执行相关的处理器(Handler)。
4)处理器:其作用是执行相关的请求处理逻辑,并返回相应的数据和视图信
息,将其封装至 ModelAndView 对象中。
5)视图解析器:其作用是进行解析操作,通过 ModelAndView 对象中的 View
信息将逻辑视图名解析成真正的视图 View(如通过一个 JSP 路径返回一个真正
的 JSP 页面)。
6)视图:View 是一个接口,实现类支持不同的 View 类型(JSP、FreeMarker、
Excel 等)。
5、讲下 SpringMvc 的执行流程
答:系统启动的时候根据配置文件创建 spring 的容器, 首先是发送 http 请求
到核心控制器 disPatherServlet,spring 容器通过映射器去寻找业务控制器,使
用适配器找到相应的业务类,在进业务类时进行数据封装,在封装前可能会涉
及到类型转换,执行完业务类后使用 ModelAndView 进行视图转发,数据放在
model 中,用 map 传递数据进行页面显示。
6、SpingMvc 中的控制器的注解一般用那个,有没有别的注解可以替代?
1.一般使用@Controller 注解标识控制器。
2.也可以使用@RestController 注解替代@Controller 注解,@RestController 相当
于@ResponseBody+@Controller,表示控制器中所有的方法都返回 JSON 格式数
据,一般不使用其他注解标识控制器。
7、如果在拦截请求中,想拦截 get 方式提交的方法,怎么配置?
可以在@RequestMapping 注解里面加上 method=RequestMethod.GET。
@RequestMapping(value=“/toLogin”,method = RequestMethod.GET)public
ModelAndView toLogin(){}
可以使用@GetMapping 注解。
@GetMapping(v