资源描述
Struts
多层架构的概念及开发流程
MVC模式
Struts的控制流
Action/ActionForm/ActionForward的概念
如何通过ActionForm进行日期的自动类型转换
Struts如何支持I18N(JSP页面的静态文本/<bean:message/>,ACTION和JSP之间传递的消息<html:messages>/<html:errors>)
Hibernate
Session(持久化管理器)的概念
每个请求一个Session(OpenSessionInView)
在使用hibernate开发的时候,实体对象会从业务逻辑层传递到呈现层(JSP)
如何解决懒加载异常问题
如何避免N+1查询(清楚Query.list()和Query.iterate()操作的差别)
Inverse/lazy/cascade
关联映射(1..n,n...1,1..1,n..n):根据需求设计实体类,然后对实体类进行映射
Hibernate HQL(session.createQuery())
原生SQL查询(session.createSQLQuery())
一级缓存、二级缓存、查询缓存
并发控制,悲观锁定,乐观锁定(版本控制)
Spring
依赖注入(注入方式:构造器注入、设值方法注入)
对象的创建方式(singleton/prototype)
了解AOP
了解Spring声明式的事务管理
Spring与Hibernate集成的方法(HibernateDaoSupport基类/HibernateTemplate)
Spring与普通J2EE应用程序集成的方法(在web.xml中定义context-param/Listener)
Spring与Struts集成的方法(利用spring来创建Action,并通过spring向Action注入业务逻辑对象)
UML
用例图(用例文档的编写):参与者、用例、系统边界
类图(边界类、实体类、控制类)
关系:依赖、关联、泛化、实现
聚合,是一种关联关系,表示整体与部分的关系
组合,是一种强聚合,表示整体与部分的生命周期是一致的
交互图:对系统的控制流进行建模,包含顺序图、协作图
顺序图:重视对象的生命周期
协作图:重视对象之间的协作
活动图:对流程进行建模
状态图:系统状态的变化
EJB3.0
有状态会话Bean和无状态会话Bean(Stateful Session Bean和Stateless Session Bean)
JMS和消息驱动Bean
如何更改Session Bean的JNDI名称?
如何将session bean部署为web service服务接口?
客户端视图(远程客户端、本地客户端、Webservice客户端)
依赖注入 @EJB
持久化框架(O/R映射,EntityManager)
实体Bean的生命周期
JTA事务控制
OA
OA的基本需求
需求à用例à领域模型(OOA)à设计模型(OOD)à实现
组织架构模型(面对各种不同类型的组织架构,如何定义模型)
授权模型及其实现思路(需了解RBAC的基本概念)
公文流转模型及其实现思路(与JBPM整合)
动态表单定义模型及实现(结合Freemarker)
批量数据提交的技巧(AutoArrayList)
Ant的基本使用方法
利用xdoclet自动生成hibernate映射文件
日志处理(commons-log/log4j)
ThreadLocal模式,及其在分页处理(Pager-taglib)封装中的运用(识别变化与不变,逐步抽象及封装:如何分页?à抽象AbstractManagerà利用ThreadLocal)
如何避免hibernate在更新的时候更新那些不需要更新的字段?
利用dom4j,设计初始化数据的格式,并将其初始化到数据库
利用dwr实现授权界面(了解JSON)
整合Spring和Hibernate之后,对于业务逻辑类的测试方法(可让测试类继承AbstractTransactionalSpringContextTests,而不是直接继承TestCase,避免在测试单元中出现懒加载问题。)
Struts自动异常处理方案
CRM
Struts2要点:
Struts2与Struts1在使用上的差异:
1、Action的编写无需继承特殊的基类
2、取消了ActionForm,页面参数被直接设置到Action对象的属性上(优点,减少了类的编写)
3、每个请求都会创建一个Action的对象
4、Action的方法可以不依赖于任何Servlet API(优点)
Struts2与Struts1在设计上的主要差别在于:
1、Struts2中的请求处理过程由拦截器模式定义为一个可插拔的、容易扩展的结构,而不是像Struts1中,其处理过程是固定不变的(优点)
2、Struts2中的参数从页面传递到Action,以及将数据从Action传输到页面,都通过OGNL来进行,Struts1中的参数从页面传输到Action是通过Apache-commons-beanutils工具包来解析的,而将数据从Action传输到页面则通过request对象来传输
理解如何将OGNL应用在struts2中(ValueStack,传参,设值与取值)
Struts2中的类型转换与Struts1相比有何优点(能支持局部类型转换)
Struts2中的标签库与Struts1相比有何优点(通过模板灵活的自定义呈现样式)
Struts2中基于package的配置方法,可以使得配置文件更加简洁易读
ModelDriven机制与ActionForm相比的优点
Struts2的缺点:
1、 struts2中的ajax主题(速度慢,加载很多没有必要的js文件和资源)
2、 struts2中使用的OGNL表达式语言(解释速度有时候会成为性能瓶颈)(大家可了解一下MVEL,一个类似于OGNL的表达式语言,速度比OGNL要好)
Struts2性能调优参考网址:
http://struts.apache.org/2.x/docs/performance-tuning.html
http://cwiki.apache.org/WW/performance-tuning.html
Sitemesh控制页面布局,理解Sitemesh基本原理
利用POI库操纵Excel报表(批量导入和批量导出客户数据) - 设计模板来导出Excel报表
假删除,hibernate filter的使用,hibernate对象查询的运用
了解各种框架的基本概念:
- iBATIS:SQL Mapping
- Javascript中的prototype
- Tapestry:组件、页面
- JSF:页面,Backing Bean
CCS系统
EJB3.0项目开发的构建和部署(如何通过ant构建ear/war/jar文件,如何在这些模块之间共享通用的类库)
如果把EJB模块放进EAR包中,客户端调用的JNDI名称有何变化?
如何利用spring来屏蔽JNDI的查找代码,并简化集成开发的过程?
HttpSessionBindingListener的使用(登录、登出日志的记录) - 要注意它与HttpSessionListener之间的差别
页面验证框架(Javascript)的使用
模式
MVC
ThreadLocal – 多线程程序
OpenSessionInView – 专用于hibernate
IOC模式 – Spring
专家模式 – ACL对象、Document对象
DAO – 数据访问对象
Facade - JbpmFacade
展开阅读全文