第一章 PAFA简介
1.1 PAFA是什么
1.2 新PAFA和旧PAFA
1.3 PAFA架构
1.4 PAFA对JDK的要求
1.5 初探PAFA
1.6 SPRING与PAFA的关系
第二章 第一个pafa程序
2.1业务需求
2.2数据库设计
2.3数据源配置
PoolName 指定为我们刚才建立的数据连接池!
2.4从Pafa项目模板快速生成一个项目框架
Pafa有一个模板生成工具apptemplate,可以快速的生成一个项目的基本框架!
2.5 Eclipse导入存在的项目
6、在D:\workspace\userApp下建立一个lib目录,把所需要的jar包都放到这个li
2.6 为持久层创建一个单元测试
2.7 配置Ibatis和PAFA
2.8 实现Ibatis DAO
2.9 进行DAO单元测试
2.10 为Service创建一个单元测试
2.11 编码Service实现
2.12 单元测试Service
2.13 为Action创建单元测试
2.14 编码Action实现
Action方法返回值都是ServiceResponse类型。具体的返回值都是放在model属性中。
GetUserInfoAction.java
QueryUserInfoAction.java
RemoveUserInfoAction.java
UpdateUserInfoAction.java
2.15 单元测试Action
2.16 为Web层创建一个Controller
2.17 使用Tile模板进行页面布局设计
Error.jsp用于显示错误信息
Main.jsp是我们系统的欢迎页面
2.18 实现展示页面
2.19 用ant打包应用
2.20发布应用到WebLogic服务器
2.21 实现删除用户功能
2.22 实现新增用户功能
ModelAndView mav= null;
2.23 实现修改用户功能
ModelAndView mav= null;
第三章 深入pafa框架
3.1概述
3.2 控制反转与依赖注入
Public void setBar(Bar bar){
3.3 控制反转的种种
3.3.1 拉模式的依赖查找
3.3.2 上下文式的依赖查找
3.3.3 构造函数依赖注入
3.3.4 setter方法依赖注入
3.3.5 依赖查找还是依赖注入
3.3.6 构造函数注入还是setter方法注入
3.4 Bean与BeanFactory
3.5 配置Bean
3.5.2 使用setter方法注入
3.5.3 使用构造函数注入
3.5.12 自动织入依赖
3.5.13 依赖检查
3.5.14 bean继承
3.8 ApplicationContext
3.9 解析pafa项目结构
3.9.1 pafa开发目录布局及说明
3.9.2 配置文件说明
3.9.3 布署目录结构
3.10 pafa框构的几个重要对象
3.10.1 PafaDTO
3.10.2 ServiceRequest
3.10.3 ServiceResponse
3.10.4 AbstractAction
3.10.5 BaseService
第四章pafa MVC框架
4.1配置DispatcherServlet和ContextLoaderListener
4.1.1 配置DispatcherServlet
4.1.2 配置ContextLoaderListener
4.2 Controller接口
4.2.1.AbstractController
HttpServletResponse response) throws Excep
4.2.2.ParameterizableViewController
4.2.3 MultiActionController
4.2.4 SimpleFormController
1、显示用户输入界面。这时一般是通过HTTP的GET请求方式来访问,应用系统做好数据准备等预处理工作后,
2、用户填写数据后,提交表单,这时一般是通过HTTP的POST请求方式来访问,应用系统会校验处理数据,返
4.3 SimpleFormController的请求处理流程
4.3.1 SimpleFormController对GET请求的处理流程
4.3.2 SimpleFormController对POST请求的处理流程
4.4 Tiles模板技术
4.5 Spring验证方法
4.5.1什么是数据绑定
ClientDTO clientDTO = (ClientDTO) command; //自
4.5.2 如何实现数据绑定
第一,被绑定对象必须符合JavaBean的规范
第二,配置web context
第三,页面数据命名必须和对象属性保持一致
4.5.3 绑定特殊类型数据,如日期
4.5.4 如何绑定数组、List、Map等集合型数据
4.5.5 复杂绑定示例
policyDTO
4.5.6 PAFA的数据校验
4.5.7 Web层数据校验
第五章JSTL标签
5.1 JSTL1.1简介
5.1.1 安装使用JSTL 1.1
<%@ taglib prefix="c" uri="http://java.sun.com/jsp
<%@ taglib prefix="c" uri="http://www.javaworld.co
5.2 核心标签库 (Core tag library)
5.2.1 表达式操作
5.2.2 流程控制
5.2.3 迭代操作
[varStatus="varStatusName"] [begin="begin"] [end="
5.2.4 URL 操作
[scope="{page|request|session|application}"] [char
Null 和 错误处理
" />
说明
Null 和 错误处理
5.3.2 格式化标签
Null 和 错误处理
Null 和 错误处理
5.4 其他
第六章 用ibatis进行持久化
6.1 ibatis 介绍
6.2 ibatis 启步
6.2.1 准备工作
6.2.2 构建ibatis 基础代码
WHERE id = #id# ⑺
6.3 SQL Map XML配置文件
6.3.1 Properties元素
6.3.2 Settings 节点
6.3.3 transactionManager 节点
6.3.4 dataSource 节点
6.3.5 sqlMap 节点
6.3.6 SQL Map XML映射文件
6.4 Mapped Statements
6.4.1 SQL 语句
6.4.2 自动生成的主键
SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
SELECT @@IDENTITY AS ID
6.4.3 存储过程
6.4.4 parameterClass
6.4.5 parameterMap 属性
6.4.6 Inline Parameter简介
6.4.7 resultClass
6.4.8 resultMap
6.5 cacheModel
6.6 xmlResultName
6.7 Result Map
6.8 复杂类型属性(即自定义类型的属性)
6.9 动态Mapped Statement
ACC_
6.9.1 二元条件元素
6.9.2 一元条件元素
6.9.3 简单的动态SQL元素
6.10 用SQL Map API编程
6.10.1 配置SQL Map
6.10.2 事务处理
6.10.3 自动的事务处理
6.10.4 全局(分布式)事务
6.10.5 批处理
6.11 用SqlMapClient执行SQL语句
第七章 UM介绍
7.1 J2EE Security 介绍
7.2 Authentication 认证
7.2.1 Web Application中的认证规范 (三种认证方式)
7.2.2 EJB中的认证规范
7.2.3 Weblogic认证
Servlet
EJB
7.3 Authorization授权
7.3.1 资源(Resource)和Security Role
7.3.2 Declarative Authorization
Web资源的声明式授权
EJB资源的声明式授权
7.4 UM介绍
7.4.1 UM特点
7.4.2 UM使用Directory Server作为J2EE Security Realm
7.4.3 目前的UM可以解决以下问题
7.5 使用UM
7.5.1 在WebApplication中设置Login和login error页面
7.5.2 调用受访问控制的EJB
7.5.3 UM接口
UM可供调用的接口
第八章 SQL优化及PLSQL使用
8.1 SQL优化原则
FROM DEBIT_TRANSACTIONS
WHERE TRAN_DATE='31-DEC-95'
FROM DEBIT_TRANSACTIONS
WHERE TRAN_DATE='31-DEC-95'
FROM EMP
GROUP BY JOB
FROM EMP
WHERE JOB=‘PRESIDENT'ORJOB=‘MANAGER'
WHERE子句中,如果索引列是函数的一部分。优化器将不使用索引而使用全表扫描
WHERE LOC_ID=10
UNION
SELECT…FROM DEPARTMENT WHERE DEPT_CODE IS NOT
SELECT…FROM DEPARTMENT WHERE DEPT_CODE>=0
1)ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序
DEPT_CODE PK NOT NULL
SELECT EXECUTIONS,DISK_READS,BUFFER_GETS,
SQL_TEXT
AND BUFFER_GETS>0
AND(BUFFER_GETS-DISK_READS)/BUFFER_GETS<0.8
ORDER BY 4 DESC
8.2 PLSQL DEVELOPER简单使用
8.2.1简单安装配置
8.2.2常用的功能
8.3 oracle的工作原理-提高篇
8.3.1 SQL语句的处理过程
8.3.1.1 DML语句的处理
8.3.1.2查询语句的处理
8.3.1.3 DDL语句的处理(DDLStatementProcessing)
8.3.1.4事务控制(ControlofTransactions)
8.3.2 ORACLE的优化器
8.3.2.1 基于规则的优化-RBO
8.3.2.2 基于代价的优化-CBO
8.3.2.3 判断当前数据库使用何种优化器
8.3.2.4 什么是优化
8.3.3 ORACLE的执行计划
8.3.3.1概念性术语
·共享sql语句
·Rowid的概念
·Recursive SQL概念
·Row Source(行源)
·Predicate(谓词) :
·Driving Table(驱动表)
·Probed Table(被探查表)
·组合索引(concatenated index)
·可选择性(selectivity)
·访问路径(方法) (accesspath)
1)全表扫描(FullTableScans,FTS)
SELECT STATEMENT [CHOOSE]Cost=
Query Plan
SELECT STATEMENT [CHOOSE]Cost=1
Query Plan
SELECT STATEMENT [CHOOSE]Cost=1
SELECT STATEMENT[CHOOSE]Cost=1
INDEX UNIQUE SCAN EMP_I1
SELECT STATEMENT[CHOOSE]Cost=1
INDEX RANGE SCAN EMP_I1[ANALYZED]
SELECT STATEMENT [CHOOSE]Cost=1
·表之间的连接
SELECT A.COL1,B.COL2
FROM A,B
MERGE
RowSource1 RowSource2
QueryPlan
SELECT STATEMENT[CHOOSE]Cost=17
SORT JOIN
Rowsource1的Rown----------------Probe->Rowsource2
QueryPlan
SELECT STATEMENT[CHOOSE]Cost=5
TABLE ACCESS FULL EMP[ANALYZED]
Query Plan
SELECT STATEMENT[CHOOSE]Cost=3
8.3.3.2 如何生成执行计划
·最简单的办法
·用explain plan命令
·用dbms_system存储过程生成执行计划
8.3.3.3 如何干预执行计划
·如何使用hints
·使用全套的hints
SELECT/*+FIRST_ROWS(10)*/employee_id,last_name,sal
SELECT/*+CHOOSE*/employee_id,last_name,salary,job_
SELECT/*+RULE*/employee_id,last_name,salary,job_id
SELECT /*+FULL(e)*/employee_id,last_name
SELECT /*+ROWID(employees)*/*
SELECT /*+NO_INDEX(employees emp_empid)*/employee_
ORDERED/*+ORDERED*/
SELECT /*+ORDERED*/ o.order_id,c.customer_id,l.uni
第九章pafa应用程序测试
9.1 引言
9.2 JUnit
9.2.1 概述
9.2.2 开始单元测试
9.2.3 编写测试案例流程
9.2.4 TestCase类
9.2.5 通过Ant执行测试
9.2.6对异常的测试
9.2.7 对返回值为空的方法的测试
9.3 jMock
9.3.1概述
9.3.2开始使用jMock
9.3.3 jMock的Stubs and Expectations
9.3.4 jMock提供的Constraints
Object Equality
Object Identity
Instance of a Type
String Contains a Substring
Null or Not Null
Anything
组合Constraints
Not — Logical Negation
And — Logical Conjunction
Or — Logical Disjunction
9.4 测试代码覆盖工具EMMA
9.4.1 概述
9.4.2使用EMMA
9.5 DBUnit
9.5.1简单介绍
9.5.2编码方式
9.5.3与Ant的结合
9.6集成功能测试工具WebTest
9.6.1概述
9.6.2使用WebTest
配置文件
登录脚本文件
9.6.3业务测试脚本
9.7 Selenium集成测试
9.7.1 Selenium概述
9.7.2使用Selenium IDE生成脚本
9.7.3测试用例与测试脚本
9.7.4 Ant的运行脚本
第十章 Eclipse高级使用
10.1 Eclipse初探
10.1.1 用Eclipse新建一个工程
10.2 代码自动完成
Return name;
10.2.1 创建Javadoc
10.2.2 生成注释
10.2.3 自动导入类型
10.2.4 覆写父类方法
10.2.5 自动生成getter和setter方法
10.2.6创建委托方法
10.2.7 继承构造函数
10.2.8 生成构造函数
10.3 修正辅助
10.3.1 快速修正
10.3.2 快速辅助
10.3.3 语法着色
10.4 重构代码
10.4.1 移动类或包
10.4.2 为类或包改名
10.4.3 重命名方法
10.4.4 移动方法
10.4.5 把方法移到父类
10.4.6 更改方法签名
10.4.7 把代码抽取为方法
System.out.println("Hello Eclipse");
10.4.8 引入工厂
10.4.9 抽取接口
10.4.10 使用父类类型
10.4.11 使嵌套类成为普通类
10.4.12 使匿名类为嵌套类
10.4.13 抽取变量
System.out.println("Hello World");
String hi = "Hello World";
10.4.14 封装变量
10.4.15 把局部变量变为成员变量
10.4.16 抽取或内联常量
10.5 资源比较
10.5.1 替换为历史版本
10.5.2 恢复已删除资源