面试总结
来源:互联网 发布:java和android的前景 编辑:程序博客网 时间:2024/06/11 05:48
Struts2
1、mvc的框架
Struts2是一个mvc框架,模型层用用于封装和传递数据、完成数据访问和
业务逻辑,由JavaBean实现,视图层用于显示页面和用户交互用jsp来实现,控制层控制应用程序的流程用action来实现,。
2、aop的框架
Action执行前后都会执行配置好的拦截器,拦截器中可以对请求与返回的数据进行处理。
3、可插拔的框架
Struts2提供了灵活的插件机制来与其他框架进行整,只要提供所需的jar包,以及struts-plugin 配置文件即可。
拦截器也是一种可插拔的设计,用到什么拦截器,配置一下。
4、struts2 流程
容器启动的时候加载那4个配置文件 ,如果其中有相同信息则后者覆盖前者,最后将这些配置信息封装到ConfigurationManager中
初始化核心分发器:Dispatcher 将struts框架工作所需的对象创建,以及其他的一些初始化工作。
当提交请求经过struts2 过滤器的doFilter(ServletRequest req, ServletResponse res, FilterChain chain)方法
1 首先获得http协议的request,respon
HttpServletRequest request=(HttpServletRequest)req;
2 设置编码集
prepare.setEncodingAndLocal(request,response)
3 创建ActionContext
prepare.createActionContext(request,response)
创建值栈,
初始化值栈,
把当前的actionContext放入到threadlocal中
4、把整个Dispatcher放入到threadlocal中
prepare.assignDispatcherToThread();
5 对请求url进行解析,并判断你的url是否是需要经过struts的核心
如果不需要执行chain.doFilter放行; 如果需要,
6 请求进行包装,解析出对应的action,
接着得到ActionMapper的实例,通过他的getActionMapping 方法来决定是否要调用某个 Action,如果返回的ActionMapping为空 则继续判断是否是要使用到struts的静态资 源, 即路径中有/struts/ 如果有调用静态资源处理器进行处理,如果没有直接放行;
如果返回的ActionMapping不为空则执行executeAction(request, response, mapping);
7 创建Action代理类,同时创建ActionInvocation,在ActionInvocation的初始化方法中
1、创建action createAction(contextMap);
2、 把当前访问的action放入到栈顶和map栈中
stack.push(action);
contextMap.put("action", action);
3、获取当前请求的拦截器的迭代器的形式
List<InterceptorMapping> interceptorList=new ArrayList<InterceptorMapping>(proxy.getConfig().getInterceptors());
interceptors = interceptorList.iterator();
8 执行所有的拦截器
执行action
执行结果集
再次执行拦截器
9清空actionContext中的数据
Spring
Spring是一个IOC和AOP容器框架;可以大大的简化企业开发
IOC 控制反转:将对象的创建和销毁交给外Spring进行管理使程序员有更多的时间处理业务逻辑;
IOC实现原理
解析配置文件,解析出class ,id 反射调用器构造函数创建,
然后用id为key,保存在一个map中;(如果有依赖注入:即解析字段,解析出对应的类型;通过反射方式创建出来;然后反射该字段的set方法;)
Aop
面向切面编程其实就是对公共代码的抽取,实现分离关注separate aware.
比如说我们在实际开发中经常要解决的问题:权限,日志,事务,异常等等经常性的代码,我们将他们进行抽取,分开管理,在需要的地方将切面织
AOP的原理是为目标类创建代理,创建代理的方式是:
1 当你的目标类实现了接口就用jdk的这个proxy
2 当你的目标类没有实现接口就要用CGLIB方式动态产生,他产生的类是目标类子类;
struts2中的拦截器就是这么个东东;将所有的功能写成对应的拦截器;
在需要的时候注入就可以了:配置文件中通过interceptor-ref:进行引用即可;他就会给你在action执行前后进行拦截;
Spring 声明式事务处理是将所有整个应用中的事务管理做成一个切面aspect,统一事务的管理,在需要的地方只要配置对应的事务切入点和事务通知即可
Hibernate
hibernate是一个orm框架, 他是对JDBC的封装。
1 他是利用hql采用面向对象来操作数据库的。自动生成对应的sql 从而降低了编程时对sql语句的要求,可移植性比较好,。
只需要利用session 调用hibernate封装好的方法操作持久化对象,实现与数据库的交互。
2 还有一个特点就是延迟加载的策略,控制系统发出sql语句的时机,在某些时候 大大的提高了系统的性能。
例如: 加载菜单树时, 只需要加载出父节点,等到点击父节点是才去加载子节点,可以提高系统性能。当然延时加载也会有负面的影响,就是有的时候取哪些还未加载出来的数据时,session关闭了。 这是会抛no session 异常。 此时可以通过 配置opensessionview这个过滤器来解决这个问题
3 然后就是他的缓存机制,将查询出来的持久化对象放到缓存中,再次使用这些数据的时候 直接从缓存中取,减少了与数据库的交互次数,大大提高了系统的效率。
----
表关系复杂,或数据处理量大,一般不用hibernate,二用半自动的Ibatis,或直接jdbc.
系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高
度优化的SQL语句(或存储过程)才能达到系统性能设计指标。
是相对Hibernate等提供了全面的数据库封装机制的“全自动化”
ORM 实现而言,“全自动”ORM 实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行
Mybatis
Mybatis首先也是一个对jdbc的封装 但更侧重于 面向sql编程, 核心配置文件中需要要配置结果集, 需要写一些sql语句, 这样也就使的 对程序员在sql语句上有更高的要求。 但是又一点好处,就是 可以进行sql语句的优化来提高性能。 这是hibernate做不到的。 一般大项目用MyBatis 或直接jdbc
----POJO--简单的Java对象
SQL开发的工作量大和数据库移植性较差,为系统设计提供了更大的自由空间
ibatis 的着力点,则在于POJO 与SQL之间的映射关系。也就是说,ibatis
并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写,然后通过映
射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。
SpringMVC
Spring的MVC框架主要由DispatcherServlet、处理器映射、处理器、视图解析器、视图组成
整个处理过程从一个HTTP请求开始:
1、 DispatcherServlet接收到请求后,根据对应配置文件中配置的处理器映射,找到对应的处理器(Handler)
2、 调用相应处理器中的处理方法,处理该请求,处理器处理结束后会将一个ModelAndView类型的数据传给DispatcherServlet,这其中包含了处理结果的视图和视图中要使用的数据
3、 DispatcherServlet根据得到的ModelAndView中的视图对象,找到一个合适的ViewResolver(视图解析器),根据视图解析器的配置,DispatcherServlet将视图要显示的数据传给对应的视图,最后给浏览器构造一个HTTP响应
DispatcherServlet是整个Spring MVC的核心,它负责接收HTTP请求组织协调Spring MVC的各个组成部分
其主要工作有以下三项:
1、 截获符合特定格式的URL请求
2、 初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联
3、 初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中
JBPM常用接口有哪些?
ProcessEngine工作流的流程引擎对象
1、RepositoryService 流程资源服务的接口。
作用: 提供对流程定义的部署、查询、删除等操作。
2、ExecutionService 流程执行服务的接口。
作用: 提供启动流程实例、“执行”推进,设置流程实例变量等操作。
3、ManagementService 流程管理控制服务接口。
作用: 提供异步工作相关的执行和查询操作。
4、TaskService 人工任务服务接口。
作用: 提供对任务(Task)的创建、提交、查询、保存、删除等操作。
5、HistoryService 流程历史服务的接口。
作用: 提供对任务的管理操作,提供对流程历史库中历史流程实例、历史活动实例等记录的查询操作。还提供诸如某个流程定义中所有活动的平均持续时间、某个流程定义中某转移的结果次数等数据分析服务。
6、IdentityService 身份认证服务的接口。
作用: 提供对流程用户、用户组以及组成员关系的相关服务。
现在列举出几个 向公司提出的问题?
1、 公司主要做哪些方面的项目? 主要是针对业务。 (如果他事先给你介绍了就取消这个问题)
2、 公司主要用的是哪些技术? 有没有自己写的框架之类的?
3、 公司有没有相关的培训项目啊? 自己有没有机会参与?
4、 公司定期会不会一些重大的活动呢?
5、 公司的五险一金 是怎么交的? 有没有什么补助之类的?
- 【面试】第一次面试总结
- 面试总结
- 面试总结
- 面试总结
- 面试总结
- 面试总结
- 面试 总结
- 面试总结
- 面试总结
- 面试总结
- 面试总结
- 面试总结
- 面试总结
- 面试总结
- 面试总结
- 面试总结
- 面试总结
- 面试总结
- 百鸡问题-小记
- 开通博客
- 编程练习--不同语言输出九九乘法表
- 6410开发板关于qt版本和移植的困惑
- HDU-1004 Let the Balloon Rise(STL: map)
- 面试总结
- 社会化海量数据采集爬虫框架搭建
- 用CMD文件对拍
- UVA-11995 I Can Guess the Data Structure!(STL:各容器的简单运用)
- 五月一号的详细任务布置
- win8.1 secureboot 未正确配置
- gethibernatetemplate() 空指针异常
- STP 2 - 关于生成树的思科命令
- struct 中的位域指示操作符“:”