Spring mvc 基础面试

Spring mvc 流程

   

   

为什么要用spring-mvc?

首先spring-mvc是基于Java设计的,实现了Web MVC设计模式,是基于请求驱动的轻量级web级框架。Spring-mvc就是要简化日常的web开发,让开发人员直接面向核心业务的开发。

参数的映射、文件的上传、支持各种视图解析器

    servlet只有doGet和doPost,一个servlet类只能处理一个url-pattern

    SpringMVC类里面可以通过RequestMapping处理很多请求,并且支持Rest风格的请求,如DELETE/PUT等

    SpringMVC参数的映射可以直接封装成实体类

SpringMVC的

异常处理、

转换器(配合拦截器使用)、

拦截器(权限 日志 事务)可以让开发更便利。

   

   

MVC架构?

将应用按照model + view + controller 进行分离。

View : 主要负责与前端交互,进行请求的发送和响应的接收。

Mdel: 业务模型,根据不同的业务需求而设计不同的业务模型。

Controller:控制层,将view 与 model 匹配在一起。Controller 层并不会处理数据。

   

SpringMVC的特点:

清晰的角色划分:控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(formobject)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、视图解析器(view resolver)等。每一个角色都可以由一个专门的对象来实现。

强大而直接的配置方式:将框架类和应用程序类都能作为JavaBean配置,支持跨多个context的引用,例如,在web控制器中对业务对象和验证器(validator)的引用。

可适配、非侵入:可以根据不同的应用场景,选择合适的控制器子类 (simple型、command型、form型、wizard型、multi-action型或者自定义),而不是从单一控制器 (比如Action/ActionForm)继承。

可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。

可定制的绑定(binding) 和验证(validation):比如将类型不匹配作为应用级的验证错误, 这可以保存错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象,需要手动解析它并转换到业务对象。

可定制的handlermapping和view resolution:Spring提供从最简单的URL映射, 到复杂的、专用的定制策略。与某些webMVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活。

灵活的model转换:在Springweb框架中,使用基于Map的 键/值对来达到轻易地与各种视图技术的集成。

可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。

简单而强大的JSP标签库(SpringTag Library):支持包括诸如数据绑定和主题(theme) 之类的许多功能。

JSP表单标签库:在Spring2.0中引入的表单标签库,使得在JSP中编写 表单更加容易。

Spring Bean的生命周期可以被限制在当前的HTTP Request或者HTTP Session。

   

1、角色划分清晰

Dispatcher调度器>HandlerMapping映射器>HandlerAdapter适配器>controller控制器>viewResolver视图控制器(model 模型对象、validator验证器、command object命令对象)。

   

2、springMVC Model ModelMap 和 ModelAndView的区别???

Model、map 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类,主要用来传递数据。

ModelAndView: 有2个作用:1、指定跳转页面 2、传递数据

   

3、Spring mvc的监听器、拦截器、过滤器???

1、过滤器:

   

依赖于servlet容器;

在实现上基于函数回调,可以对几乎所有请求进行过滤;

缺点是一个过滤器实例只能在容器初始化时调用一次;

使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改 HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等。

   

2、拦截器:

   

依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架;

在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用;

缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理;

由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。

   

3、监听器

   

实现了javax.servlet.ServletContextListener 接口的服务器端程序;

随web应用的启动而启动;

只初始化一次;

随web应用的停止而销毁;

主要作用是: 做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。如SpringMVC的监听器org.springframework.web.context.ContextLoaderListener,实现了SpringMVC容器的加载、Bean对象创建、DispatchServlet初始化等。

   

过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。

拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。

监听器(Listener):当一个事件发生的时候,你希望获得这个事件发生的详细信息,而并不想干预这个事件本身的进程,这就要用到监听器。

   

https://blog.csdn.net/a745233700/article/details/80963758

代理、动态代理、静态代理

   

   

   

   

   

   

   

   

   

   

   

posted @ 2020-10-17 15:42  黑质白章  阅读(299)  评论(0编辑  收藏  举报