- Tomcat和Servlet源码分析
- 写出Tomcat重要的类以及作用
答:Server:代表服务器,代表整个tomcat服务器,一个tomcat有一个server;
Service:一个server可以有1个或多个service,service是逻辑功能层。用来接收请求,解析请求,完成相应的业务逻辑,然后把处理结果返回给客户端。提供两个服务start和stop,start用来打开socket,监听服务端口,stop停止服务释放网络资源;
Connector:service的核心组件之一,一个service可以有多个connector,主要用来连接客户端请求,接收请求,并将请求封装成request和response,然后交给container处理。Container处理完后将结果返回给connector,connector返回给客户端。
Container:service的另外一个核心组件,按照层级分为engine、host、context和wrapper。Service只有一个engine,主要作用是执行业务逻辑。
Engine:代表servlet引擎,一个service可以用N个connector和一个engine,一个engine可以有N个host,代表一个tomcat可以配置多个虚拟主机。
Host:虚拟主机,站点,一个host可以有多个Context
Context:代表一个应用程序
-
- 写出Servlet重要的类以及作用
- GenericServlet抽象类:实现了Servlet和ServletConfig两个接口的方法,并声明了一个抽象方法service(),由它的子类HttpServlet具体实现
- HttpServlet抽象类:基于Http实现的类,用于接收处理客户端发送的请求,并返回请求结果
- Mybatis底层源码分析
- 写出Mybatis运行流程
SqlSessionFactoryBuilder首先就是调用 XMLConfigBuilder 类的构造器来创建一个 XML 配置构建器对象,利用这个构建器对象来调用其解析方法 parse()来完成 Configuration 对象的创建,之后以这 个配置对象为参数调用会话工厂构建者类中的 build(Configuration config)方法来完成SqlSessionFactory(会话工厂)对象的构建。
这个对象通过openSession方法得到sqlSession对象,通过执行器生成 Statement 对象,
Statement 对象通过execute方法操作数据库,如果是查询操作,必定会有返回结果,针对返回结果的操作,就要使用
ResultSetHandler 来进行处理
-
- 写出Mybatis常用类以及作用
答:resources工具类:会从路径中加载资源,并返回一个输入流对象
XMLConfigBuilder:创建configuration对象,通过解析configuration.xml配置文件产生上下文对象
Sqlsessionfactorybuilder:用来创建sqlsessionfactory对象
Configuration:上下文对象,存储配置文件的信息,该对象存在堆内存中,生命周期是全局,以便调用
Defaultsqlsessionfactory:是sqlsessionfactory的实现类,是真正产生会话的工厂类
Executor:执行器接口,由configuration创建,用来进行数据库操作。
StatementHandler:statement处理器,封装了statement的各种数据库操作方法
ResultSetHandler:结果集处理器,对返回的结果进行处理