疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibern
定 价:¥69.00
作 者:
李刚 编著
出版社:
电子工业出版社
丛编项:
标 签:
J2EE
购买这本书可以去
京东 (¥48.30)
当当网 (¥51.80)
ISBN:
9787121084409
出版时间:
2009-04-01
包装:
平装
开本:
大16开
页数:
614
字数:
内容简介
《疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发》是《基于J2EE的Ajax宝典》的第二版。《基于J2EE的Ajax宝典》面市近2年,作为Ajax领域最全面、实用的图书,一直深受读者的好评。全书主要分为三个部分。第一部分介绍了XHTML、CSS、JavaScript和DOM编程等内容。第二部分详细介绍了Prototype、jQuery、DWR、AjaxTags等四个最常用的Ajax框架的用法,并针对每个框架提供了一个实用案例。这两个部分是笔者在“疯狂Java实训营”的培训讲义,是《疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发》的重点部分。第三部分则提供了2个综合性案例:Blog系统和电子拍卖系统,让读者将前面所学真正应用到实际项目中。《疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发》绝大部分章节后都提供了相应的编程习题,供开发者巩固所学,将理论融入实际开发之用。关于这些编程习题的解题思路和参考答案可登录www.crazyit.org获取。《疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发》是疯狂Java体系丛书之一,前8章基本以XHTML、JavaScript和DOM编程为主,无须任何基础即可阅读;第9章以后的内容则需要掌握Spring、Hibernate等Java EE知识,建议先认真阅读疯狂Java体系的《轻量级Java EE企业应用实战》一书。
作者简介
李刚,从事近10年的Java EE应用开发。曾任LITEON公司的J2EE技术主管,负责该公司的企业信息平台的架构设计。曾任广州电信、广东龙泉科技等公司的技术培训导师。2007年3月26H的《电脑报》专访人物。现任东方标准广州中心软件教学总监,曾兼任广东技术师范学院计算机科学系的兼职副教授。培训的学生已在华为、立信、普信、网易、电信盈科、中企动力等公司就职。国内知名的高端rr技术作家,已出版《疯狂Java讲义》、《轻量级Java EE企业应用实战》、《Struts 2权威指南》、《Ruby On Rails敏捷开发最佳实践》、《Spring 2.0宝典》等著作。
图书目录
第1章 Ajax概述 11.1 重新思考Web应用 21.1.1 应用系统的发展史 21.1.2 传统Web应用的优势和缺点 41.2 重新设计Web应用 51.2.1 富Internet应用 51.2.2 异步发送请求,避免等待 71.2.3 使用Ajax 71.3 Ajax介绍 71.3.1 Ajax的工作方式 81.3.2 Ajax的核心:XMLHttpRequest 81.3.3 Ajax的编程脚本:JavaScript语言 91.3.4 HTML页面的DOM模型 91.3.5 数据交换和显示 101.4 Ajax的基本特征 101.4.1 异步发送请求 101.4.2 服务器响应是数据,而不是页面内容 111.4.3 浏览器中的是应用,不是简单视图 111.5 Ajax的替代技术 111.5.1 Sun的Java Web Start技术 111.5.2 Microsoft的ClickOnce技术 121.5.3 基于Flash的Flex 121.6 搭建Ajax开发环境 131.6.1 本书的Ajax开发环境 131.6.2 安装Tomcat服务器 131.6.3 配置Tomcat的服务端口 151.6.4 进入Tomcat控制台 151.6.5 部署Web应用 171.6.6 配置Tomcat的数据源 181.6.7 安装Ant 191.6.8 Eclipse的下载和安装 211.6.9 在线安装Eclipse插件 211.6.10 手动安装Eclipse插件 221.7 调试JavaScript脚本 231.8 本章小结 24第2章 Ajax初体验 252.1 Ajax带来的优势 26即使使用Ajax技术,客户端和服务器一样有网络通信延迟,尤其是当网络状况不好时,通信延迟将更严重,用户一样感受不到更新延迟吗? 272.2 开始传统的JSP聊天室 282.2.1 实现业务逻辑组件 282.2.2 实现控制器 312.2.3 实现视图 332.2.4 JSP聊天室的问题 342.3 Ajax聊天室 342.3.1 异步发送请求 35使用Ajax技术是不是会带来更大的工作量? 372.3.2 解决多余刷新的问题 372.3.3 解析服务器响应 392.3.4 何时发送请求 40客户端频繁发送请求,难道不会加重服务器负担? 412.3.5 Ajax聊天室的特点 442.4 Ajax编程的技术难点 442.5 传统Web应用与Ajax应用的对比 452.6 本章小结 46第3章 XHTML语言详解 473.1 XHTML简介 483.1.1 HTML的作用和历史 48在保存HTML 文件时,到底采用.htm扩展名还是采用.html扩展名呢?48我应该使用FrontPage学习HTML文档呢?还是使用Dreamweaver好? 493.1.2 HTML 4.01和XHTML 49如果我使用XHTML编写互联网页,会不会有浏览器不支持? 503.2 XHTML的基本语法 503.2.1 XHTML的基本结构和规则 503.2.2 XHTML和DTD 523.3 XHTML的常用标签 543.3.1 基本标签 543.3.2 文本格式化标签 55如果我希望HTML页面内的文本更美观,例如改变它们的颜色、背景等,那该用什么标签呢? 573.3.3 超级链接和锚点 573.3.4 列表相关标签 583.3.5 图像相关标签 593.3.6 表格相关标签 613.3.7 框架相关标签 643.4 XHTML的表单标签 653.4.1 表单标签 663.4.2 使用input元素 67前面的页面中包含5个单选框,为何前面3个只能选中一个,后面2个只能选中一个,但一共可以选择2个呢? 693.4.3 使用label定义标签 69在表单里直接定义普通文本不可以作为标签吗?专门使用元素定义标签有什么作用? 693.4.4 使用button定义按钮 703.4.5 列表框和下拉菜单 713.4.6 使用textarea定义文本域 723.5 XHTML头部和元信息 733.6 本章小结 74本章练习 74第4章 JavaScript语法详解 754.1 JavaScript简介 764.1.1 运行JavaScript 774.1.2 导入JavaScript文件 774.2 数据类型和变量 774.2.1 定义变量的方式 784.2.2 类型转换 784.2.3 变量 804.3 基本数据类型 824.3.1 数值类型 824.3.2 字符串类型 864.3.3 布尔类型 894.3.4 undefined和null 904.3.5 正则表达式 914.4 复合类型 934.4.1 对象 934.4.2 数组 934.4.3 函数 944.5 运算符 964.5.1 赋值运算符 964.5.2 算术运算符 974.5.3 位运算符 984.5.4 加强的赋值运算符 994.5.5 比较运算符 1004.5.6 逻辑运算符 1014.5.7 三目运算符 1024.5.8 逗号运算符 1034.5.9 void运算符 1034.5.10 typeof和instanceof运算符 1044.6 语句 1044.6.1 语句块 1054.6.2 空语句 1054.6.3 异常抛出语句 1054.6.4 异常捕捉语句 1064.6.5 with语句 1074.7 流程控制 1084.7.1 分支 1084.7.2 while循环 1104.7.3 do while循环 1114.7.4 for循环 1114.7.5 for in循环 1124.7.6 break和continue 1134.8 函数 1164.8.1 函数定义 1164.8.2 局部变量和局部函数 1174.8.3 匿名函数 1184.8.4 函数和类 1204.8.5 函数的实例属性和静态属性 1214.8.6 递归函数 1234.9 函数的参数处理 1244.9.1 基本类型和复合类型的参数传递 1254.9.2 空参数 1264.9.3 参数类型 1274.10 对象 1284.10.1 面向对象的概念 1294.10.2 对象和关联数组 1294.10.3 继承和prototype 1304.11 建对象 1354.11.1 使用关键字new创建对象 1354.11.2 使用Object直接创建对象 1354.11.3 使用JSON语法创建对象 1374.12 本章小结 140本章练习 140第5章 级联样式单详解 1415.1 样式单概述 1425.2 CSS的基本使用 1435.2.1 引入外部样式文件 1435.2.2 使用内部CSS样式 1445.2.3 使用内联样式 1465.3 使用CSS属性 1475.3.1 文字相关属性 1485.3.2 整体段落相关属性 1505.3.3 背景相关属性 1515.3.4 表格相关属性 1525.3.5 大小相关属性 1555.3.6 位置相关属性 1555.3.7 边框相关属性 1575.3.8 轮廓相关属性 1595.3.9 三个常用属性 1605.4 选择器定义 1615.4.1 属性选择器 1625.4.2 ID选择器 1635.4.3 class选择器 1645.4.4 包含选择器和子元素选择器 1655.4.5 超级链接相关选择器 1665.5 在脚本中修改显示样式 1665.5.1 随机改变页面的背景色 1675.5.2 卷帘效果 1675.5.3 动态增加立体效果 1695.6 本章小结 170第6章 DOM模型详解 1716.1 DOM模型概述 1726.2 DOM模型和XHTML文档 1736.2.1 XHTML元素之间的继承图 1736.2.2 XHTML元素之间常见的包含关系 1746.3 访问XHTML元素 1756.3.1 根据ID访问XHTML元素 175如何让每个XHTML元素都有唯一的id属性呢?以前我见到很多XHTML页面元素并没有id属性啊。 175程序中为了访问元素和元素的“内容”,为何一个用innerHTML属性,另一个用value属性? 1766.3.2 利用节点关系访问XHTML元素 1766.3.3 访问表单域控件 1786.3.4 访问列表框、下拉菜单的选项 1796.3.5 访问表格子元素 1806.4 修改XHTML元素 1826.5 新增XHTML元素 1836.5.1 创建或复制节点 1836.5.2 添加节点 1856.5.3 为列表框、下拉菜单增加选项 1856.5.4 动态添加表格内容 1876.6 删除XHTML元素 1886.6.1 删除节点 1886.6.2 删除列表框、下拉菜单的选项 1896.6.3 删除表格的行或单元格 1916.7 传统DHTML模型 1926.8 使用window对象 1946.8.1 访问历史 1966.8.2 浏览器对象 1976.8.3 访问页面URL 1976.8.4 客户机屏幕信息 1986.8.5 弹出新窗口 1996.8.6 确认对话框和输入对话框 1996.8.7 使用定时器 2006.9 使用document对象 2016.9.1 动态页面 2026.9.2 读写Cookie 2036.10 两个常用范例 2046.10.1 可编辑表格 2046.10.2 导航菜单 2066.11 DOM模型和XML文档 2106.11.1 使用DOM解析XML文档 2106.11.2 使用DOM解析器创建XML 2126.12 本章小结 214本章练习 214第7章 事件处理机制 2157.1 基本事件模型 2167.1.1 绑定XHTML元素属性 2167.1.2 绑定DOM对象的属性 2187.1.3 事件处理函数和关键字this 2197.1.4 使用返回值改变默认行为 2217.1.5 在代码中触发事件 222为什么在元素中元素的id属性值不能是submit呢? 2237.2 Ajax应用的MVC 2247.3 Internet Explorer的事件模型 2267.3.1 使用script for绑定 2277.3.2 使用attachEvent方法执行绑定 2277.3.3 访问事件对象 229此处介绍的是Internet Explorer中访问事件的方式,那么其他浏览器呢? 2327.3.4 事件冒泡 2327.3.5 重定向事件 2347.3.6 取消事件默认行为 2367.3.7 捕获鼠标事件 2377.4 DOM 2的事件模型 2397.4.1 绑定事件处理器 2397.4.2 访问事件对象 241DOM 2事件模型和Internet Explorer事件模型里访问事件对象的方式完全不同,如果我们需要写一个跨浏览器的程序,是不是只能将事件处理函数绑定到XHTML元素,并将event显式作为参数传入事件处理函数? 2417.4.3 事件传播 2437.4.4 转发事件 2477.4.5 取消事件的默认行为 2497.5 本章小结 250本章练习 250第8章 XMLHttpRequest对象详解 2518.1 XMLHttpRequest对象概述 2528.2 XMLHttpRequest的方法和属性 2528.2.1 XMLHttpRequest的方法 2528.2.2 XMLHttpRequest的属性 2568.3 发送请求 2588.3.1 发送简单请求 2598.3.2 发送GET请求 2618.3.3 发送POST请求 2638.3.4 发送请求时的编码问题 2648.3.5 发送XML请求 2688.4 处理服务器响应 2708.4.1 处理的时机 2708.4.2 使用文本响应 2718.4.3 使用XML响应 2718.4.4 使用DOM模型生成页面 2738.5 XMLHttpRequest对象的运行周期 2738.6 Ajax必须解决的问题 2748.6.1 跨浏览器问题 2748.6.2 安全性问题 2758.6.3 性能问题 2778.7 本章小结 280第9章 Prototype库详解 2819.1 Prototype的下载和安装 2829.1.1 什么是Prototype库 2829.1.2 下载Prototype库 2829.1.3 安装Prototype库 2839.1.4 使用Prototype对象 2839.2 Prototype的工具函数 2849.2.1 使用$()函数 2849.2.2 使用$$()函数 2869.2.3 使用$A()函数 2889.2.4 使用$F()函数 2899.2.5 使用$H()函数 2909.2.6 使用$R()函数 2919.2.7 使用Try.these()函数 2919.3 Prototype的JSON支持 2939.4 Prototype的自定义对象和类 2949.4.1 使用Element对象 2949.4.2 使用Element.Methods 2989.4.3 使用Enumerable 2989.4.4 使用ObjectRange 3029.4.5 使用Form.Element操作表单控件 3029.4.6 使用Form操作表单 3049.4.7 使用Hash对象 3059.4.8 使用Event 307element()和findElement()的关系到底是怎么回事呢? 3079.4.9 使用Template 3089.4.10 使用Class 3099.4.11 两个常用的监听器 3109.5 Prototype常用的扩展 3129.5.1 扩展Array 3129.5.2 扩展document 3139.5.3 扩展String 3149.5.4 扩展Function 3169.5.5 扩展Number 3189.6 Prototype的Ajax支持 3199.6.1 使用Ajax.Request类 3199.6.2 使用Form.request方法 3229.6.3 使用Ajax.Responders对象 3249.6.4 使用Ajax对象 3259.6.5 使用Ajax.Updater类 3259.6.6 使用Ajax.PeriodicalUpdater类 3289.7 本章小结 329第10章 基于Prototype库的应用:自动完成 33010.1 应用的基本分析和设计 33110.1.1 数据要求 33110.1.2 数据表结构 33110.2 Domain Object和持久层 33110.2.1 Domain Object 33210.2.2 实现DAO组件 33310.3 实现Service组件 33710.4 使用Servlet提供服务器响应 34110.4.1 根据前缀查询品牌 34110.4.2 根据品牌查询型号 34210.4.3 根据型号查询详细信息 34310.5 客户端HTML页面实现 34410.6 增加HTML页面的事件响应能力 34610.6.1 实现品牌输入框的事件处理器 34610.6.2 实现键盘事件的处理器 34710.6.3 根据品牌提示型号 35010.6.4 根据型号显示描述 35110.6.5 注册Ajax事件监听器 35210.7 本章小结 352第11章 jQuery库详解 35311.1 jQuery入门 35411.1.1 理解jQuery的设计 354上面的程序中target对象到底是什么?它怎么会拥有height、width、css这些方法? 35511.1.2 下载和安装jQuery 35511.1.3 让jQuery与其他JavaScript库共存 35611.2 获取jQuery对象 35611.2.1 jQuery核心函数 35611.2.2 以CSS选择器访问DOM元素 35711.2.3 选择器的附加限定词 35911.2.4 表单相关的选择器 36211.3 jQuery操作类数组的工具方法 36311.3.1 过滤相关方法 36411.3.2 仿DOM导航的相关方法 36511.3.3 链接方法 36711.4 jQuery支持的方法 36811.4.1 jQuery命名空间的方法 36811.4.2 数据存储的相关方法 37011.4.3 操作属性的相关方法 37011.4.4 操作CSS属性的相关方法 37111.4.5 操作元素内容的相关方法 37311.4.6 操作DOM节点的相关方法 37411.5 jQuery事件相关方法 37811.6 动画效果相关的方法 38011.7 Ajax相关方法 38311.7.1 两个工具方法 38311.7.2 使用load方法 38411.7.3 使用jQuery.ajax(options)方法 38511.7.4 使用get/post方法 38711.8 扩展jQuery和jQuery插件 38911.9 本章小结 390第12章 基于jQuery的应用:电子相册系统 39112.1 实现持久层 39212.1.1 实现持久化类 39212.1.2 配置SessionFactory 39412.2 实现DAO组件 39512.2.1 DAO接口定义 39512.2.2 完成DAO组件的实现类 39712.3 实现业务逻辑层 40212.3.1 实现业务逻辑组件 40212.3.2 配置业务逻辑组件 40512.4 实现客户端调用 40512.4.1 访问业务逻辑组件 40612.4.2 处理用户登录 40612.4.3 获得用户相片列表 40812.4.4 处理翻页 40912.4.5 处理文件上传 411当Servlet重定向到album.html页面后,如何弹出如图12.5所示对话框? 41312.4.6 页面加载时的处理 413HttpSession里的curImg属性是从哪里来的呢? 41512.5 本章小结 415本章练习 415第13章 DWR框架详解 41613.1 DWR的下载和安装 41713.1.1 什么是DWR 41713.1.2 下载和安装DWR 41813.2 使用DWR 42213.2.1 编写处理类 42213.2.2 配置DWR 42413.3 使用DWR的转换器 42513.3.1 基本转换器 42513.3.2 对象转换器 42613.3.3 数组转换器 42813.3.4 集合类型转换器 42813.4 方法声明定义 42913.5 使用DWR的创建器 43013.5.1 创建器的配置 43013.5.2 使用new创建器 43213.5.3 使用none创建器 433既然none创建器不创建任何对象,哪有对象暴露给JavaScript代码”? 43313.5.4 使用script创建器 43313.6 调用服务器端的方法 43413.6.1 调用服务器端方法的通用配置 43413.6.2 使用简单回调 43513.6.3 使用JSON格式的回调 44013.6.4 将客户端参数传递到回调函数 44213.7 使用engine.js 44313.7.1 设置调用顺序 44313.7.2 设置全局超时时长 44313.7.3 设置全局Hook函数 44413.7.4 设置全局处理函数 44413.7.5 设置常用的全局选项 44413.7.6 批处理 44513.8 使用util.js 44513.8.1 使用$() 44613.8.2 处理列表 44613.8.3 处理表格 45013.8.4 访问HTML元素值 454getValues()可以一次获取多个HTML元素的值,那返回的值如何保存呢? 45513.8.5 几个工具函数 45613.9 整合第三方Java EE框架 45813.9.1 访问Servlet API 458老师你以前教我们:谁调用方法,谁负责为形参赋值。现在我们调用addSession()方法时没有为第二个参数赋值,那第二个参数从哪里获得参数值呢? 46013.9.2 整合Spring 46113.10 使用DWR注释 46313.10.1 初始配置 464如果我有很多类需要列出,那岂不是很臃肿,classes属性值是否支持通配符?如果想列出内部类应该怎么写? 46413.10.2 标注创建器和转换器 46413.11 异常处理 46513.12 反向Ajax 46713.12.1 配置使用反向Ajax 468反向Ajax技术不是依赖HTTP协议的吗?它怎么可以违反请求-响应架构的规律呢? 46813.12.2 在Java方法中操作Web页 46913.12.3 在客户端调用反向Ajax方法 47113.13 本章小结 472第14章 基于DWR的应用:即时消息系统 47314.1 实现Hibernate持久层 47414.1.1 Hibernate持久层的POJO 47414.1.2 将POJO映射成持久化对象 47614.2 实现DAO组件 47714.2.1 扩展HibernateDaoSupport来实现分页 478为什么不扩展Hibernate Template类来实现分页?扩展HibernateDaoSup-port是不是会引起一些混乱? 47814.2.2 实现DAO组件 48014.3 实现业务逻辑组件 48214.3.1 业务逻辑组件的接口 48314.3.2 业务逻辑组件的实现类 48414.3.3 部署业务逻辑组件 48714.3.4 基于AOP的权限控制 48814.4 调用业务逻辑组件 49014.4.1 将Spring容器中的Bean创建成JavaScript对象 49014.4.2 处理用户登录 491既然已经在JavaScript代码里进行了权限控制,为何还要在业务逻辑层控制呢? 49214.4.3 处理用户注册 49314.4.4 处理消息发布 49414.4.5 获取消息列表 49514.4.6 处理分页 49614.4.7 查看消息内容 49714.4.8 页面加载函数 49814.5 本章小结 498本章练习 498第15章 AjaxTags框架详解 49915.1 AjaxTags的下载和安装 50015.1.1 什么是AjaxTags 50015.1.2 下载和安装AjaxTags 50015.2 AjaxTags入门 50115.2.1 编写处理类 50215.2.2 使用标签 50315.3 处理类的几种形式 50515.3.1 使用普通Servlet生成响应 50515.3.2 使用AjaxXmlBuilder辅助类 50715.3.3 使用BaseAjaxServlet生成响应 50915.3.4 使用非Java响应 51015.4 使用AjaxTags标签 51115.4.1 使用自动完成标签 51115.4.2 使用area标签 51515.4.3 使用anchors标签 51615.4.4 使用callout标签 51715.4.5 使用htmlContent标签 51815.4.6 使用portlet标签 52015.4.7 使用select标签 52215.4.8 创建Tab页 52315.4.9 使用displayTag标签 52415.4.10 使用tree标签创建树 52615.4.11 使用updateField标签 52815.5 关于AjaxTags的选择 53015.5.1 AjaxTags的优势和使用场景 53015.5.2 AjaxTags的缺点 53115.6 本章小结 531第16章 Ajax实例:简易Blog系统 53216.1 实现Hibernate持久层 53316.1.1 设计Hibernate的持久化类 53316.1.2 完成映射文件 53516.1.3 数据表的结构 53716.2 实现DAO组件 53816.2.1 DAO接口定义 53816.2.2 实现DAO组件 53916.2.3 配置DAO组件 54216.3 实现业务逻辑组件 54316.3.1 业务逻辑组件的接口 54316.3.2 业务逻辑组件的实现类 54416.3.3 配置业务逻辑组件 54716.4 整合DWR框架 54816.4.1 配置web.xml文件 54816.4.2 将Spring容器中的Bean转化成JavaScript对象 54916.5 在客户端调用JavaScript对象 55016.5.1 获取Blog文章列表 55016.5.2 控制Blog文章列表的翻页 55116.5.3 页面加载时的动作 55116.5.4 查看评论 55216.5.5 控制回复的翻页 55416.5.6 添加回复 55416.5.7 查看Blog文章内容 55616.5.8 添加新的Blog文章 55616.6 本章小结 558本章练习 558第17章 电子拍卖系统 55917.1 总体说明和概要设计 56017.1.1 系统的总体架构设计 56017.1.2 数据库设计 56117.2 实现Hibernate持久化类 56217.2.1 设计Domain Object 56217.2.2 实现Domain Object 56317.3 DAO层实现 56817.3.1 DAO的基础配置 56817.3.2 实现DAO组件 56917.3.3 部署DAO组件 57417.4 业务逻辑层实现 57517.4.1 设计业务逻辑组件 57517.4.2 业务逻辑组件的异常处理 57617.4.3 发送竞价通知邮件 57817.4.4 实现业务逻辑层组件 57817.4.5 业务层的权限控制 58717.4.6 业务层的任务调度 58817.4.7 事务管理 58917.5 暴露业务逻辑方法 59017.5.1 初始化Spring容器 59017.5.2 配置DWR的核心Servlet 59017.5.3 暴露业务逻辑方法 59117.6 调用业务逻辑方法响应用户请求 59217.6.1 页面加载时的函数 59217.6.2 处理返回首页的请求 59317.6.3 浏览所有流拍物品 59317.6.4 处理用户登录 59617.6.5 管理物品 60017.6.6 管理物品种类 60317.6.7 查看竞得物品 60617.6.8 查看自己的竞价记录 60817.6.9 浏览拍卖物品 60917.6.10 参与竞价 61117.7 本章小结 614本章练习 614