具体描述
本书首先从一个简单的 Web 应用开始,让读者学会如何使用 IDEA、Maven、Git 等开发工具搭建 Java Web 应用;接着通过一个简单的应用场景,为该 Web 应用添加若干业务功能,从需求分析与系统设计开始,带领读者动手完成该 Web 应用,完善相关细节,并对已有代码进行优化;然后基于传统 Servlet 框架搭建一款轻量级 Java Web 框架,一切都是从零开始,逐个实现类加载器、Bean 容器、IoC 框架、MVC 框架,所涉及的代码也是整个框架的核心基础。为了使框架具备 AOP 特性,从代理技术讲到 AOP 技术,从 ThreadLocal 技术讲到事务控制技术。最后对框架进行优化与扩展,通过对现有框架的优化,使其可以提供更加完备的功能,并以扩展 Web 服务插件与安全控制插件为例,教会读者如何设计一款可扩展的Web应用框架。
作者简介
黄勇,从事近十年的 JavaEE 应用开发工作,现任阿里巴巴公司系统架构师。对分布式服务架构与大数据技术有深入研究,具有丰富的 B/S 架构开发经验与项目实战经验,擅长敏捷开发模式。国内开源软件推动者之一,活跃于“开源中国”社区网站,Smart Framework 开源框架创始人。热爱技术交流,乐于分享自己的工作经验。
目录信息
正所谓“工欲善其事,必先利其器”,在正式开始设计并开发我们的轻量级Java Web框架之前,有必要首先掌握以下技能:
使用IDEA搭建并开发Java项目;
使用Maven自动化构建Java项目;
使用Git管理项目源代码。
1.1 使用IDEA创建Maven项目 3
1.1.1 创建IDEA项目 3
1.1.2 调整Maven配置 3
1.2 搭建Web项目框架 5
1.2.1 转为Java Web项目 5
1.2.2 添加Java Web的Maven依赖 6
1.3 编写一个简单的Web应用 10
1.3.1 编写 Servlet类 10
1.3.2 编写JSP页面 11
1.4 让Web应用跑起来 12
1.4.1 在IDEA中配置Tomcat 12
1.4.2 使用Tomcat的Maven插件 13
1.4.3 以Debug方式运行程序 13
1.5 将代码放入Git仓库中 14
1.5.1 编写.gitignore文件 14
1.5.2 提交本地 Git 仓库 15
1.5.3 推送远程Git仓库 15
1.5.4 总结 16
第2章 为Web应用添加业务功能 17
我们将在这个应用的基础上增加一些业务功能,您将学会更多有关项目实战的技能,具体包括:
如何进行需求分析;
如何进行系统设计;
如何编写应用程序。
2.1 需求分析与系统设计 19
2.1.1 需求分析 19
2.1.2 系统设计 19
2.2 动手开发Web应用 21
2.2.1 创建数据库 22
2.2.2 准备开发环境 22
2.2.3 编写模型层 23
2.2.4 编写控制器层 25
2.2.5 编写服务层 27
2.2.6 编写单元测试 28
2.2.7 编写视图层 31
2.3 细节完善与代码优化 31
2.3.1 完善服务层 32
2.3.2 完善控制器层 59
2.3.3 完善视图层 60
2.4 总结 65
第3章 搭建轻量级Java Web框架 66
我们需要这样的框架,它足够轻量级、足够灵巧,不妨给它取一个优雅的名字——Smart Framework,本章我们就一起来实现这个框架。
您将通过本章的学习,掌握如下技能:
如何快速搭建开发框架;
如何加载并读取配置文件;
如何实现一个简单的IOC容器;
如何加载指定的类;
如何初始化框架。
3.1 确定目标 68
3.2 搭建开发环境 70
3.2.1 创建框架项目 70
3.2.2 创建示例项目 73
3.3 定义框架配置项 74
3.4 加载配置项 75
3.5 开发一个类加载器 78
3.6 实现Bean容器 87
3.7 实现依赖注入功能 90
3.8 加载Controller 93
3.9 初始化框架 97
3.10 请求转发器 98
3.11 总结 109
第4章 使框架具备AOP特性 110
在本章中,读者将学到大量有用的技术,具体包括:
如何理解并使用代理技术;
如何使用Spring提供的AOP技术;
如何使用动态代理技术实现AOP框架;
如何理解并使用ThreadLocal技术;
如何理解数据库事务管理机制;
如何使用AOP框架实现事务控制。
4.1 代理技术简介 112
4.1.1 什么是代理 112
4.1.2 JDK动态代理 114
4.1.3 CGlib动态代理 116
4.2 AOP技术简介 118
4.2.1 什么是AOP 118
4.2.2 写死代码 119
4.2.3 静态代理 120
4.2.4 JDK动态代理 121
4.2.5 CGLib动态代理 122
4.2.6 Spring AOP 124
4.2.7 Spring + AspectJ 136
4.3 开发AOP框架 142
4.3.1 定义切面注解 142
4.3.2 搭建代理框架 143
4.3.3 加载AOP框架 150
4.4 ThreadLocal简介 158
4.4.1 什么是ThreadLocal 158
4.4.2 自己实现ThreadLocal 161
4.4.3 ThreadLocal使用案例 163
4.5 事务管理简介 172
4.5.1 什么是事务 172
4.5.2 事务所面临的问题 173
4.5.3 Spring的事务传播行为 175
4.6 实现事务控制特性 178
4.6.1 定义事务注解 178
4.6.2 提供事务相关操作 181
4.6.3 编写事务代理切面类 182
4.6.4 在框架中添加事务代理机制 184
4.7 总结 185
第5章 框架优化与功能扩展 186
本章将对现有框架进行优化,并提供一些扩展功能。通过本章的学习,读者可以了解到:
如何优化Action参数;
如何实现文件上传功能;
如何与Servlet API完全解耦;
如何实现安全控制框架;
如何实现Web服务框架。
5.1 优化Action参数 188
5.1.1 明确Action参数优化目标 188
5.1.2 动手优化Action参数使用方式 188
5.2 提供文件上传特性 191
5.2.1 确定文件上传使用场景 191
5.2.2 实现文件上传功能 194
5.3 与Servlet API解耦 214
5.3.1 为何需要与Servlet API解耦 214
5.3.2 与Servlet API解耦的实现过程 215
5.4 安全控制框架——Shiro 219
5.4.1 什么是Shiro 219
5.4.2 Hello Shiro 220
5.4.3 在Web开发中使用Shiro 224
5.5 提供安全控制特性 230
5.5.1 为什么需要安全控制 230
5.5.2 如何使用安全控制框架 231
5.5.3 如何实现安全控制框架 242
5.6 Web服务框架——CXF 261
5.6.1 什么是CXF 261
5.6.2 使用CXF开发SOAP服务 262
5.6.3 基于SOAP的安全控制 278
5.6.4 使用CXF开发REST服务 291
5.7 提供Web服务特性 308
5.8 总结 329
附录A Maven快速入门 330
附录B 将构件发布到Maven中央仓库 342
· · · · · · (收起)
读后感
书里面代码很多。每页几乎都是大量代码。作者应该是把代码直接复制上去的。看过作者的博客,水平很高。可是书里面全贴代码,这。。。。。除去代码 ,书应该不到100页。。。。。。。。。。。。。。。。
力荐此书,至少是前4章,作者有一个非常厉害的能力,能用简单的语言把复杂的技术娓娓道来, 感觉是个低配版的Bruce Eckel。本人想深入java,在图书馆翻到了此书,不得不说运气非常好。 此书从介绍一个简单web项目,让读者迅速上手,然后逐渐开始优化,例如使用threadlocal隐藏j...
Spring框架不是凭空出现的。它为啥要出现?它满足了什么样的业务需求?整个演化过程大概啥样的? 本书给出了自己的见解; 很多人对Spring使用常见余各种配置,各种注解的使用。但是不清楚其中涉及了那些基础知识。对此本书在AOP环节也给出了相关解释; 我个人的理解是: 遇到问...
我是奔着“架构”这两个字看本书的,但本书跟架构一点关系没有。 跟着本书你也不会从零就能写Java Web框架,初学者看了只会迷茫不会有太多帮助。 本书很基础很基础,内容零散,东一锤子西一榔头,抓几个概念(还没讲清楚)上几行代码就凑成了本书,不成体系。 希望作者不要再写这...
书里面代码很多。每页几乎都是大量代码。作者应该是把代码直接复制上去的。看过作者的博客,水平很高。可是书里面全贴代码,这。。。。。除去代码 ,书应该不到100页。。。。。。。。。。。。。。。。
用户评价
这本书在案例的选取和呈现上,简直可以称得上是教科书级别的示范。它不是简单地罗列出一堆“Hello World”级别的Demo,而是围绕一个相对完整且贴近实际业务场景的“迷你项目”展开,所有的理论知识和设计决策都是围绕着这个核心项目不断迭代和完善的。这种“项目驱动”的讲解方式,极大地增强了知识的实用性和连贯性。每当引入一个新模块的实现时,作者都会清晰地展示出这个模块在整个系统中的位置以及与其他模块的交互方式,而不是孤立地讲解某一个类或接口。这种宏观与微观相结合的叙事策略,让我能时刻保持对全局架构的感知,有效避免了陷入代码细节的泥潭而忘记了架构的初衷。
作为一名热衷于源码分析的技术爱好者,我最关注的是作者对底层原理的挖掘深度。这本书在这方面绝对是超出了我的预期。它不仅仅停留在API的调用层面,而是敢于深入到Java虚拟机、类加载机制,甚至是特定运行时环境的交互细节中去探索。我感觉作者仿佛拿着一把精密的解剖刀,将框架内部的各个组件——从请求的生命周期到线程池的管理——都进行了细致入微的剖析。这种对“为什么会这样运行”的刨根问底的精神,对于想要真正掌握一门技术,而不是仅仅停留在“会用”阶段的读者来说,是无价之宝。读完后,我对过去一些困扰已久的运行时疑难杂症,都有了豁然开朗的理解,这完全值回票价。
这本书的装帧设计挺有意思的,封面那种有点复古又带点科技感的插画风格,一下子就抓住了我的眼球。内页的排版也做得相当用心,字体大小和行间距都恰到好处,阅读起来非常舒服,长时间看也不会觉得眼睛累。更值得称赞的是,书中对一些核心概念的图解部分,绘制得非常直观和精美,那些复杂的流程图和架构图,通过这些生动的可视化方式,即便是初学者也能迅速抓住重点。作者在细节处理上体现了极高的专业素养,比如代码块的语法高亮做得非常清晰,注释也非常详尽到位,这对于我们这些需要对照代码学习的人来说,简直是福音。整体来说,这本书的物理呈现和阅读体验,完全符合一本高质量技术书籍的标准,光是看着放在桌面上,都觉得赏心悦目,让人有忍不住想去翻阅和学习的冲动,这在很多技术书里是比较少见的,看得出出版方在制作过程中是下了真功夫的。
坦率地说,我之前尝试过好几本号称“从零开始”的框架书籍,结果往往是第一章讲了点Java基础语法,第二章就直接跳到了反射和字节码,让人直接懵圈。但这本《架构探险》在内容组织上展现出了一种罕见的耐心和严谨性。它对基础知识的铺垫非常扎实,构建世界的每一步都走得异常稳健,就像是搭积木一样,确保每一块都放稳了,才开始下一层的叠加。这种循序渐进的方式,极大地降低了学习曲线的陡峭程度。我尤其欣赏它在引入新概念时所做的铺垫工作,总能先勾勒出当前技术栈的局限性,从而自然地引出新技术的必要性,这使得学习过程充满了目的性和驱动力,而不是为了学习而学习,这一点让作为读者的我感到非常尊重和被理解。
我最近刚接触到一些企业级的项目架构,感觉自己就像是站在一片迷雾中摸索,各种设计模式、中间件的整合应用让我头大。这本书的语言风格实在是太对我的胃口了,它没有那种高高在上、堆砌晦涩术语的架势,而是用一种非常接地气、像是资深前辈在旁边手把手指导的语气来阐述问题。它不像某些教材那样只告诉你“应该怎么做”,而是会深入剖析“为什么我们要这么做”,以及如果采用其他方案可能会遇到的陷阱。特别是它对一些经典设计哲学层面的探讨,比如“开闭原则”在实际框架演进中是如何体会的,讲得特别有洞察力,让人茅塞顿开。读完相关章节后,我感觉自己看问题的深度一下子拔高了,不再满足于仅仅实现功能,而是开始思考代码的健壮性和可扩展性,这对于一个渴望成长的技术人来说,是质的飞跃。
没买的还是表花钱买了,没有价值的入门书。关键定价还79,就只能给一个星了。
贴代码也算啊
贴代码也算啊
没买的还是表花钱买了,没有价值的入门书。关键定价还79,就只能给一个星了。
代码挺全的