秋招面试--开篇

156 阅读7分钟

一、SpringMVC的核心组件

springMVC的各个组件 前端控制器(DispatcherServlet):主要负责捕获来自客户端的请求和调度各个组件。

处理器映射器(HandlerMapping):根据url查找后端控制器Handler。

处理器适配器(HandlerAdapter):执行后端控制器(Handler),拿到后端控制器返回的结果ModelAndView后将结果返回给前端控制器DispatcherServlet。

后端控制器(处理器)(Handler):主要负责处理前端请求,完成业务逻辑,生成ModelAndView对象返回给HandlerAdapter。

视图解析器(ViewResolver):主要负责将从DispatcherServlet中拿到的ModelAndView对象进行解析,生成View对象返回给DispatcherServlet。

二、springMVC的执行流程

1.客户端浏览器向前端控制器(DispatcherServlet)发出请求。

2.DispatcherServlet接收到请求后,调用处理器映射器(HandlerMapping)。

3.HandlerMapping根据请求url查找相应的处理器(Handler,也称后端控制器),返回处理器对象(Handler),并且如果有处理器拦截器(HandlerInterceptor)的话,会将处理器对象(Handler)和处理器拦截器对象(HandlerInterceptor)一并返回给DispatcherServlet。

4.DispatcherServlet拿到这些信息后,会调用处理器适配器(HandlerAdapter),HandlerAdapter会执行Handler,Handler执行处理DispatcherServlet发来的请求,生成ModelAndView对象返回给HandlerAdapter。

5.HandlerAdapter将ModelAndView对象返回给DispatcherServlet。

6.DispatcherServlet在拿到ModelAndView对象之后,将ModelAndView对象发给视图解析器(ViewResolver)。

7.ViewResolver将ModelAndView对象进行解析,生成View对象,将View对象返回给DispatcherServlet。

8.DispatcherServlet拿到View对象,对jsp页面进行渲染(将模型数据填充到视图中),将渲染后的页面呈现给用户

三、Spring Cloud教程

Spring Cloud 是分布式微服务架构的一站式解决方案,它提供了一套简单易用的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务系统的构建。

Spring Cloud 被称为构建分布式微服务系统的“全家桶”,它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合。它将市面上成熟的、经过验证的微服务框架整合起来,并通过 Spring Boot 的思想进行再封装,屏蔽调其中复杂的配置和实现原理,最终为开发人员提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。

四、Java语言提供了8种基本数据类型

分别是 byte、short、int、long、float、double、boolean、char。. String 是对象,不属于基本数据类型. 8种基本数据按类型分可以分为. 4个 整数型:byte、short、int、long. 2个浮点型:float、double. 1个字符类型:char. 1个布尔型:boolean. 八大基本数据类型.

五、SpringBoot与SpringMVC的区别

  1. 形式上:SpringBoot是一个自动化配置的工具;SpringMVC是一个web框架
  2. 在搭建项目时:SpringMVC需要手动配置xml文件,同时需要配置Tomcat服务器。而SpringBoot采用约定大于配置的方式,进行自动装配,同时内置服务器,打开就可以直接用。
  3. 项目搭建区别

SpringMVC项目搭建过程:

  • 首先是要有一个Maven项目,选择好自己的仓库配置以及本地仓库位置
  • 然后在这个maven项目中添加springMVC框架(Add Framework Support)
  • 然后需要手动设置配置文件,先是设置web.xml文件
  • 然后配置dispatcher-servlet.xml,其主要是负责mvc的配置
  • 然后配置applicationContext.xml,主要是扫描一些非MVC组件的配置
  • 最后配置好Tomcat服务器后便可以使用了

SpringBoot项目搭建:

  • 因为SpringBoot是一个自动化配置的工具
  • 因此在Srping initalizr中选择好Java版本、项目类型等必要内容后便可完成项目创建。
  • 等待Maven将相关的Jar包加载完成后便可以直接使用

SpringBoot特点

  • 与springMVC相比只是将原有的配置在xml文件中的内容进行自动化配置。同时springBoot内置服务器容器,不需要再重新配置Tomcat服务器启动。
  • springBoot将原有的与spring匹配的配置采用约定大于配置的方式进行自动化加载,让开发变简单

六、mybatis框架有哪些有哪些优缺点

Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时 只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性 能,灵活度高。

MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数 据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

通过 xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最 后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。(从执行 sql 到返 回 result 的过程)。

Mybaits 的优点:

  • 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任 何影响,SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML 标签,支持编写动态 SQL 语句,并可重用。
  • 与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码,不 需要手动开关连接;
  • 很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要 JDBC 支持的数据库 MyBatis 都支持)。
  • 能够与 Spring 很好的集成;
  • 提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射 标签,支持对象关系组件维护。

MyBatis 框架的缺点:

  • SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有一定要求。
  • SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

六、jdbc中如何实现事务控制并写出关键步骤

在使用JDBC访问数据库时,首先建立对数据库的连接,创建一个Connection对象。在默认情况下,事务是自动提交的,因此要使用事务时,要先取消Connection的自动提交方式。如果执行发生异常,就回滚事务。操作完成后,提交事务就可以了。

七、springcloud如何实现服务的注册和发现

服务在发布时 指定对应的服务名(服务名包括了IP地址和端口) 将服务注册到注册中心(eureka或者zookeeper)
这一过程是springcloud自动实现 只需要在main方法添加@EnableDisscoveryClient  同一个服务修改端口就可以启动多个实例
调用方法:传递服务名称通过注册中心获取所有的可用实例 通过负载均衡策略调用(ribbon和feign)对应的服务

八、springmvc的工作原理

  1. 客户端发起请求(http)通过web.xml找到 DispatchServlet(前端控制器);
  2. 由DispatchServlet控制器通过配置文件(servletName-servlet.xml)寻找到一个或多个HandlerMapping(映射处理器),找到用于处理请求的controller(后端控制器);
  3. DispatchServlet将请求提交到controller;
  4. Controller处理业务逻辑后,
  5. controller返回数据 ModelAndVIew给DispatchServlet;
  6. DispatchServlet寻找到一个或多个ViewResolver(视图解析器),找到ModelAndVIew指定的视图;
  7. DispatchServle负责将结果返给View(客户端JSP页面),封装Http;
  8. view响应页面的HTTP请求,返回响应数据,浏览器绘制页面。