1、说说Servlet的工做流程?前端
一、Web客户向Servlet容器发送http请求。java
二、Servlet容器解析Http请求,Servtet容器建立HttpRequest对象,封装Http信息,同时建立HttpResponse对象程序员
三、Servlet容器调用HttpServlet的service方法,service方法根据请求类型调用对应的doXX()方法,而后调用HttpRequest相关方法,好比getParameter获取请求数据,而后调用HttpResponse相关方法,生成相应数据。web
4.Servlet容器把HeetpServlet相应结果传递给web客户。ajax
2、怎么理解Servlet?spring
Servlet是一套规范,内部提供一套接口,运行在Application服务器中,经过http协议用来接收客户端的请求和回复响应。具体的实现类须要服务器厂商提供。sql
因为部署在服务器上的web项目,必须经过在浏览器的地址栏中输入地址才能够被访问到,因此Servlet也须要配置地址才能被浏览器访问。数据库
3、谁建立了Servlet?Servlet容器:Tomcat、JBoss、webLogic等。编程
二、注册:在web.xml里配置Servlet的配置映射信息。小程序
Servlet注册:Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问的路径,才能够被Servlet引擎加载和被浏览器访问。
一个<Servlet>标签用于注册一个Servlet,它含有两个主要的子元素:<Servlet-name>和<Servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。
一个<Servlet-mapping>标签用于映射一个已注册的Servlet的一个对外访问路径,它包含两个子元素:<servlet-name>和<url-pattern>,分别用于Servlet的注册名称
和Servlet的对外访问路径。
5、JSP的工做流程 (JSP的执行过程)
一、客户端发出Request(请求);
二、JSP Container将JSP转译成Servlet的源代码;
三、将产生的Servlet的源代码通过编译后,并加载到内存;
四、把结果Response(响应)至客户端。
6、SpringMVC的工做流程
一、用户发起请求到前端控制器(DispatcherServlet)
二、前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):经过xml配置或者注解进行查找
三、找到之后处理器映射器(HandlerMappering)像前端控制器返回执行链(HandlerExecutionChain)
四、前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)
五、处理器适配器去执行Handler
六、Handler执行完给处理器适配器返回ModelAndView
七、处理器适配器向前端控制器返回ModelAndView
八、前端控制器请求视图解析器(ViewResolver)去进行视图解析
九、视图解析器像前端控制器返回View
十、前端控制器对视图进行渲染
十一、前端控制器向用户响应结果
7、springMVC中的几个组件的用途:
前端控制器(DispatcherServlet):接收请求,响应结果,至关于电脑的CPU。
处理器映射器(HandlerMapping):根据URL去查找处理器
处理器(Handler):(须要程序员去写代码处理逻辑的)
处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就能够支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)
视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,能够解析成对应的页面
8、Spring的AOP与IOC
一、IoC(Inversionofcontrol):控制反转
概念:控制权由对象自己转向容器;由容器根据配置文件去建立实例并建立各个实例之间的依赖关系
核心:bean工厂;在Spring中,bean工厂建立的各个实例称做bean
二、AOP(Aspect-OrientedProgramming):面向方面编程
代理方式分为两种:静态代理、动态代理
静态代理的用途:
针对每一个具体类分别编写代理类;
针对一个接口编写一个代理类;
动态代理:针对一个方面编写一个InvocationHandler,而后借用JDK反射包中的Proxy类为各类接口动态生成相应的代理类
产生动态代理的类:java.lang.refect.Proxy
装备必须实现InvocationHandler接口实现invoke方法
三、什么是类的反射
经过类说明能够获得类的父类、实现的接口、内部类、构造函数、方法、属性并能够根据构造器实例化一个对象,唤起一个方法,取属性值,改属性值
9、谈谈MyBatis的优缺点?
优势:
一、简单易学。 mybatis自己就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,经过文档和源代码,能够比较彻底的掌握它的设计思路和实现。
二、灵活。mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。经过sql基本上能够实现咱们不使用数据访问框架能够实现的全部功能,或许更多。
三、解除sql与程序代码的耦合。经过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提升了可维护性。
四、提供映射标签,支持对象与数据库的orm字段关系映射
五、提供对象关系映射标签,支持对象关系组建维护
六、提供xml标签,支持编写动态sql。
缺点:
一、编写SQL语句时工做量很大,尤为是字段多、关联表多时,更是如此。
二、SQL语句依赖于数据库,致使数据库移植性差,不能更换数据库。
三、框架仍是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,可是整个底层数据库查询实际仍是要本身写的,工做量也比较大,并且不太容易适应快速数据库修改。
四、二级缓存机制不佳
myBatis的原理
MyBatis应用程序根据XML配置文件建立SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所须要的全部方法,能够经过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完以后关闭SqlSession。
10、AJAX都有哪些优势和缺点?
优势:
一、最大的一点是页面无刷新,用户的体验很是好。
二、使用异步方式与服务器通讯,具备更加迅速的响应能力。
三、能够把之前一些服务器负担的工做转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。而且减轻服务器的负担,ajax的原则是“按需取数据”,能够最大程度的减小冗余请求,和响应对服务器形成的负担。
四、基于标准化的并被普遍支持的技术,不须要下载插件或者小程序。
缺点:
一、ajax不支持浏览器back按钮。
二、安全问题 AJAX暴露了与服务器交互的细节。
三、对搜索引擎的支持比较弱。
四、破坏了程序的异常机制。
五、不容易调试。
11、简述ajax的执行过程?
1. 建立XMLHttpRequest对象,也就是建立一个异步调用对象
2. 建立一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息
3. 设置响应HTTP请求状态变化的函数
4. 发送HTTP请求
5. 获取异步调用返回的数据
6. 使用JavaScript和DOM实现局部刷新
12、谈谈对重载与重写的区别?
重载:
一、参数类型、个数、顺序至少有一个不相同。
二、不能重载只有返回值不一样的方法名。
三、存在于父类和子类、同类中。
重写:
一、方法名、参数、返回值相同。
二、子类方法不能缩小父类方法的访问权限。
三、子类方法不能抛出比父类方法更多的异常(但子类方法能够不抛出异常)。
四、存在于父类和子类之间。
五、方法被定义为final不能被重写。
十3、谈谈抽象与接口的区别?
1 接口只能包含抽象方法,抽象类能够包含普通方法。 2 接口只能定义静态常量属性,抽象类既能够定义普通属性,也能够定义静态常量属性。 3 接口不包含构造方法,抽象类里能够包含构造方法。