Java Web高级编程图书
人气:94

Java Web高级编程

Java成为世界上编程语言之一是有其优势的。熟悉Java SE的程序员可以轻松地进入到Java EE开发中,构建出安全、和具有扩展性的企业级应用程序。

内容简介

提升Java编码技能

Java成为世界上编程语言之一是有其优势的。熟悉Java SE的程序员可以轻松地进入到Java EE开发中,构建出安全、和具有扩展性的企业级应用程序。编写《Java Web高级编程——涵盖WebSockets、Spring Framework、JPA Hibernate和Spring Security》一书的目的正是如此。

本书面向的读者是已经了解Java SE、SQL和基本的HTML,准备将他们的Java编码技能提升到更高水平的程序员。软件开发者可以按顺序阅读本书或者在遇到特定的编程问题时将某个章节用作参考。

主要内容

为企业级Web应用的Java编码提供了自我指导、自我学习的方法

帮助Web应用架构师在开发团队的项目中或者开发过程中应用新的概念

对Java EE平台7和其中的许多技术提供了详细的介绍

讲解了Servlet、JSP、WebSockets、Spring Framework、AMQP、JPA和O/RM、Spring Data、全文搜索、Apache Lucene和Hibernate Search、Spring Security和OAuth

重点介绍Java SE 8中新增加的常用功能,如lambda表达式和新的JSR 310 Java 8 Date and Time API等

作者简介

Nicholas S. Williams是Java和相关技术领域的一位著名专家。在2010年,他被授予中部田纳西州年度软件工程师的称号。Nick大量参与了开源社区工作,为Apache Log4J、Apache Tomcat、Jackon Mapper、Spring Framework和Spring Security等项目贡献了bug修复、新特性和文档。

目录

目 录

第Ⅰ部分 创建企业级应用程序

第1章 介绍Java EE平台 3

1.1 Java平台时间线 3

1.1.1 起始 3

1.1.2 企业级Java的诞生 4

1.1.3 Java SE和Java EE共同发展 5

1.1.4 了解近期的平台特性 7

1.1.5 持续发展 11

1.2 了解基本的Web应用程序结构 11

1.2.1 Servlet、过滤器、监听器和JSP 11

1.2.2 目录结构和WAR文件 12

1.2.3 部署描述符 13

1.2.4 类加载器架构 14

1.2.5 企业级应用程序归档文件 14

1.3 小结 15

第2章 使用Web容器 17

2.1 选择Web容器 17

2.1.1 Apache Tomcat 18

2.1.2 GlassFish 19

2.1.3 JBoss和WildFly 19

2.1.4 其他容器和应用服务器 20

2.1.5 本书使用Tomcat的原因 20

2.2 在个人计算机中安装Tomcat 21

2.2.1 将Tomcat安装为Windows服务 21

2.2.2 将Tomcat安装为命令行应用程序 21

2.2.3 配置自定义的JSP编译器 23

2.3 在Tomcat中部署和卸载应用程序 24

2.3.1 手动部署和卸载 24

2.3.2 使用Tomcat管理器 25

2.4 通过IDE调试Tomcat 26

2.4.1 使用IntelliJ IDEA 27

2.4.2 使用Eclipse 30

2.5 小结 34

第3章 创建及时个Servlet 35

3.1 创建Servlet类 36

3.1.1 选择要继承的Servlet类 36

3.1.2 使用初始化方法和销毁方法 38

3.2 配置可部署的Servlet 39

3.2.1 向描述符中添加Servlet 39

3.2.2 将Servlet映射到URL 40

3.2.3 运行和调试Servlet 42

3.3 了解doGet、doPost和其他方法 44

3.3.1 在service方法执行的过程中 44

3.3.2 使用HttpServletRequest 44

3.3.3 使用HttpServletResponse 47

3.4 使用参数和接受表单提交 49

3.5 使用初始化参数配置应用程序 53

3.5.1 使用上下文初始化参数 53

3.5.2 使用Servlet初始化参数 54

3.6 通过表单上传文件 56

3.6.1 介绍客户支持项目 56

3.6.2 配置Servlet支持文件上传 56

3.6.3 接受文件上传 59

3.7 编写多线程安全的应用程序 60

3.7.1 理解请求、线程和方法执行 60

3.7.2 保护共享资源 61

3.8 小结 62

第4章 使用JSP显示页面内容 63

4.1 使用

替代output.println("

") 64

4.1.1 使用JSP的原因 65

4.1.2 JSP在运行时的处理 66

4.2 创建及时个JSP 67

4.2.1 了解文件结构 67

4.2.2 指令、声明、脚本和表达式 69

4.2.3 注释代码 70

4.2.4 在JSP中导入类 71

4.2.5 使用指令 72

4.2.6 使用标签 75

4.3 在JSP中使用Java(以及不鼓励使用Java的原因) 76

4.3.1 使用JSP中隐式的变量 76

4.3.2 不应该在JSP中使用Java的原因 82

4.4 结合使用Servlet和JSP 82

4.4.1 配置部署描述符中的JSP属性 82

4.4.2 将Servlet中的请求转发给JSP 85

4.5 关于JSP文档(JSPX)的注意事项 89

4.6 小结 91

第5章 使用会话维持状态 93

5.1 需要会话的原因 93

5.1.1 维持状态 94

5.1.2 记住用户 94

5.1.3 启动应用程序工作流 94

5.2 使用会话cookie和URL重写 95

5.2.1 了解会话cookie 96

5.2.2 URL中的会话ID 98

5.2.3 会话的漏洞 100

5.3 在会话中存储数据 102

5.3.1 在部署描述符中配置会话 103

5.3.2 存储和获取数据 105

5.3.3 删除数据 109

5.3.4 在会话中存储更复杂的数据 111

5.4 使用会话 114

5.4.1 为客户支持应用程序添加登录功能 114

5.4.2 使用监听器检测会话的变化 118

5.4.3 维护活跃会话列表 120

5.5 将使用会话的应用程序群集化 124

5.5.1 在群集中使用会话ID 124

5.5.2 了解会话复制和故障恢复 126

5.6 小结 127

第6章 在JSP中使用表达式语言 129

6.1 了解表达式语言 129

6.1.1 表达式语言的用途 130

6.1.2 了解基本语法 130

6.1.3 添加EL表达式 132

6.2 使用EL语法 133

6.2.1 保留关键字 133

6.2.2 操作符优先级 134

6.2.3 对象属性和方法 139

6.2.4 EL函数 140

6.2.5 静态字段和方法访问 141

6.2.6 枚举 142

6.2.7 lambda表达式 142

6.2.8 集合 143

6.3 在EL表达式中使用作用域变量 144

6.3.1 使用隐式的EL作用域 145

6.3.2 使用隐式的EL变量 148

6.4 使用流API访问集合 151

6.4.1 了解中间操作 151

6.4.2 使用终结操作 153

6.4.3 使用流API 154

6.5 使用表达式语言替换Java代码 155

6.6 小结 157

第7章 使用Java标准标签库 159

7.1 JSP标签和JSTL简介 159

7.2 使用核心标签库(C命名空间) 163

7.2.1 163

7.2.2 164

7.2.3 165

7.2.4 、和166

7.2.5 167

7.2.6 168

7.2.7 168

7.2.8 169

7.2.9 和170

7.2.10 使用核心库标签 170

7.3 使用国际化和格式化标签库(FMT命名空间) 173

7.3.1 国际化和本地化组件 173

7.3.2 175

7.3.3 176

7.3.4 和176

7.3.5 177

7.3.6 和177

7.3.7 和178

7.3.8 和179

7.3.9 使用i18n和格式化库标签 180

7.4 使用数据库访问标签库(SQL命名空间) 182

7.5 使用XML处理标签库(X命名空间) 184

7.6 使用JSP标签替换Java代码 184

7.7 小结 186

第8章 编写自定义标签和函数库 189

8.1 了解TLD、标签文件和标签处理器 189

8.1.1 读取Java标准标签库TLD 190

8.1.2 比较JSP指令和标签文件指令 196

8.2 创建标签文件用作HTML模板 198

8.3 创建日期格式化标签处理器 199

8.4 创建EL函数简写字符串 203

8.5 使用自定义JSP标签替换Java代码 204

8.6 小结 210

第9章 使用过滤器改进应用程序 211

9.1 了解过滤器的目的 211

9.1.1 日志过滤器 212

9.1.2 验证过滤器 212

9.1.3 压缩和加密过滤器 212

9.1.4 错误处理过滤器 212

9.2 创建、声明和映射过滤器 213

9.2.1 了解过滤器链 213

9.2.2 映射到URL模式和Servlet名称 213

9.2.3 映射到不同的请求派发器类型 214

9.2.4 使用部署描述符 214

9.2.5 使用注解 215

9.2.6 使用编程式配置 215

9.3 过滤器排序 216

9.3.1 URL模式映射和Servlet名称映射 217

9.3.2 演示过滤器顺序 218

9.3.3 使用过滤器处理异步请求 220

9.4 调查过滤器的实际用例 224

9.4.1 添加简单的日志过滤器 225

9.4.2 使用过滤器压缩响应内容 226

9.5 使用过滤器简化认证 230

9.6 小结 231

第10章 在应用程序中使用WebSocket进行交互 233

10.1 演变:从AJAX到WEBSOCKET 234

10.1.1 问题:从服务器获得新数据到浏览器 234

10.1.2 解决方案1:频繁轮询 235

10.1.3 解决方案2:长轮询 236

10.1.4 解决方案3:分块编码 237

10.1.5 解决方案4:Applet和Adobe Flash 238

10.1.6 WebSocket:一种无人知道但已经存在的解决方案 239

10.2 了解WebSocket API 242

10.2.1 HTML5(JavaScript)客户端API 243

10.2.2 Java WebSocket API 245

10.3 使用WebSocket创建多人游戏 247

10.3.1 实现基本的三连棋游戏策略 247

10.3.2 创建服务器终端 248

10.3.3 编写JavaScript游戏控制台 252

10.3.4 WebSocket三连棋游戏试玩 256

10.4 在群集中使用WebSocket进行通信 257

10.4.1 使用两个Servlet实例模拟简单的群集 257

10.4.2 发送和接收二进制消息 259

10.4.3 测试模拟群集应用程序 261

10.5 在客户支持应用程序中添加"支持与客户聊天"功能 262

10.5.1 使用编码器和解码器转换消息 262

10.5.2 创建聊天服务器终端 264

10.5.3 编写JavaScript聊天应用程序 267

10.6 小结 269

第11章 使用日志监控应用程序 271

11.1 了解日志的概念 272

11.1.1 记录日志的原因 272

11.1.2 在日志中记录的内容 273

11.1.3 日志的写入方式 274

11.2 使用日志级别和分类 276

11.2.1 使用不同日志级别的原因 276

11.2.2 定义的日志级别 276

11.2.3 日志分类的工作方式 277

11.2.4 筛选的工作方式 277

11.3 选择日志框架 277

11.3.1 API和实现 278

11.3.2 性能 278

11.3.3 Apache Commons Logging和SLF4J 279

11.3.4 Log4j 2简介 280

11.4 在应用程序中集成日志 283

11.4.1 创建Log4j 2配置文件 284

11.4.2 在Web过滤器中使用鱼标签 287

11.4.3 在Java代码中编写日志语句 288

11.4.4 在JSP中使用日志标签库 290

11.4.5 客户支持应用程序中的日志 290

11.5 小结 291

第Ⅱ部分 添加Spring Framework

第12章 介绍Spring Framework 295

12.1 Spring Framework简介 296

12.1.1 反转控制和依赖注入 296

12.1.2 面向切面编程 297

12.1.3 数据访问和事务管理 297

12.1.4 应用程序消息 297

12.1.5 Web应用程序的模型-视图-控制器模式 298

12.2 使用Spring Framework的原因 298

12.2.1 逻辑代码分组 298

12.2.2 使用同一代码库的多个用户界面 298

12.3 了解应用上下文 299

12.4 启动Spring Framework 300

12.4.1 使用部署描述符启动Spring 301

12.4.2 在初始化器中使用编程的方式启动Spring 303

12.5 配置Spring Framework 306

12.5.1 创建XML配置 308

12.5.2 创建混合配置 310

12.5.3 使用@Configuration配置Spring 314

12.6 使用bean definition profile 318

12.6.1 了解profile的工作原理 319

12.6.2 考虑反模式和安全问题 321

12.7 小结 322

第13章 使用控制器替代Servlet 323

13.1 了解@RequestMapping 323

13.1.1 使用@RequestMapping特性

缩小请求匹配的范围 324

13.1.2 指定控制器方法参数 328

13.1.3 为控制器方法选择有效的返回类型 335

13.2 使用Spring Framework的模型和视图模式 337

13.2.1 使用显式的视图和视图名称 338

13.2.2 使用含有模型特性的隐式视图 340

13.2.3 返回响应实体 341

13.3 使用表单对象简化开发 346

13.3.1 在模型中添加表单对象 347

13.3.2 使用Spring Framework标签 347

13.3.3 获得被提交的表单数据 349

13.4 更新客户支持应用程序 350

13.4.1 启用Multipart支持 350

13.4.2 将Servlet转换成Spring MVC控制器 351

13.4.3 创建自定义下载视图 352

13.5 小结 353

第14章 使用服务和仓库支持控制器 355

14.1 了解模型-视图-控制器模式与控制器-服务-仓库模式 355

14.1.1 识别程序逻辑的不同类型 356

14.1.2 使用仓库提供持久化逻辑 357

14.1.3 使用服务提供业务逻辑 357

14.1.4 使用控制器提供用户界面逻辑 358

14.2 使用根应用上下文替代Web应用上下文 359

14.2.1 在多用户界面中重用根应用上下文 359

14.2.2 将业务逻辑从控制器移动到服务 360

14.2.3 使用仓库存储数据 364

14.3 使用异步和计划执行改进服务 368

14.3.1 了解执行器和调度器 369

14.3.2 配置调度器和异步支持 369

14.3.3 创建和使用@Async方法 371

14.3.4 创建和使用@Scheduled方法 372

14.4 使用WebSocket实现逻辑层分离 373

14.4.1 在Spring应用上下文中添加由容器管理的对象 373

14.4.2 使用Spring WebSocket配置器 375

14.4.3 记住:WebSocket只是业务逻辑的另一个界面 376

14.5 小结 380

第15章 使用Spring Framework i18n国际化应用程序 381

15.1 使用Spring Framework i18n的原因 381

15.1.1 使国际化变得更容易 382

15.1.2 直接本地化错误消息 382

15.2 使用基本的国际化和本地化API 382

15.2.1 了解资源包和消息格式 383

15.2.2 使用消息源进行挽救 385

15.2.3 使用消息源国际化JSP 386

15.3 在Spring Framework中配置国际化 387

15.3.1 创建消息源 387

<

网友评论(不代表本站观点)

来自撕哑い**的评论:

还是很不错的

2016-10-26 10:21:57
来自做个好**的评论:

技术点覆盖很全面

2016-11-01 22:28:09
来自牛爱黎**的评论:

很好

2016-11-05 19:44:40
来自无昵称**的评论:

快递速度太慢了...周末还放假不成...

2016-11-08 15:36:15
来自断乱丶**的评论:

挺好的。

2016-11-09 01:07:43
来自leadeli**的评论:

还没看,不好评价,貌似网评不错

2016-11-09 10:29:58
来自纬谦**的评论:

很好

2016-11-14 09:37:20
来自gzl2h**的评论:

ok

2016-11-23 23:20:54
来自zhizi5z**的评论:

基础

2016-12-02 08:25:27
来自无昵称**的评论:

很好

2016-12-07 06:47:48
来自morntid**的评论:

历经艰难险阻,前后两次下定,两本书终于收到。当当需要改进物流,其中的故事你们是知道的。书是好书,只是书的表面有些脏,不过不影响阅读。我是评书呢?还是评当当的服务呢?书是五星,当当服务还需改进,至于为什么,请看我的订单记录。

2016-12-09 17:22:50
来自无昵称**的评论:

覆盖面比较广,不错

2016-12-11 22:36:32
来自匿名用**的评论:

程序员需要不停学习,拓展知识

2017-04-28 23:28:16
来自厄***0(**的评论:

非常不错的书。

2017-07-06 10:33:57
来自星***(**的评论:

一如既往的满意

2017-07-28 10:42:41
来自陈登朝1**的评论:

很差的一次购买,书没有其他包装,拿到的时候很皱了,

2017-08-13 17:00:21
来自无昵称**的评论:

书的味道有点重,可恶的是物流竟然不送货上门,连个电话都没有,如果不是看到支付宝的提醒,都不知道东西到了

2017-08-29 10:11:48
来自匿名用**的评论:

套个袋子就用中通了,来的时候袋子都破的不像样子了,书都这熊样了!厉害了当当,不比不知道,以后我是某东的脑残粉!

2017-07-31 13:02:55
来自无昵称**的评论:

一般 实例代码不是很全面 没有一定基础 不一定能看明白

2016-03-05 13:29:20
来自名***人**的评论:

这纸质也太差了吧,感觉和淘宝买的盗版书质量一个样,关键还卖的死贵!质量太差!以后再也不当当买书了

2017-03-04 14:33:19
来自无昵称**的评论:

很好的书籍,基础知识和高级技术都包含了!不错!

2015-09-12 17:54:34
来自国学计**的评论:

本书主要spring系列的框架,适合有经验的人看看

2016-04-09 20:09:17
来自漫步风**的评论:

作者循序渐进,鱼和渔都有。有些基础的人能够感觉一些枝结打通。

2017-10-05 16:21:33
来自无昵称**的评论:

对高级初学没什么用,全部在介绍spring框架,并没有SSH

2016-06-23 10:35:51
来自闲庭赏**的评论:

书翻开有一股味道,感觉没有之前买的书的纸好,书内容比较新,刚到还没看

2016-08-13 16:17:21
来自无昵称**的评论:

书有点明显的折痕 封面有点胶水 不过不影响阅读 总体来说还不错

2016-07-09 17:17:53
来自ttblove**的评论:

对于框架spring讲的很详细,挺推荐的,而且15年的书,比市面上大多框架书技术要实用些,很多书只讲struts2为重点,可是现在已成淘汰趋势

2016-08-21 01:49:05
来自洗刷刷**的评论:

买了wrox很多书了,一直很喜欢内容的编排,能让自己快速学到想要了解的内容,老外写的东西详细而不浮躁,这本java web高级编程,翻译的不错,纸张很好,推荐一下

2015-08-04 17:30:55
登录后即可发表评论

免责声明

更多相关图书
在线咨询