欢迎光临散文网 会员登陆 & 注册

SpringMVC面试

2022-04-09 00:50 作者:吾之利剑  | 我要投稿

1、什么是SpringMVC(或者MVC是什么);*

    Spring MVC 是spring框架的一个模块,是一个基于mvc的web框架。

    Model(模型):数据模型,提供要展示的数据;

    View(视图):负责进行模型的展示;

    Controller(控制器)是应用程序中处理用户交互的部分;


2、SpringMVC工作流程;*

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

    2.DispatcherServlet收到请求调用处理器映射器HandlerMapping。

    3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet(此时处理器映射器返回的处理器对象包含:包名+类名+方法名)。

     4.DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

     5.处理器适配器HandlerAdapter将会根据适配的结果去执行Handler。

     6.Handler执行完成返回ModelAndView。

     7.HandlerAdapter将Handler执行结果ModelAndView返回到前端控制器DispatcherServlet

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

     9.视图解析器ViewReslover解析后返回具体View

    10.前端控制器DispatcherServlet对View进行渲染视图。

     11.前端控制器DispatcherServlet向用户响应结果。


3、SpringMVC主要组件(五大组件);*

  1. DispatcherServlet:前端控制器,用于请求到达前端控制器,由它调用其他组件处理用户的请求。

  2. HandlerMapping:处理器映射器,负责根据用户请求找到Handler(处理器),springmvc提供了不同的映射器实现方式。

  3. Handler:后端控制器(处理器),对具体的用户请求进行处理。

  4. HandlerAdapter:处理器适配器,通过HandlerAdapter对处理器进行执行。

  5. View Resolver:视图解析器,负责将处理结果生成view视图。

4、SpringMVC九大组件;

    1、MultipartResolver(文件处理器)     对应的初始化方法是initMultipartResolver(context),用于处理上传请求。      处理方法是将普通的request包装成MultipartHttpServletRequest,后者可以直接调用getFile方法获取File。

    2、LocaleResolver(当前环境处理器)      对应的初始化方法是initLocaleResolver(context),这就相当于配置数据库的方言一样,有了这个就可以对不同区域的用户显示不同的结果。SpringMVC主要有两个地方用到了Locale:       1、是ViewResolver视图解析的时候;       2、是用到国际化资源或者主题的时候。

    3、ThemeResolver(主题处理器) 对应的初始化方法是initThemeResolver(context),用于解析主题。 SpringMVC中一个主题对应一个properties文件,里面存放着跟当前主题相关的所有资源,如图片、css样式等。 SpringMVC的主题也支持国际化。

    4、HandlerMapping(处理器映射器) 对应的初始化方法是initHandlerMappings(context),这就是根据用户请求的资源uri来查找Handler的。 在SpringMVC中会有很多请求,每个请求都需要一个Handler处理,具体接收到一个请求之后使用哪个Handler进行处理呢?这就是HandlerMapping需要做的事。

    5、HandlerAdapters(处理器适配器) 对应的初始化方法是initHandlerAdapters(context),从名字上看,它就是一个适配器。 Servlet需要的处理方法的结构却是固定的,都是以request和response为参数的方法。 如何让固定的Servlet处理方法调用灵活的Handler来进行处理呢?这就是HandlerAdapters要做的事情。

    6、HandlerExceptionResolvers(异常处理器) 对应的初始化方法是initHandlerExceptionResolvers(context),其它组件都是用来干活的。 在干活的过程中难免会出现问题,出问题后怎么办呢?这就要有一个专门的角色对异常情况进行处理,在SpringMVC中就是HandlerExceptionResolver。

    7、RequestToViewNameTranslator(视图名称翻译器), 对应的初始化方法是initRequestToViewNameTranslator(context),有的Handler处理完后并没有设置View也没有设置ViewName,这时就需要从request获取ViewName了,如何从request中获取ViewName就是RequestToViewNameTranslator要做的事情了。

    8、ViewResolvers(页面渲染处理器) 对应的初始化方法是initViewResolvers(context),ViewResolver用来将String类型的视图名和Locale解析为View类型的视图。 View是用来渲染页面的,也就是将程序返回的参数填入模板里,生成html(也可能是其它类型)文件。

    9、FlashMapManager(参数传递管理器) 对应的初始化方法是initFlashMapManager(context),用来管理FlashMap的,FlashMap主要用在redirect重定向中传递参数。


5、SpringMVC有哪些注解;*

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

    @RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

    @ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。

    @Resource和@Autowired:@Resource和@Autowired都是做bean的注入时使用,其实            @Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。

        @PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数

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

    1、转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4"

    2、重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com"可能会问转发与重定向的区别。

7、Spring事务传播机制是什么;

Spring事务定义了7种传播机制:

    1、PROPAGATION_REQUIRED:默认的Spring事物传播级别,若当前存在事务,则加入该事 务,若不存在事务,则新建一个事务。

    2、PAOPAGATION_REQUIRE_NEW:若当前没有事务,则新建一个事务。若当前存在事务,则新建一个事务,新老事务相互独立。外部事务抛出异常回滚不会影响内部事务的正常提交。

    3、PROPAGATION_NESTED:如果当前存在事务,则嵌套在当前事务中执行。如果当前没有事务,则新建一个事务,类似于REQUIRE_NEW。

    4、PROPAGATION_SUPPORTS:支持当前事务,若当前不存在事务,以非事务的方式执行。

    5、PROPAGATION_NOT_SUPPORTED:以非事务的方式执行,若当前存在事务,则把当前事务挂起。

    6、PROPAGATION_MANDATORY:强制事务执行,若当前不存在事务,则抛出异常。

    7、PROPAGATION_NEVER:以非事务的方式执行,如果当前存在事务,则抛出异常。

8、扩展

    1、Spring、SpringMVC和Springboot的区别;

    2、拦截器与过滤器的区别;

    3、SpringMVC或者SpringBoot有哪些设计模式;


以上内容仅供参考,请合理利用搜索引擎!

SpringMVC面试的评论 (共 条)

分享到微博请遵守国家法律