您的位置:首页 > 编程语言 > Java开发

新书出版:Java Web开发技术大全——JSP+Servlet+Struts 2+Hibernate+Sp

2009-05-08 12:10 399 查看
本文为原创,如需转载,请注明作者和出处,谢谢!





作者:李宁 图书详细信息:

ISBN:9787302195757

定价:79.8元

印次:1-1

装帧:平装

印刷日期:2009-4-23

图书简介:

SSH是目前最流行的Java Web开发技术。本书通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法。本书内 容包括Web客户端技术、JSP/Servlet技术、Struts 2(拦截器、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean、Jdbc和Hibernate模板、事务管理、Spring AOP等)以及 Hibernate(会话、映射、标准查询API、HQL、事务管理、锁等)。除此之外,本书还提供了两个完整的实例来讲解开发SSH的详细步骤和方法。 通过对这两个实例的学习,读者可以对SSH开发模式有更透彻地理解和认识。

本书适合广大从事Java Web开发工作的技术人员、对SSH开发感兴趣的人员以及大专院校学生阅读,尤其是具有一定的Web开发经验的技术人员。

前 言

现在MVC模式已经成为Web应用的主流开发模式。而Struts框架几乎可以和MVC模式划等号,因为Struts框架已经成为了MVC模式的事实标准。随着Struts 1.x的应用浪潮席卷全球数年后,Struts 2又以崭新的姿态与世人见面了。

Struts 2仍然可以继承Struts 1.x的应用模式(Struts + Spring + Hibernate),但关于 Struts 2+Spring+Hibernate整合的书却并不多。为了使读者尽快了解和掌握如何使用 Struts 2、Spring和Hibernate 3个框架整合的方式来开发Web应用系统,笔者花费了大量的时间来完成这本关于Struts 2 + Spring +Hibernate 整合的书。为了尽可能保证内容的准确和权威性,笔者查阅了大量的官方文档,并针对关键部分阅读了相应的源代码。

本书的写作目标就是力争让读者尽可能地掌握Struts 2、Spring和Hibernate,以及这3个框架整合的相关知识。并通过两个完整实例的讲解使读者尽快融入SSH(Struts+Spring+ Hibernate)大家庭。

本书有何特色

1.从基础开始,由浅入深

JSP/Servlet技术是Java Web技术的基础,很多初学者在学习SSH之前并没有很好地掌握该技术,因此,本书考虑到这个原因,在第一篇讲解了JSP/Servlet以及Web客户 端技术的基础知识。除此之外,在第二~四篇的头一章都以一个简单的例子开始,以使读者在学习每一篇所讲的技术之前,对这种技术有一个初步的了解。并且每一 篇的章节是按照由浅入深、循序渐进的顺序编排的,从而可以使读者渐进式地学习本书的知识。

2.各篇独立,内容完整

本书的每一篇都是相对独立的。如第二篇讲解了Struts 2的各种技术;第三篇讲解了Hibernate的主要技术,而且每一篇讲解的技术比较完整。这样就会给想学习SSH整合技术,但却未掌握SSH中的一项或 几项技术的读者带来方便,至少不需要同时准备几本书,从而给读者节省了大量的时间和金钱。

3.各章实例丰富,使读者更容易理解书中的知识

本书几乎在每一章都提供了大量的实例。这些实例充分展现了相关知识点的实现细节。读者可以在学习相关知识点后,通过上机实践这些例子来更深入地了解并掌握这些知识点。

4.提供了完整的实例,使读者更进一步体会SSH开发模式的精髓

在本章的最后还提供了两个完整的实例(网络硬盘和论坛系统)。这两个实例都采用了SSH模式进行开发。通过对这两个实例的深入研究,读者可以比较全面地掌握基于SSH模式的Web应用程序的开发步骤和开发方法,并可将实例中所采用的技术应用到自己的项目中。

5.使用最新版本的开发工具和框架

本书所使用的开发工具和相关的框架在笔者写作本书时都是最新版本,如MyEclipse 6.5、Struts 2.0.11.2等。读者可以在学习SSH开发技术的同时,接触到目前最新版本的开发工具和框架。就算读者目前所使用的软件版本低于本书所使用的软件版 本,也可以为未来的工作奠定基础。

6.配有源代码与视频光盘,方便读者使用

为了方便读者实验本书提供的实例程序,特将所有的源代码都收录到了配书光盘中,以方便读者使用。另外,作者特别为本书录制了一些多媒体视频演示,将本书中的一些相关操作直观地展示给读者,以达到更好的学习效果。

本书内容

第1章:为了使读者尽快搭建本书所使用的开发环境。在这一章将详细介绍本书所使用的开发工具、框架的版本号以及下载、安装和配置的过程。

第2章:本章介绍了Web技术的发展历史,以及Java Web技术的基本组成。最后详细描述了Java Web技术中常用的两种开发模式:JSP模型1和JSP模型2(MVC模式),以及目前常用的MVC框架。

第3章:本章介绍了在Web系统中常用的客户端技术,这些技术包括JavaScript、CSS和AJAX。在本章的开始部分还介绍了一些开发JavaScript的常用IDE。

第4章:本章介绍了Servlet的基础知识,如处理请求消息、响应消息、Cookie和Session等,最后还详细讲解了Web开发中所遇到的中文乱码问题的解决方案。

第5章:本章介绍了JSP的运行原理、基本语法、JSP指令、JSP的内置对象、JSP标签和JSTL。

第6章:本章以一个用户注册登录系统为例,演示了如何综合运用JSP/Servlet技术开发一个完整的Web应用程序。

第7章:本章介绍了Struts 2中的MVC模式,以及Struts 2的体系结构。最后给出了一个简单的例子来演示开发基于Struts 2的Web应用程序的步骤和方法。

第8章:本章介绍了如何配置Struts 2框架、Struts 2 Action、处理结果、模型驱动和异常处理。

第9章:本章介绍了Struts 2的拦截器技术,其中包括拦截器的实现原理、拦截器的配置、实现自定义拦截器以及内建拦截器等内容。

第10章:本章介绍了Struts 2中的各种类型转换技术。如OGNL表达式、数组和集合类型转换器、类型转换的错误处理等。

第11章:本章介绍了传统的输入校验和Struts 2中的输入校验。

第12章:本章首先介绍了文件上传的原理,以及如何使用Commons-FileUpload组件上传文件。本章的重头戏是讲解Struts 2的上传功能,其中包括上传单个文件和上传任意多个文件的方法。在最后介绍了如何使用Struts 2框架下载文件,主要包括使用stream结果下载文件以及下载文件的权限控制。

第13章:本章介绍了Struts 2在国际化方面的技术。为了更深入地理解Struts 2的国际化功能,在本章的开始部分首先介绍了Java对国际化的支持。然后逐步深入介绍Struts 2的国际化技术,主要包括访问资源文件、资源文件的加载顺序等,最后给出了一个例子来演示如何将国际化功能加载到Web应用程序中。

第14章:本章详细讲解了Struts 2框架中的标签。这些标签包括控制标签、数据标签、表单标签、非表单标签。

第15章:本章着重介绍了Struts 2框架对AJAX的支持,主要内容包括支持AJAX的标签、基于AJAX的校验、发布-订阅事件模型、JSON插件等。

第16章:本章使用了Struts 2技术重新实现了第6章的用户注册登录系统。在本章实现的用户注册登录系统的功能和第6章实现的该系统的功能相同,只是使用了Struts 2框架来实现相关的部分。读者可以从中体会到使用JSP/Servlet和Struts 2在开发Web应用程序中的不同。

第17章:本章介绍了ORM的概念以及Hibernate和EJB的关系。最后给出一个例子来演示在MyEclipse中开发基于Hibernate的系统的步骤和方法。

第18章:本章介绍了Hibernate的两种配置方式:配置文件和注释。在最后给出了一个例子重新实现了第17章的例子,只不过这个例子使用了注释来配置Hibernate。

第19章:本章介绍了Hibernate会话的基本操作和O/R映射。其中O/R映射主要介绍了映射主键、映射复合主键、映射普通属性、组件映射、基于注释的组件映射、多对一、一对多、一对一的关系。

第20章:本章的第1节介绍了Hibernate的标准(Criteria)查询API技术,主要内容包括约束条件、分页、排序、聚合和分组以及QBE。 在第2节介绍了Hibernate中的另外两种查询技术:HQL和SQL。其中HQL主要介绍了From、Select、Where、Update、 Insert以及Delete语句,还介绍了命名参数、排序和分组、关联查询、命名查询等。

第21章:本章介绍了Hibernate的一些高级技术,主要包括事务管理、锁机制、查询缓存、拦截器和事件与过滤器。

第22章:本章介绍了Spring的主要特性和核心技术,在最后还给出了一个例子来演示使用Spring框架开发程序的过程。

第23章:本章介绍了Spring框架的核心思想,反向控制(Ioc),同时还详细讲解了Spring框架中最常用的装配Java Bean技术以及分散配置和定制属性编辑器。

第24章:本章介绍了Spring中的数据库技术,主要包括在Spring中使用数据源连接数据库、操作JDBC的JdbcTemplate;操作Hibernate的HibernateTemplate以及自增键和异常的处理。

第25章:本章主要介绍了Spring AOP技术的基础知识以及事务管理。除此之外,还介绍了Spring的其他一些高级属性,如建立和访问RMI服务、发送Email、调度任务等。

第26章:从本章开始逐渐涉及到了SSH开发的全过程。在本章主要介绍了Struts 2、Spring和Hibernate 3个框架整合的思路,以及基于SSH的系统的层次结构。

第27、28章:在这两章给出了两个完整的使用SSH开发的例子(网络硬盘和论坛系统)。在这两个例子中详细描述了开发基于SSH的系统的步骤和其中所涉 及到的技术。开发这两个例子的基本步骤类似,不过它们所涉及到的技术有一定的区别,如在论坛系统中涉及到了一个Web编辑器(FCKEditor)的安装 和使用。

适合阅读本书的读者

* 初步掌握Java技术,想进一步学习SSH整合开发的读者

* 对SSH整合技术有了一定的了解,想进一步提高的读者

* 正在使用SSH整合技术开发项目,想查阅相关技术的读者

* 大中专院校的学生

* 社会培训学生

目 录

第1篇 Web开发基础篇

第1章 搭建开发环境 2

1.1 本书使用的软件和框架的版本 2

1.2 JDK6的下载与安装 2

1.3 Eclipse 3.4的下载与安装 3

1.4 MyEclipse 6.5的下载与安装 3

1.5 Eclipse IDE for Java EE Developers的下载与安装 4

1.6 Tomcat 6的下载与安装 5

1.7 在MyEclipse中配置Tomcat 6

1.8 在Eclipse IDE for Java EE Developers中配置Tomcat 6

1.9 小结 7

第2章 Java Web应用开发基础 8

2.1 Web技术的发展 8

2.2 Java Web技术 10

2.2.1 Java Web程序的基本组成 11

2.2.2 Java Web程序的目录结构 11

2.2.3 Java Web程序的配置文件 11

2.3 MVC模式与MVC框架 12

2.3.1 JSP模型1和JSP模型2 12

2.3.2 Web应用程序需要的基础服务 13

2.3.3 MVC模式概述 14

2.3.4 常用的MVC框架 15

2.4 小结 16

第3章 Web开发中的客户端技术 17

3.1 常用的JavaScript IDE简介 17

3.1.1 在MyEclipse中使用JavaScript 17

3.1.2 在Eclipse IDE for Java EE中使用JavaScript 18

3.1.3 在NetBeans中使用JavaScript 19

3.1.4 其他的JavaScript IDE 20

3.2 JavaScript语法基础 20

3.2.1 实例:编写第一个JavaScript程序:Greet 21

3.2.2 变量 22

3.2.3 原始类型 22

3.2.4 类型转换 26

3.2.5 函数与函数调用 28

3.2.6 类和对象 30

3.3 JavaScript高级技术 32

3.3.1 DOM技术概述 32

3.3.2 获得HTML元素的3种方法 34

3.3.3 实例:图像自动切换 36

3.3.4 正则表达式 37

3.3.5 实例:表格排序 38

3.4 CSS基础 41

3.4.1 CSS的基本语法 41

3.4.2 在Style属性中定义样式 42

3.4.3 在HTML中定义样式 42

3.4.4 在外部文件中定义样式 43

3.4.5 样式的继承 43

3.5 AJAX基础 44

3.5.1 AJAX概述 44

3.5.2 实例:使用XMLHttpRequest获得Web资源 45

3.5.3 实例:使用XMLHttpRequest跨域访问Web资源 46

3.5.4 实例:AJAX的3种交换数据方法 47

3.6 小结 49

第4章 Servlet技术 50

4.1 Servlet的Helloworld程序 50

4.1.1 实例:在MyEclipse中编写Helloworld程序 50

4.1.2 实例:手工编写Helloworld程序 53

4.2 Servlet基础 54

4.2.1 配置数据库连接池 55

4.2.2 数据库连接池的应用 56

4.2.3 实例:用doGet方法处理客户端请求 58

4.2.4 实例:用doPost方法处理客户端请求 60

4.2.5 实例:用service方法处理客户端请求 60

4.2.6 实例:初始化(init)和销毁(destroy)Servlet 62

4.2.7 实例:使用PrintWriter输出响应消息 64

4.2.8 实例:用ServletOutputStream显示图像 65

4.2.9 实例:使用RequestDispatcher包含Web资源 66

4.2.10 实例:使用RequestDispatcher转发Web资源 68

4.3 HttpServletResponse类的其他功能 69

4.3.1 产生状态响应码 70

4.3.2 设置响应消息头 71

4.3.3 实例:验证响应头设置情况 73

4..4 使用HttpServletRequest获得请求消息 73

4.4.1 获取请求行消息 74

4.4.2 获取网络连接消息 74

4.4.3 获取请求头消息 75

4.5 处理Cookie 76

4.5.1 什么是Cookie 76

4.5.2 Cookie类中的方法 76

4.5.3 实例:用Cookie读写客户端信息 77

4.5.4 实例:用Cookie读写复杂数据 79

4.6 处理Session 81

4.6.1 什么是Session 81

4.6.2 HttpSession接口中的方法 81

4.6.3 HttpServletRequest接口中的Session方法 83

4.6.4 实例:通过Cookie跟踪Session 83

4.6.5 实例:通过重写URL跟踪Session 85

4.7 Web开发的中文问题 87

4.7.1 Java的编码原理 87

4.7.2 实例:解决输出中文乱码问题 89

4.7.3 实例:解决服务端程序读取中文请求消息的乱码问题 90

4.7.4 实例:用AJAX技术发送和接收中文信息 92

4.7.5 实例:在请求消息头和响应消息头中转输中文 95

4.8 小结 97

第5章 JSP技术 98

5.1 用MyEclipse编写第一个JSP程序 98

5.1.1 实例:编写显示服务器当前时间的JSP程序 98

5.1.2 调试JSP程序 100

5.1.3 改变JSP的访问路径和扩展名 101

5.1.4 手动发布JSP程序 102

5.2 JSP的运行原理 102

5.2.1 Tomcat如何处理JSP页 103

5.2.2 分析由JSP生成的Servlet代码 104

5.3 JSP基本语法 108

5.3.1 JSP表达式 109

5.3.2 在JSP中嵌入Java代码 109

5.3.3 JSP声明 111

5.3.4 JSP表达式语言(EL) 113

5.3.5 实例:用EL函数替换HTML中的特殊字符 115

5.3.6 JSP页面中的注释 117

5.4 JSP指令 118

5.4.1 JSP指令简介 118

5.4.2 page页面指令 119

5.4.3 include加入指令 125

5.5 JSP的9个内置对象 126

5.5.1 out输出对象 126

5.5.2 pageContext封装对象 128

5.5.3 其他的JSP内置对象 129

5.6 JSP标签 132

5.6.1 <jsp:include>插入标签 132

5.6.2 <jsp:forward>转发标签 134

5.6.3 <jsp:param>传参标签 135

5.6.4 <jsp:useBean>创建Bean标签 136

5.6.5 <jsp:setProperty>设置属性值标签 138

5.6.6 <jsp:getProperty>获取属性值标签 140

5.7 JSP的标准标签库(JSTL) 140

5.7.1 如何使用JSTL 141

5.7.2 条件标签 142

5.7.3 循环标签 144

5.8 小结 147

第6章 用Servlet和JSP实现注册登录系统 148

6.1 系统概述 148

6.1.1 系统功能简介 148

6.1.2 系统总体结构 149

6.2 设计数据库 149

6.3 实现系统的基础类 150

6.3.1 实现访问数据库的DBServlet类 150

6.3.2 实现MD5加密 152

6.3.3 实现图形验证码 152

6.4 实现注册系统 155

6.4.1 实现注册Servlet类 155

6.4.2 实现注册系统的主页面 157

6.4.3 实现结果JSP页面 159

6.5 实现登录系统 160

6.5.1 实现登录Servlet 160

6.5.2 实现登录系统主页面 162

6.6 小结 163

第2篇 Struts 2篇

第7章 编写Struts 2的第一个程序 166

7.1 Struts 2中的MVC模式 166

7.2 Struts 2的体系结构 167

7.2.1 Struts 2的工作流程 167

7.2.2 Struts 2的配置文件 167

7.2.3 Struts 2的控制器 169

7.3 实例:图书查询系统 170

7.3.1 下载和安装Struts 2 170

7.3.2 编写数据处理类 171

7.3.3 编写和配置Action类 172

7.3.4 编写显示查询结果的JSP页面 174

7.3.5 编写输入查询信息的JSP页面 176

7.4 小结 177

第8章 Struts 2进阶 178

8.1 Struts 2的基本配置 178

8.1.1 配置web.xml 178

8.1.2 配置struts.xml 179

8.1.3 配置struts.properties 183

8.1.4 Struts 2的DTD 186

8.2 深入理解Struts 2的配置元素 188

8.2.1 配置Bean 188

8.2.2 配置常量(constant) 190

8.2.3 配置包含(include) 191

8.2.4 配置包(package) 192

8.2.5 配置命名空间 193

8.2.6 配置拦截器 194

8.3 Struts 2注释(Annotation) 195

8.3.1 ParentPackage注释:设置当前包的父包 195

8.3.2 Namespace注释:指定当前包的命名空间 196

8.3.3 Results与Result注释:指定当前Action结果 197

8.3.4 实例:用注释配置Action 197

8.4 Struts 2的Action 200

8.4.1 Action类的getter和setter方法 200

8.4.2 实现Action接口 202

8.4.3 继承ActionSupport类 203

8.4.4 实例:用ActionContext访问Servlet API 205

8.4.5 实例:通过aware拦截器访问Servlet API 209

8.4.6 实例:利用动态方法处理多个提交请求 211

8.4.7 实例:利用method属性处理多个提交请求 213

8.4.8 使用通配符 214

8.4.9 默认Action 218

8.5 处理结果 218

8.5.1 配置结果 218

8.5.2 Struts 2支持的处理结果类型 219

8.5.3 用通配符指定结果 222

8.5.4 用请求参数指定结果 223

8.6 模型驱动 224

8.6.1 ModelDriven概述 224

8.6.2 实例:使用模型驱动改进登录程序 226

8.7 处理异常 228

8.7.1 Struts 2处理异常的原理 229

8.7.2 实例:登录系统的异常处理 230

8.8 小结 233

第9章 Struts 2的拦截器 234

9.1 理解拦截器 234

9.1.1 拦截器的实现原理 234

9.1.2 实例:模拟Struts 2实现一个拦截器系统 237

9.2 配置Struts 2拦截器 242

9.2.1 配置拦截器 242

9.2.2 使用拦截器 244

9.2.3 默认拦截器 245

9.3 实例:自定义拦截器 247

9.3.1 编写拦截器类 247

9.3.2 配置自定义拦截器 249

9.4 拦截器的高级技术 251

9.4.1 过滤指定的方法 251

9.4.2 拦截器执行顺序 254

9.4.3 拦截器结果监听器 255

9.5 Struts 2内建的拦截器 258

9.5.1 内建拦截器 258

9.5.2 内建拦截器的配置 260

9.6 实例:编写权限验证拦截器 262

9.6.1 编写权限验证拦截器类 263

9.6.2 配置权限控制拦截器 263

9.7 小结 265

第10章 Struts 2的类型转换 266

10.1 为什么要进行类型转换 266

10.1.1 客户端和服务端之间的数据处理过程 266

10.1.2 传统的类型转换 267

10.2 使用Struts 2类型转换器 270

10.2.1 Struts 2内建的类型转换器 271

10.2.2 实例:实现基于OGNL的类型转换器 274

10.2.3 配置全局类型转换器 278

10.2.4 实例:实现基于Struts 2的类型转换器 280

10.2.5 实例:实现数组类型转换器 282

10.2.6 实例:实现集合类型转换器 284

10.3 实例:使用OGNL表达式进行类型转换 287

10.4 Struts 2对Collection和Map的支持 289

10.4.1 指定集合元素的类型 289

10.4.2 Set和索引属性 291

10.5 类型转换的错误处理 292

10.6 小结 294

第11章 Struts 2的输入校验 295

11.1 传统的数据校验方法 295

11.1.1 用JavaScript进行客户端校验 295

11.1.2 手工进行服务端校验 300

11.2 Struts 2的数据校验 303

11.2.1 Struts 2使用validate方法校验数据的原理 303

11.2.2 实例:使用validate方法进行输入校验 305

11.2.3 实例:使用validateXxx方法进行输入校验 308

11.2.4 Struts 2的输入校验流程 311

11.3 使用Validation框架进行输入校验 312

11.3.1 实例:服务端校验 313

11.3.2 字段校验器和非字段校验器 315

11.3.3 国际化错误提示信息 317

11.3.4 实例:客户端校验 319

11.3.5 校验文件的命名规则 323

11.3.6 短路校验器 325

11.4 Validation框架的内建校验器 327

11.4.1 注册和引用校验器 327

11.4.2 转换(conversion)校验器 328

11.4.3 日期(date)校验器 329

11.4.4 双精度浮点数(double)校验器 330

11.4.5 邮件地址(email)校验器 331

11.4.6 表达式(expression)校验器 332

11.4.7 字段表达式(fieldexpression)校验器 332

11.4.8 整数(int)校验器 333

11.4.9 正则表达式(regex)校验器 334

11.4.10 必填(required)校验器 335

11.4.11 必填字符串(requiredstring)校验器 335

11.4.12 字符串长度(stringlength)校验器 336

11.4.13 网址(url)校验器 337

11.4.14 visitor校验器 337

11.5 小结 341

第12章 文件的上传和下载 342

12.1 文件上传原理 342

12.1.1 表单数据的编码方式 342

12.1.2 applicaiton/x-www.form-urlencoded编码方式 343

12.1.3 multipart/form-data编码方式 345

12.2 使用Commons-FileUpload上传文件 348

12.2.1 下载和安装Commons-FileUpload组件 348

12.2.2 实例:上传单个文件 349

12.2.3 实例:上传任意多个文件 352

12.3 实例:Struts 2的文件上传 355

12.3.1 Struts 2对上传文件的支持 355

12.3.2 编写上传文件的JSP页 355

12.3.3 编写上传文件的Action类 356

12.3.4 配置上传文件的Action类 358

12.3.5 手工过滤上传文件的类型 359

12.3.6 用fileUpload拦截器过滤上传文件的类型 361

12.4 在Struts 2中上传多个文件 363

12.4.1 实例:用数组上传固定数目的文件 363

12.4.2 实例:用List上传任意数目的文件 366

12.5 文件下载 368

12.5.1 下载文件的中文问题 368

12.5.2 用stream结果下载文件 369

12.5.3 下载文件的授权控制 371

12.6 小结 372

第13章 国际化 373

13.1 国际化基础 373

13.1.1 程序为什么需要国际化 373

13.1.2 Java国际化中的资源文件 374

13.1.3 Java支持的语言和国家 375

13.1.4 资源文件的中文支持 376

13.1.5 编写国际化程序 377

13.1.6 带占位符的国际化信息 379

13.1.7 实例:使用资源文件编写国际化程序 380

13.1.8 Java国际化中的资源类 383

13.1.9 实例:使用资源类编写国际化程序 384

13.2 Struts 2的国际化基础 385

13.2.1 Struts 2中的全局资源文件 386

13.2.2 在Struts 2中访问国际化信息 386

13.2.3 在Struts 2中输出带占位符的国际化信息 389

13.3 资源文件的作用范围和加载顺序 391

13.3.1 包范围资源文件 391

13.3.2 接口范围资源文件 393

13.3.3 Action基类范围资源文件 395

13.3.3 Action范围资源文件 396

13.3.5 临时资源文件 397

13.3.6 加载资源文件的顺序 398

13.4 实例:编写支持多国语言的Web应用程序 399

13.4.1 通过i18n拦截器实现国际化 400

13.4.2 为register.jsp页面增加语言选择列表 401

13.4.3 将register.jsp页面映射成Action 402

13.5 小结 404

第14章 Struts 2的标签库 405

14.1 Struts 2标签基础 405

14.1.1 Struts 2标签的分类 405

14.1.2 使用Struts 2标签 406

14.1.3 Struts 2中的OGNL表达式 408

14.1.4 用OGNL表达式访问内置对象 411

14.1.5 用OGNL表达式操作集合 412

14.1.6 Lamdba(λ)表达式 414

14.2 控制标签 415

14.2.1 if/elseif/else标签:条件逻辑控制 415

14.2.2 iterator标签:数组、集合迭代 418

14.2.3 append标签:将集合以追加方式合并为新集合 422

14.2.4 generator标签:将字符串分割成多个子串 424

14.2.5 merge标签:将集合以交替方式合并为新集合 427

14.2.6 subset标签:获得集合的子集 428

14.2.7 sort标签:对集合进行排序 430

14.3 数据标签 432

14.3.1 action标签:在JSP页面中直接访问Action 432

14.3.2 bean标签:创建JavaBean的对象实例 434

14.3.3 date标签:格式化日期/时间 436

14.3.4 debug标签:显示调试信息 438

14.3.5 include标签:包含Web资源 439

14.3.6 param标签:为其他的标签提供参数 440

14.3.7 property标签:输出指定的值 440

14.3.8 push标签:将指定值放到ValueStack栈顶 441

14.3.9 set标签:将某个值保存在指定的范围 442

14.3.10 url标签:生成URL地址 444

14.4 表单标签 446

14.4.1 表单标签的通用属性 446

14.4.2 表单标签的name和value属性 447

14.4.3 form、submit和reset标签:表单、提交和重置 449

14.4.4 checkboxlist标签:生成多个复选框 449

14.4.5 combobox标签:组合单行文本框和下拉列表框 452

14.4.6 datetimespicker标签:组合文本框和日期、时间选择框 454

14.4.7 doubleselect标签:生成级联列表框 457

14.4.8 head标签:添加CSS和JavaScript 458

14.4.9 optiontransferselect 标签:生成可交互的两个列表框 459

14.4.10 select标签:生成列表框 461

14.4.11 optgroup标签:生成下拉列表框选项组 462

14.4.12 radio标签:生成多个单选框 463

14.4.13 token标签:防止多次提交表单 464

14.4.14 updownselect标签:生成高级列表框 465

14.4.15 其他的表单标签 467

14.5 非表单标签 467

14.5.1 fielderror标签:显示字段错误信息 467

14.5.2 actionerror和actionmessage标签:显示动作错误和动作消息 468

14.5.3 component标签:使用模板 469

14.6 小结 471

第15章 Struts 2对AJAX的支持 472

15.1 Struts 2的AJAX主题 472

15.2 基于AJAX的输入校验 474

15.2.1 下载和安装DWR框架 474

15.2.2 编写具有AJAX校验功能的注册页面 475

15.2.3 编写Action类 476

15.2.4 设置校验规则 477

15.3 在表单中使用AJAX 479

15.3.1 实现可异步提交的表单 479

15.3.2 实现Action类 479

15.3.3 实现结果处理页面 480

15.3.4 执行JavaScript代码 481

15.4 发布-订阅(pub-sub)事件模型 483

15.4.1 pub-sub事件模型的原理 483

15.4.2 pub-sub事件模型演示 484

15.4.3 阻止请求服务端资源 487

15.5 使用Struts 2中的AJAX标签 488

15.5.1 div标签的基本应用 488

15.5.2 使用div标签执行JavaScript 491

15.5.3 手动控制div标签的更新 493

15.5.4 submit标签:发送异步请求 496

15.5.5 a标签:可异步提交请求的链接 498

15.5.6 autocompleter标签:带自运完成功能的文本框 501

15.5.7 tabbedPanel标签:生成Tab页 507

15.5.8 treenode和tree标签:树节点和树组件 511

15.6 使用JSON插件实现AJAX 513

15.6.1 下载和安装JSON插件 513

15.6.2 下载和安装prototype.js 513

15.6.3 实现Action类 514

15.6.4 在JSP页面中通过Prototype请求Action 515

15.7 小结 517

第16章 用Struts 2实现注册登录系统 518

16.1 系统总体结构 518

16.2 实现DAO层 518

16.2.1 实现DAOSupport类 519

16.2.2 实现UserDAO接口 520

16.2.3 实现UserDAOImpl类 520

16.3 实现Action类 522

16.3.1 实现模型类(User) 522

16.3.2 实现LoginAction类 523

16.3.3 实现RegisterAction类 525

16.4 输入校验 526

16.4.1 校验登录页面 526

16.4.2 校验注册页面 527

16.5 实现表现层页面 528

16.5.1 实现登录页面(login.jsp) 528

16.5.2 实现注册页面(register.jsp) 530

16.5.3 实现主页面(main.jsp) 531

16.6 实现其他的功能 532

16.6.1 使用Action类生成验证码图像 532

16.6.2 使用拦截器验证页面访问权限 534

16.7 小结 536

第3篇 Hibernate篇

第17章 Hibernate的Helloworld程序 538

17.1 Hibernate概述 538

17.1.1 为什么要使用ORM 538

17.1.2 Hibernate和EJB的关系 539

17.2 在应用程序中使用Hibernate 3 539

17.2.1 MyEclipse对Hibernate 3的支持 540

17.2.2 下载和安装新版本的Hibernate 3 542

17.3 第1个Hibernate程序 543

17.3.1 开发Hibernate程序的基本步骤 543

17.3.2 建立数据表 543

17.3.3 建立Hibernate配置文件 543

17.3.4 建立会话工厂(SessionFactory)类 544

17.3.5 建立实体Bean和Struts 2的模型类 547

17.3.6 建立映射文件 548

17.3.7 建立添加记录的Action类 548

17.3.8 建立录入信息的JSP页面 550

17.4 小结 552

第18章 配置Hibernate 553

18.1 用传统的方法配置Hibernate 553

18.1.1 用XML文件配置Hibernate 553

18.1.2 用属性文件配置Hibernate 556

18.1.3 用编程的方式配置Hibernate 556

18.1.4 Hibernate框架的配置属性 557

18.1.5 SQL方言(Dialect) 561

18.1.6 使用JNDI数据源 562

18.1.7 配置映射文件 563

18.2 使用注释(Annotations)配置Hibernate 564

18.2.1 Hibernate注释简介 564

18.2.2 安装Hibernate注释 564

18.2.3 使用@Entity注释实体Bean 565

18.2.4 使用@Table注释实体Bean 565

18.2.5 使用@Id注释主键 566

18.2.6 使用@GenericGenerator注释产生主键值 567

18.2.7 使用@Basic和@Transient注释 568

18.2.8 更高级的Hibernate注释 568

18.3 使用注释重新实现Helloworld程序 569

18.3.1 使用注释配置实体Bean 569

18.3.2 在Hibernate配置文件中指定实体Bean的位置 570

18.3.3 使用AnnotationConfiguration类处理annotation.cfg.xml文件 570

18.3.4 通过AnnotationSessionFactory类获得Session对象 571

18.4 小结 572

第19章 Hibernate的会话与O/R映射 573

19.1 会话(Session)的基本应用 573

19.1.1 保存持久化对象 573

19.1.2 判断持久化对象之间的关系 574

19.1.3 装载持久化对象 575

19.1.4 刷新持久化对象 577

19.1.5 更新持久化对象 578

19.1.6 删除持久化对象 579

19.2 建立O/R映射 579

19.2.1 映射主键 579

19.2.2 映射复合主键 580

19.2.3 实例:主键和复合主键的查询和更新 581

19.2.4 映射普通属性 586

19.2.5 建立组件(Component)映射 587

19.2.6 实例:组件映射的应用 588

19.2.7 基于注释的组件映射 592

19.2.8 建立多对一(many-to-one)单向关联关系 593

19.2.9 实例:多对一关系的演示 593

19.2.10 基于注释的多对一关系映射 597

19.2.11 建立一对多(one-to-many)的双向关联关系 598

19.2.12 实例:一对多双向关联的演示 598

19.2.13 基于注释的一对多映射 601

19.2.14 建立基于外键的一对一(one-to-one)的关系映射 602

19.2.15 实例:基于外键的一对一关系演示 603

19.2.16 建立基于主键的一对一的关系映射 606

19.2.17 实例:基于主键的一对一关系映射 607

19.3 小结 610

第20章 Hibernate的查询与更新技术 612

20.1 标准(Criteria)查询API 612

20.1.1 实例:一个简单的例子 612

20.1.2 查询的约束条件 613

20.1.3 对查询结果进行分页 615

20.1.4 实例:实现Web分页功能 617

20.1.5 只获得一个持久化对象 620

20.1.6 对查询结果进行排序 621

20.1.7 多个Criteria之间的关联 621

20.1.8 聚合和分组 622

20.1.9 使用QBE(Query By Example) 624

20.2 HQL和SQL技术 625

20.2.1 实例:使用HQL的第一个例子 625

20.2.2 From子句:简化实体Bean类名 626

20.2.3 Select子句:选择返回属性 628

20.2.4 Where子句:指定条件 629

20.2.5 使用命名参数 630

20.2.6 使用Query进行分页 631

20.2.7 实例:使用HQL实现Web分页功能 631

20.2.8 使用HQL进行排序和分组 632

20.2.9 关联查询 633

20.2.10 聚合函数 635

20.2.11 Update和Delete语句:更新持久化对象 636

20.2.12 Insert语句:插入记录 637

20.2.13 命名查询 638

20.2.14 使用SQL 639

20.3 小结 640

第21章 Hibernate的高级技术 641

21.1 事务管理 641

21.1.1 事务概述 641

21.1.2 事务的隔离等级 642

21.1.3 Hibernate的事务管理 643

21.1.4 基于JDBC的事务管理 643

21.1.5 基于JTA的事务管理 644

21.2 锁(Locking) 644

21.2.1 悲观锁(Pessimistic Locking) 644

21.2.2 乐观锁(Optimistic Locking) 646

21.3 查询缓存(Query Cache) 648

21.4 拦截器和事件 649

21.4.1 拦截器(Interceptors)概述 649

21.4.2 实例:编写一个Hibernate拦截器 649

21.4.3 事件(Events)概述 653

21.4.4 实例:编写和注册事件类 654

21.5 过滤器 656

21.6 小结 657

第4篇 Spring篇

第22章 Spring的Helloworld程序 660

22.1 Spring简介 660

22.1.1 Spring的主要特性 660

22.1.2 Spring的核心技术 661

22.2 在应用程序中使用Spring 662

22.2.1 MyEclipse 6.5对Spring的支持 662

22.2.2 下载和安装Spring 663

22.3 实例:开发一个Helloworld程序 664

22.3.1 编写HelloService接口 664

22.3.2 编写HelloServiceImpl类 664

22.3.3 装配HelloServiceImpl类 665

22.3.4 通过装配Bean的方式获得HelloService对象 665

22.4 小结 666

第23章 反向控制(Ioc)与装配JavaBean 667

23.1 反向控制(Ioc) 667

23.1.1 什么是依赖注入 667

23.1.2 传统解决方案的缺陷 668

23.1.3 用Ioc降低耦合度 669

23.2 手动装配JavaBean 670

23.2.1 装配Bean的方法 670

23.2.2 与Bean相关的接口 671

23.2.3 <bean>标签的常用属性 672

23.2.4 装配普通属性 673

23.2.5 装配集合属性 676

23.2.6 设置属性值为null 680

23.2.7 装配构造方法 680

23.3 自动装配JavaBean 683

23.4 分散配置 685

23.5 定制属性编辑器 687

23.6 小结 690

第24章 Spring中的数据库技术 691

24.1 获得DataSource 691

24.1.1 通过JNDI获得DataSource 691

24.1.2 从第三方的连接池获得DataSource 692

24.1.3 使用DriverManagerDataSource 693

24.2 在Spring中使用JDBC 693

24.2.1 装配JdbcTemplate类 693

24.2.2 向数据库中写数据 694

24.2.3 从数据库中读数据 696

24.2.4 调用存储过程 699

24.3 自增键 700

24.4 异常处理 701

24.5 在Spring中使用Hibernate 702

24.5.1 集成Spring和Hibernate 702

24.5.2 使用HibernateTemplate 703

24.6 小结 705

第25章 Spring的其他高级技术 706

25.1 Spring AOP 706

25.1.1 AOP概述 706

25.1.2 AOP术语简介 707

25.1.3 4种通知(Advice)的作用 708

25.1.4 通过Advisor指定切入点 714

25.1.5 使用控制流切入点 716

25.2 Spring 的事务管理 718

25.2.1 实例:使用程序控制事务 718

25.2.2 声明式事务 720

25.2.3 事务属性的种类 722

25.2.4 设置事务属性 724

25.2.5 设置特定方法的事务属性 725

25.3 实例:建立和访问RMI服务 727

25.4 实例:发送E-mail 729

25.5 调度任务 731

25.6 小结 732

第5篇 综合实例篇

第26章 Struts 2与Hibernate、Spring的整合 734

26.1 整合Struts 2和Hibernate框架 734

26.1.1 整合的思路 734

26.1.2 整合后的系统层次 735

26.1.3 实现数据访问层 735

26.1.4 实现业务逻辑层 737

26.1.5 Struts 2和Hibernate共享实体Bean 739

26.2 整合Spring框架 740

26.2.1 装配数据访问层 740

26.2.2 装配业务逻辑层 742

26.2.3 使用Struts 2的Spring插件 742

26.3 小结 743

第27章 网络硬盘 744

27.1 系统概述 744

27.1.1 系统功能简介 744

27.1.2 系统架构设计 746

27.2 数据库设计 746

27.3 实现持久对象层 748

27.3.1 实现用户实体Bean 749

27.3.2 实现目录实体Bean 750

27.3.3 实现文件实体Bean 751

27.3.4 映射MySQL存储过程 752

27.3.5 配置hibernate.cfg.xml 753

27.4 实现数据访问层 754

27.4.1 实现DAOSupport类 754

27.4.2 实现UserDAO接口和UserDAOImpl类 754

27.4.3 实现DirectoryDAO接口和DirectoryDAOImpl类 755

27.4.4 实现FileDAO接口和FileDAOImpl类 757

27.5 实现业务逻辑层 758

27.5.1 实现UserService接口和UserServiceImpl类 758

27.5.2 实现DirectoryService接口和DirectoryServiceImpl类 760

27.5.3 实现FileService接口和FileServiceImpl类 762

27.5.4 实现服务管理类 764

27.5.5 配置Spring 765

27.6 实现Web表现层 767

27.6.1 实现基础动作类(BaseAction) 768

27.6.2 实现用户登录页面和处理登录的Action类 769

27.6.3 实现注册登录页面和处理注册的Action类 771

27.6.4 实现网络硬盘主页面 771

27.6.5 建立目录 773

27.6.6 实现文件上传 774

27.6.7 实现文件和目录下载 775

27.6.8 使用拦截器控制页面访问权限 779

27.6.9 其他功能的实现 780

27.7 小结 780

第28章 论坛系统 782

28.1 系统功能简介 782

28.2 数据库设计 783

28.3 实现持久对象层 785

28.3.1 实现主题实体Bean 785

28.3.2 实现回复实体Bean 787

28.3.3 配置hibernate.cfg.xml 788

28.4 实现数据访问层 788

28.4.1 实现TopicDAO接口和TopicDAOImpl类 789

28.4.2 实现ReviewDAO接口和ReviewDAOImpl类 790

28.5 实现业务逻辑层 791

28.5.1 实现TopicService接口和TopicServiceImpl类 791

28.5.2 实现ReviewService接口和ReviewServiceImpl类 793

28.5.3 实现服务管理类 795

28.5.4 配置Spring 795

28.6 整合FCKEditor组件 796

28.6.1 安装FCKEditor 796

28.6.2 配置FCKEditor 797

28.6.3 修改FCKEditor自带的Servlet 800

28.6.4 产生FCKEditor的客户端脚本 800

28.7 实现Web表现层 801

28.7.1 浏览论坛的主题列表 801

28.7.2 发布新主题 804

28.7.3 浏览主题和回复内容 805

28.7.4 回复主题 806

28.8 小结 807
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: