spring\springMVC

  • spring
  • spring框架有哪些主要模块?
  • spring框架带来哪些好处?
  • 开发中主要使用 Spring 的什么技术 ?
  • 什么是控制反转IOC,什么是依赖注入DI?
  • 请解释Spring Bean的生命周期?
  • applicationContext与beanFactory的区别?
  • Spring有几种配置方式?
  • 怎样用注解的方式配置Spring?
  • spring如何配置bean?
  • Spring 如何整合 Struts2 ?
  • Spring 如何整合 Hibernate
  • springMVC
  • 什么是springmvc?谈谈你对springmvc的理解?
  • Spring MVC的主要组键?
  • springmvc的主要流程。
  • 如何解决post请求乱码问题?
  • Spring MVC的异常处理 ?
  • @RequestMapping注解用在类上面有什么作用?
  • 怎么样把某个请求映射到特定的方法上面?
  • 如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?
  • 怎么样在方法里面得到Request,或者Session?
  • SpringMvc中有个类把视图和数据都合并的一起的,叫什么?


spring

spring框架有哪些主要模块?

  • spring框架至今已经集成了20多个模块,这些模块主要被分为以下:核心容器,数据访问/集成,WEB、AOP(面向切面编程)、工具、消息、和测试模块。

spring框架带来哪些好处?

  • DI(依赖注入)IOC(控制反转)将对象统一管理,依赖关系一目了然,降低组件之间的耦合,让我们更注重于业务逻辑。
  • AOP的很好支持,方便面向切面编程。
  • 对主流框架有很好的集成,springboot,jpa,mybatis,springmvc。
  • 采用分层架构,使项目层次分明,可以分层使用。

开发中主要使用 Spring 的什么技术 ?

①. IOC 容器管理各层的组件②. 使用 AOP 配置声明式事务③. 整合其他框

什么是控制反转IOC,什么是依赖注入DI?

  • 控制反转是本来new 对象是,对象本身自己new 出来的,但是spring将new 对象的功能交给spring 容器,这就实现了控制反转。工厂模式。
  • 依赖注入是控制反转的基础,而new 出来绑定依赖关系的过程就叫依赖注入。java中实现依赖注入有三种方式:
  1. 构造器注入
  2. setter方法注入
  3. 接口注入

请解释Spring Bean的生命周期?

①. 通过构造器或工厂方法创建 Bean 实例
②. 为 Bean 的属性设置值和对其他 Bean 的引用
③ . 将 Bean 实 例 传 递 给 Bean 后 置 处 理 器 的
postProcessBeforeInitialization 方法
④. 调用 Bean 的初始化方法(init-method)
⑤ . 将 Bean 实 例 传 递 给 Bean 后 置 处 理 器 的
postProcessAfterInitialization 方法
⑦. Bean 可以使用了
⑧. 当容器关闭时, 调用 Bean 的销毁方法(destroy-method)

applicationContext与beanFactory的区别?

  • BeanFactory:
    是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能;
  • ApplicationContext:
  • 应用上下文,继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的有用的功能;
  1. 国际化(MessageSource)
  2. 访问资源,如URL和文件(ResourceLoader)
  3. 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层
  4. 消息发送、响应机制(ApplicationEventPublisher)
  5. AOP(拦截器)

Spring有几种配置方式?

  1. 基于XML的配置
  2. 基于注解的配置
  3. 基于Java的配置

怎样用注解的方式配置Spring?

  • 开启组件扫描特定的组件
  • 特定的组件Commponent\Resposttory\Service\Controller
  • 开启包扫表

spring如何配置bean?

  • 通过反射全类名
  • 通过工厂方法(静态工厂方法/实例工厂方法)
  • 通过FactoryBean

Spring 如何整合 Struts2 ?

整合 Struts2, 即由 IOC 容器管理 Struts2 的 Action:

  • 安装 Spring 插件: 把 struts2-spring-plugin-2.2.1.jar 复制到
    当前 WEB 应用的 WEB-INF/lib 目录下
  • 在 Spring 的配置文件中配置 Struts2 的 Action 实例
  • 在 Struts 配置文件中配置 action, 但其 class 属性不再指向该
    Action 的实现类, 而是指向 Spring 容器中 Action 实例的 ID

Spring 如何整合 Hibernate

整合 Hibernate, 即由 IOC 容器生成 SessionFactory 对象, 并使用
Spring 的声明式事务

  • 利用 LocalSessionFactoryBean 工厂 Bean, 声明一个使用 XML 映
    射文件的 SessionFactory 实例.
  • 利用 HibernateTransactionManager 配置 Hibernate 的事务管理器

springMVC

什么是springmvc?谈谈你对springmvc的理解?

  • springmvc是一个基于mvc架构的用来简化web应用程序的开发框架,他是spring的一个模块,无需中间整合层来整合,是一个表现层框架,在web模型中,mvc是一种很流行的框架,通过把Model View Controller 分离,把较为复杂的web应用分成逻辑清晰的及部分,简化开发,减少出错,方便组内开发人员配合。

Spring MVC的主要组键?

(1)前端控制器 DispatcherServlet(不需要程序员开发)
作用:接收请求、响应结果 相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。
(2)处理器映射器HandlerMapping(不需要程序员开发)
作用:根据请求的URL来查找Handler
(3)处理器适配器HandlerAdapter
注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。
(4)处理器Handler(需要程序员开发)
(5)视图解析器 ViewResolver(不需要程序员开发)
作用:进行视图的解析 根据视图逻辑名解析成真正的视图(view)
(6)视图View(需要程序员开发jsp)
View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)

springmvc的主要流程。

spring for android 搭建_mvc

  1. 首先当浏览器发送一个请求,例上,总调度器 不管三七二十一,先拦截下来,来 接下来,加载自定义配置文件,找到 springmvc-config.xml中的配置映射处理器。
  2. springmvc-config.xml中配置映射处理器,解析当前url。分为/controller和/emp
  3. 在所有的中找该映射(此处实质不是找bean,而是bean转化为注解,在注 解中找,步骤为:
    1.开启注解约束
    2.开启包扫描
    3.开启springmvc的注册驱动,识别controller中的相关注解)
  4. 通过识别好的映射找到controller中的empList方法,开始执行该方法。该方法new 一个ModerAndView,进行参数携带和添加将要转发的url返回给 配置处理适配 器 。
  5. 配置处理适配器将所携带的数据进行封装传送给总调度器,此时封装好的 ModerAndView并不是一个浏览器所能识别并展示给用户的视图,只是一个逻辑视 图。
  6. 总调度器将封装好的ModerAndView传送给配置视图解析器,解析完成,给总调度 器。
  7. 总调度器将解析好的视图,传送给jsp页面,完成整个过程。

如何解决post请求乱码问题?

  • 在web.xml中添加spring自带的 CharacterEncodingFilter字符编码过滤器,在init-param标签中设置为utf-8。

Spring MVC的异常处理 ?

  • 可以将异常抛给Spring框架,由Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可。

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

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

怎么样把某个请求映射到特定的方法上面?

  • 直接在方法上面加上注解@RequestMapping,并且在这个注解里面写上要拦截的路径。

如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?

  • 可以在@RequestMapping注解里面加上method=RequestMethod.GET。

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

  • 直接在形参里面声明这个参数就可以,但必须名字和传过来的参数一样。

SpringMvc中有个类把视图和数据都合并的一起的,叫什么?

  • ModelAndView。