《Java EE开发技术与实践教程/高等教育规划教材》共分为五大部分,涵盖了JavaEE的主流开发技术。第一部分首先介绍了JavaWeb开发模型及其演化、JavaEE多层架构及其基础服务。第二部分则对JavaWeb基础开发技术如JSP、Servlet、EL、JSTL以及MVC进行了阐述。第三部分集中论述基于轻量级SSH(即Struts2+Spring+Hibernate)框架开发的原理和技术,特别是三者之间的整合方法。第四部分着重探讨了基于经典JavaEE框架(即JSF+EJB+JPA)开发的原理和方法,重点在于其架构性理念和规范。最后一部分给出了针对同一项目的三种不同开发技术方案,以期读者能获得JavaEE应用分层开发的整体性理解。《Java EE开发技术与实践教程/高等教育规划教材》的每个章节都配有拓展参考阅读文献,以指导读者进一步深入学习。
Java EE已经成为企业级应用开发的首选技术解决方案之一。本书以MyEclipse 8.5、MySQL 5.6、Tomcat 6.0或JBoss 6.0(用于EJB项目)作为开发和运行测试环境,以对比的叙述方式介绍了主流的Java EE开发技术及其实践。
《Java EE开发技术与实践教程/高等教育规划教材》从Java Web开发模型及其演化、Java EE多层架构及其基础服务的简单介绍入手,深入浅出地叙述了当前流行的Java EE开发技术的原理、方法及实践:1)基于MVC的JavaWeb开发基础模型(JSP+Servlet+JavaBean);2)基于SSH(Struts2+Spring+Hibemate)轻量级框架;3)基于JSF+EJB+JPA的经典Java EE框架。在本书的最后一个部分,针对同一项目采用上述三种Java Web开发技术方案分别予以实现,以期读者对于Java EE分层架构及各层对应模型或框架的技术选型有一个整体性的把握。
《Java EE开发技术与实践教程/高等教育规划教材》体现了面向实用型软件工程人才培养的课程改革的方向,在关注Java Web开发基础的前提下,紧跟业界需求,重点介绍基于轻量级SSH框架的开发技术,同时从应用架构和规范标准的角度兼顾了经典Java EE框架。对于本书的使用:1)可以任选其中一种或两种JavaWeb开发模型或框架作为主要内容,而将其他部分作为辅助参考,这种使用方式建议授课30课时、实验10课时;2)可以包含所有内容,建议授课40课时、实验20课时,同时规划课余时间用于课程项目开发实践,以切实强化学生对基础概念和开发实践的掌握。
《Java EE开发技术与实践教程/高等教育规划教材》中包含的所有示例代码都是在MyEclipse 8.5、MySQL 5.6以及Tomcat 6.0或JBoss6.0环境下调试运行通过的。第14章给出一个完整的示例,以帮助读者顺利地完成开发任务。
从应用程序的设计到应用程序的发布,读者都可以按照书中所讲述内容实施。作为教材,每章后附有小结和拓展阅读书目建议,以指导读者对相关主题的深入学习。
《Java EE开发技术与实践教程/高等教育规划教材》的第1、2、9、13和14章由聂艳明编写;第8章和第11章由刘全中编写;第3~7章由邹青编写;第10章和第12章由李宏利编写。全书由聂艳明统稿,张阳教授审定。在本书的编写过程中,徐雷等同学承担了书稿的文字校对工作。本书的顺利出版,还要感谢西北农林科技大学信息工程学院的李书琴院长等领导以及其他老师所给予的大力支持和帮助。李建良、张宏鸣、赵建邦、王美丽、英明、王湘桃、毛锐、颜永丰等软件工程系的同仁,也为本书的编写提供了宝贵建议。
需要本书第14章示例项目代码以及全书示例的读者,请到出版社网站上下载。
《Java EE开发技术与实践教程/高等教育规划教材》出版得到了陕西省教育科学"十二五"规划2014年度课题"面向实用型软件工程人才培养的Java EE课程教学与实践改革探索研究"(课题编号:SGH140541)的资助与支持。
由于时间仓促、作者水平有限,书中难免存在不妥之处,恳请读者批评指正并提出宝贵意见。
编者
出版说明
前言
第一部分 Java EE基础及服务
第1章 Java Web开发模型及其演化
1.1 应用模式演化
1.1.1 单机应用
1.1.2 C/S应用
1.1.3 B/S应用
1.1.4 云应用
1.2 Java Web开发模型演化
1.2.1 原始阶段
1.2.2 模型阶段
1.2.3 框架阶段
1.3 Java EE多层架构
1.3.1 概述
1.3.2 表现层
1.3.3 业务层
1.3.4 持久层
1.4 本章小结
第2章 Java EE基础服务
2.1 概述
2.1.1 Java EE基础服务架构
2.1.2 Java EE提供的服务
2.2 JNDI(Java命名和目录服务)
2.2.1 基本原理
2.2.2 JNDI API
2.2.3 应用示例
2.3 RMI(远程方法调用)
2.3.1 基本原理
2.3.2 RMI API
2.3.3 应用示例
2.4 JDBC(Java数据库互连)
2.4.1 基本原理
2.4.2 JDBC API
2.4.3 应用示例
2.5 JTA(Java事务API)
2.5.1 基本原理
2.5.2 JTA API
2.5.3 应用示例
2.6 JMS(Java消息服务)
2.6.1 基本原理
2.6.2 JMS API
2.6.3 消息服务器配置
2.6.4 应用示例
2.7 本章小结
第二部分 Java Web开发基础
第3章 Java Web应用概述
3.1 静态网页和交互式网页
3.2 Java Web应用体系结构
3.2.1 HTML
3.2.2 HTTP
3.2.3 JSP和Servlet技术
3.2.4 Java Web应用基本组成
3.2.5 Java Web应用文档结构
3.3 Java Web运行与开发环境
3.3.1 运行环境
3.3.2 开发环境
3.4 本章小结
第4章 JSP技术
4.1 JSP简介
4.1.1 JSP特点
4.1.2 JSP工作原理
4.2 第一个JSP程序
4.3 JSP基本语法
4.3.1 脚本元素
4.3.2 指令元素
4.3.3 动作元素
4.3.4 注释
4.4 JSP内置对象
4.4.1 out对象
4.4.2 request对象
4.4.3 response对象
4.4.4 session对象
4.4.5 application对象
4.4.6 page和pageContext对象
4.4.7 exception对象
4.5 对象范围
4.6 本章小结
第5章 Servlet技术
5.1 Servlet概述
5.1.1 Servlet工作原理
5.1.2 Servlet生命周期
5.2 编写第一个Servlet
5.2.1 编写Servlet
5.2.2 部署
5.2.3 访问Servlet
5.3 Servlet主要接口及实现类
5.3.1 javax.servlet.Servlet接口
5.3.2 ServletConfig接口
5.3.3 javax.servlet.GenericServlet类
5.3.4 javax.servlet.http.HttpServlet类
5.3.5 HttpServletRequest和
HttpServletResponse
5.4 Servlet与客户端进行通信
5.4.1 request对象
5.4.2 response对象
5.4.3 Servlet上下文
5.4.4 请求转发
5.4.5 Cookie对象
5.4.6 应用示例
5.5 过滤器
5.5.1 过滤器工作原理
5.5.2 过滤框架及部署
5.5.3 应用示例
5.6 Servlet生命周期事件
5.6.1 应用事件监听器
5.6.2 监听器注册部署
5.6.3 生命周期事件应用
5.7 本章小结
第6章 EL与JSTL
6.1 EL
6.1.1 即时计算和延迟计算
6.1.2 [ ]与.操作符
6.1.3 运算符
6.1.4 EL内置对象
6.2 JSTL
6.2.1 JSTL配置
6.2.2 核心标签库
6.2.3 国际化标签库
6.2.4 函数标签库
6.2.5 其他标签库
6.3 本章小结
第7章 基于MVC的开发
7.1 MVC概述
7.1.1 Model
7.1.2 View
7.1.3 Controller
7.1.4 Java Web的MVC实现模式
7.2 MVC开发实例
7.2.1 系统分析及功能设计
7.2.2 MVC模块设计
7.2.3 详细设计
7.3 系统实现
7.3.1 视图部分实现
7.3.2 模型部分实现
7.3.3 控制器部分实现
7.3.4 其他部分实现
7.4 系统部署
7.5 本章小结
第三部分 轻量级框架SSH
第8章 Struts 2
8.1 Struts 2的工作原理
8.2 Struts 2配置
8.2.1 web.xml配置
8.2.2 struts.xml配置
8.3 简单示例
8.3.1 创建工程
8.3.2 业务控制器Action
8.3.3 struts.xml配置
8.3.4 视图文件
8.3.5 运行示例
8.4 Action
8.4.1 Action实现
8.4.2 Action配置
8.5 拦截器
8.5.1 Struts 2拦截器原理
8.5.2 Struts 2内建拦截器
8.5.3 自定义拦截器
8.6 OGNL和类型转换
8.6.1 OGNL概述
8.6.2 OGNL表达式
8.6.3 OGNL融入Struts 2框架
8.6.4 Struts 2内建类型转换器
8.6.5 自定义类型转换器
8.7 Struts 2的标签库
8.7.1 数据标签
8.7.2 控制标签
8.7.3 表单UI标签
8.7.4 非表单UI标签
8.8 输入校验
8.8.1 Struts 2内建校验器
8.8.2 自定义校验器
本章小结
第9章 Hibernate
9.1 数据持久化与ORM
9.1.1 数据持久化
9.1.2 ORM
9.2 Hibernate简介
9.2.1 简介
9.2.2 Hibernate框架与接口
9.3 第一个Hibernate应用
9.3.1 创建数据库
9.3.2 创建Hibernate项目
9.3.3 创建持久化类
9.3.4 编写Hibernate映射文件
9.3.5 编写Hibernate配置文件
9.3.6 编写SessionFactory和DAO文件
9.3.7 编写HTML页面和jsp文件
9.3.8 构建、部署并运行程序
9.3.9 基于MyEclipse的Hibernate反向工程
9.4 实体状态及持久化操作
9.4.1 瞬时态
9.4.2 持久态
9.4.3 脱管态
9.4.4 移除态
9.5 Hibernate实体映射
9.5.1 Hibernate实体映射概述
9.5.2 Hibernate实体类/数据表映射
9.5.3 Hibernate复合主键及嵌入式主键
9.5.4 Hibernate特殊属性映射
9.6 Hibernate实体关系映射
9.6.1 Hibernate一对一关联
9.6.2 Hibernate一对多关联和多对一关联
9.6.3 Hibernate多对多关联
9.6.4 Hibernate继承关联
9.7 Hibernate基本数据查询
9.7.1 Hibernate数据检索
9.7.2 Query接口
9.7.3 HQL基本语法
9.7.4 HQL返回结果
9.7.5 HQL中的参数绑定
9.7.6 实现一般SQL查询
9.7.7 命名查询
9.8 本章小结
第10章 Spring
10.1 Spring 简介
10.1.1 Spring的发展及特点
10.1.2 Spring的体系结构
10.2 Spring 第一个实例
10.3 Spring IoC容器与Beans
10.3.1 BeanFactory和
ApplicationContext
10.3.2 Bean基本装配
10.3.3 依赖注入
10.3.4 基于注解的Bean配置
10.4 Spring AOP
10.4.1 AOP基础
10.4.2 Spring AOP中的Annotation配置
10.4.3 Spring AOP中的文件配置
10.5 Spring事务管理与任务调度
10.5.1 Spring中事务基本概念
10.5.2 Spring事务的配置
10.6 Spring集成
10.6.1 Spring整合Struts 2
10.6.2 Spring整合Hibernate
10.7 本章小结
第四部分 经典Java EE框架
第11章 JSF
11.1 JSF概述
11.1.1 工作原理
11.1.2 配置文件
11.2 简单示例
11.3 UI组件
11.3.1 概述
11.3.2 HTML组件标签
11.3.3 核心组件标签
11.4 验证器、转换器和事件监听器
11.4.1 验证器
11.4.2 转换器
11.4.3 事件监听器
11.5 本章小结
第12章 EJB
12.1 EJB基本概念
12.1.1 EJB发展历史及意义
12.1.2 EJB运行服务器
12.1.3 第一个EJB
12.1.4 EJB3运行环境以及在JBoss中的部署
12.2 会话Bean
12.2.1 会话Bean概述
12.2.2 无状态会话Bean
12.2.3 有状态会话Bean
12.3 依赖注入
12.3.1 EJB3中的依赖注入
12.3.2 资源类型的注入
12.4 消息驱动Bean
12.4.1 消息驱动Bean原理
12.4.2 消息驱动Bean开发
12.5 EJB访问其他资源
12.5.1 访问数据源
12.5.2 访问定时服务
12.5.3 事务处理
12.5.4 拦截器
12.6 本章小结
第13章 JPA
13.1 JPA简介
13.1.1 简介
13.1.2 JPA与其他持久化技术的比较
13.1.3 JPA与EJB 3之间的关系
13.1.4 JPA的主要类和接口
13.2 第一个JPA应用
13.2.1 创建JPA项目
13.2.2 创建基于注解的持久化类
13.2.3 编写JPA配置文件
13.2.4 编写EntityManagerHelper和DAO文件
13.2.5 基于MyEclipse的JPA反向工程
13.3 使用JPA完成实体状态的操作
13.3.1 实体的状态及操作
13.3.2 获取实体管理器工厂
13.3.3 获取实体管理器
13.3.4 使用实体管理器
13.3.5 处理事务
13.4 使用JPA完成查询
13.4.1 使用EntityManager根据主键查询对象
13.4.2 编写简单查询
13.4.3 创建Query对象
13.4.4 使用命名查询
13.4.5 处理查询中的变量
13.4.6 得到查询结果
13.4.7 使用分页查询
13.4.8 访问查询结果
13.4.9 使用标准SQL语句
13.5 JPA进阶
13.5.1 把查询的多个值封装成对象
13.5.2 使用存储过程
13.5.3 JPA实体生命周期回调方法
13.6 本章小结
第五部分 案例项目开发实践
第14章 案例项目开发示例
14.1 系统简介
14.1.1 背景
14.1.2 业务功能需求
14.2 系统分析
14.2.1 分析类
14.2.2 ER图
14.3 数据库表结构设计
14.4 基于MVC的Java Web模型
14.4.1 系统设计
14.4.2 系统各层的实现
14.5 基于轻量级SSH框架
14.5.1 系统设计
14.5.2 系统各层的实现
14.6 基于经典Java EE框架
14.6.1 系统设计
14.6.2 系统各层的实现
14.7 本章小结
第1章Java Web开发模型及其演化
随着计算机软硬件技术的发展以及应用需求的变迁,应用模式也随之发生演化,例如从单机、C/S、B/S再到云应用。当前B/S应用(亦称为WelD应用)为主流,基于Java的Web开发模型也经历了3个主要阶段,即原始阶段、模型阶段和框架阶段,多层架构的Java EE(包括表现层、业务逻辑层、持久层和数据库层)可以被看做是Java Web应用开发的框架规范。
1.1应用模式演化
1.1.1单机应用
单机应用(Startdalone Application)为全部应用任务独立运行于一台机器上的应用,如记事本、画图以及MS Word等。基于数据库的应用系统中,应用任务一般可以分为三类:用户界面表示、业务逻辑处理以及应用数据存取。在单机应用中,上述三类任务都被部署并运行于同一台机器上。如基于MS Access的简单数据库应用也属于单机应用。
在计算机网络还不是很普及的年代,应用大都为单机版。随着计算机网络的发展和业务需求自身的改变,应用程序逐步转向多个系统协同的网络版,如随后将会讨论到的C/S应用、B/S应用、云应用等。
1.1.2 C/S应用
C/S(cLIENT/Server,客户机/服务器)架构为分布式的软件体系结构的一种。C/S架构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”的原则。除了完成自身的任务外还需请求诸如网络连接、数据存取、消息收发等服务的程序称为客户机程序(Client),提供相应服务的程序则称为服务器程序(Server),客户机和服务器通过网络(可以是Intranet或Internet)连接,C/S架构示意见图1-1通过C/S架构,可以在尽量降低系统通信开销的同时,充分利用两端软硬件环境的优势,将应用任务合理分配到客户端和服务器来执行。特别的,具有分布要求的业务应用需要通过网络连接的多台机器协作完成。
根据客户机和服务器任务的分配重点,C/S架构中的客户机又可分为胖客户机(Rich Client)和瘦客户机(Thin Client)。如客户机只是负责用户界面表示(其他两类任务由服务器负责),则为瘦客户机;相应的,如客户机负责用户界面和业务逻辑处理(服务器只负责应用数据存取),则称为胖客户机。
……