面向对象的特征
抽象:将一类的对象的共同特征总结出来并构造类的过程,包括数据抽象和行为抽象,抽象只关注对象有哪些属性和行为,并不关心细节;
继承:从已有类得到继承信息并构造新类的过程,继承让变化的软件系统有一定的延续性,提供信息的类称为超类或基类,得到继承信息的称为子类;
封装:将操作细节捆绑起来,对外只提供相应的接口,隐藏一切可以隐藏的细节;
多态:允许不同的子类型对同意消息做出不同的响应,又分为编译时多态和运行时多态,方法重载是编译时多态,方法重写为运行时多态,实现运行时多态只需要做的是方法重写和对象造型
String、StringBuffer和StringBuilder区别
String是只读的,StringBuffer和StringBuilder可以对内容进行修改,StringBuilder是线程安全的,效率比StringBuffer高
常用的设计模式
- 工厂模式:利用运行时多态工厂类可以根据条件生成不同的子类实例
- 代理模式:给一个对象提供一个代理对象,并由代理对象控制原对象的引用
Jsp的9个内置对象
request:封装客户端请求,包括GET或POST请求的参数;
response:封装对客户端的响应;
pageContext:封装其它内置对象的引用;
session:封装用户会话对象;
application:封装服务器运行环境的对象;
out:输出服务器响应的输出流对象;
config:web应用的配置对象;
page:页面本身;
exception:封装页面抛出异常的对象
interceptor和filter的区别
filter:依赖于servlet容器,在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次
interceptor:依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。同时一个拦截器实例在一个controller生命周期之内可以多次调用,但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理
调用顺序:filter调用顺序基于web.xml,interceptor基于MVC框架配置文件
Struts的原理和作用
原理过程:
- 客户端初始化指向servlet的请求
- 请求经过系列的过滤器
- 调用StrutsPrepareAndExecuteFilter,并决定是否需要调用Action
- 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
- ActionProxy找到需要调用的Action类,创建一个ActionInvocation的实例
- 调用Action,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用
- Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果
作用:
- 获取表单内容
- 根据请求找到合适的控制器
- 调用业务业务接口
- 简单校验、国际化等其它工作
Spring的作用
- 非侵入式:支持基于POJO的编程模式,不强制性的要求实现Spring框架中的接口或继承Spring框架中的类
- Ioc容器:再也不用自己写工厂
- AOP:将所有的横切关注功能封装到切面(aspect)中,通过配置的方式将横切关注功能动态添加到目标代码上,进一步实现了业务逻辑和系统服务之间的分离
- MVC:SpringMVC是MVC的具体实现
SpringMVC原理
- 客户端请求提交到DispatcherServlet
- 由DispatcherServlet控制器查询HandlerMapping,找到并分发到指定的Controller中
- Controller调用业务逻辑处理后,返回ModelAndView
- DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
- 视图负责将结果显示到客户端