编辑推荐

海报:

内容简介

  《架构探险:从零开始写JavaWeb框架》首先从一个简单的Web应用开始,让读者学会如何使用IDEA、Maven、Git等开发工具搭建JavaWeb应用;接着通过一个简单的应用场景,为该Web应用添加若干业务功能,从需求分析与系统设计开始,带领读者动手完成该Web应用,完善相关细节,并对已有代码进行优化;然后基于传统Servlet框架搭建一款轻量级JavaWeb框架,一切都是从零开始,逐个实现类加载器、Bean容器、IoC框架、MVC框架,所涉及的代码也是整个框架的核心基础。为了使框架具备AOP特性,从代理技术讲到AOP技术,从ThreadLocal技术讲到事务控制技术。最后对框架进行优化与扩展,通过对现有框架的优化,使其可以提供更加完备的功能,并以扩展Web服务插件与安全控制插件为例,教会读者如何设计一款可扩展的Web应用框架。
  《架构探险:从零开始写JavaWeb框架》适合具备Java基础知识,熟悉Web相关理论,并想成为架构师的程序员阅读。

作者简介

  黄勇,从事近十年的JavaEE应用开发工作,现任阿里巴巴公司系统架构师。对分布式服务架构与大数据技术有深入研究,具有丰富的B/S架构开发经验与项目实战经验,擅长敏捷开发模式。国内开源软件推动者之一,活跃于“开源中国”社区网站,SmartFramework开源框架创始人。热爱技术交流,乐于分享自己的工作经验。

精彩书评

  这年头出一本关于Java的书需要勇气,因为很容易会被归类到“烂大街”的分类里头,市面上不凡“XXX深入浅出”、“21天精通Java”之类。推荐下面这《架构探险:从零开始写Java Web框架》的主要原因是该书的作者是我的朋友,众所周知我的朋友必须是大牛——来自阿里巴巴系统架构师黄勇,同时也是Java开源框架SmartFramework的作者。《架构探险:从零开始写Java Web框架》从Java基础讲起,到IDE开发环境,到应用实践,难得的是还花了大量篇幅把基于Java架构系统常用的开源软件也以架构师的角度逐一介绍了,吃Java这碗饭的同学可以拜读一下。

  ——开源中国COO王永和

  勇哥,您好!您的书我看到第三章了,写的非常好,收获很多,谢谢!《架构探险:从零开始写Java Web框架》内容通俗易懂,由浅入深,一步一步带领着我们实现自己的JavaWeb框架,MVC、IOC、AOP、事务控制等面面俱到。不想当将军的士兵不是好士兵,不想当架构师的程序员不是好程序员,《架构探险:从零开始写Java Web框架》是通往架构师之路不能不读的一部佳作。

  ——开源中国网友陈浩

  这《架构探险:从零开始写Java Web框架》由表及里讲解精细,既适合于初级Java开发学习基础,又适合中级甚至高级Java攻城狮巩固基础,通过借鉴来提高自己。因为该书是回归基础,从简单的Servlet开始剖析一些我们经常用到的知识点或者框架比如代理模式,、AOP、CXF等等,抛开了复杂的SSH,很喜欢也很受用,希望看完以后能够让自己的水平有个质的飞跃。感谢作者能够毫不保留的分享自己的经验。

  ——开源中国网友康良

  书中从开发工具入手,不仅让我们熟练使用IDE,更让我们一步一步熟悉Servlet到搭建轻量级框架,精简易懂,由类加载器到实现请求转发,使我们更清楚理解Servlet生命周期及请求过程,夯实基础,提高学习能力,以及附录中提供的项目构建工具与IDE结合在一起,更能节约读者时间。

  ——开源中国网友何银

  作为一名开发人员,我们学习的并不应该是一个架构,而是开发这个架构的过程,已经在这个过程当中我们所需要具体的知识和能力,最后为编写一个适合自己的架构,这才叫一个完整的学习,相信也是作者出书的目的,这也叫做授人以鱼不如授人以渔。

  ——CSDN网友kliang77

  不要重复制造轮子不代表不需要知道轮子是怎么制造的。在“重复”制造轮子的过程中对知识的掌握,对技术的提升又会一个新的高度,自己写一个框架是对已有框架理解深刻的方式。写一个完整的框架这需要丰富的经验和技术积淀,不是每个人有能力去做的,前提当然是已经会使用已有的框架并知道其大概的实现,并在自己的使用过程中根据实际情况定制自己的框架。

  ——CSDN网友cauchyweierstrass

  架构、框架,其阐述的主要是一种思想,造轮子的思想,至于这个轮子该造成汽车的还是自行车的,根据实际需要选用合适的材料(例如Hibernate、iBatis等),LZ的书也是想通过对架构、框架这么多年的经验积累来讲讲如何去掌握这种思想,探索适合企业、个人的架构方法。

  ——CSDN网友xiaoyaocao2000

目录

第1章从一个简单的Web应用1
正所谓“工欲善其事,必先利其器”,在正式开始设计并开发我们的轻量级JavaWeb框架之前,有必要首先掌握以下技能:
使用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转为JavaWeb项目5
1.2.2添加JavaWeb的Maven依赖6
1.3编写一个简单的Web应用10
1.3.1编写Servlet类10
1.3.2编写JSP页面11
1.4让Web应用跑起来12
1.4.1在IDEA中配置Tomcat12
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章搭建轻量级JavaWeb框架66
我们需要这样的框架,它足够轻量级、足够灵巧,不妨给它取一个优雅的名字――SmartFramework,本章我们就一起来实现这个框架。
您将通过本章的学习,掌握如下技能:
如何快速搭建开发框架;
如何加载并读取配置文件;
如何实现一个简单的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加载Controller93
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.2JDK动态代理114
4.1.3CGlib动态代理116
4.2AOP技术简介118
4.2.1什么是AOP118
4.2.2写死代码119
4.2.3静态代理120
4.2.4JDK动态代理121
4.2.5CGLib动态代理122
4.2.6SpringAOP124
4.2.7Spring+AspectJ136
4.3开发AOP框架142
4.3.1定义切面注解142
4.3.2搭建代理框架143
4.3.3加载AOP框架150
4.4ThreadLocal简介158
4.4.1什么是ThreadLocal158
4.4.2自己实现ThreadLocal161
4.4.3ThreadLocal使用案例163
4.5事务管理简介172
4.5.1什么是事务172
4.5.2事务所面临的问题173
4.5.3Spring的事务传播行为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参数;
如何实现文件上传功能;
如何与ServletAPI完全解耦;
如何实现安全控制框架;
如何实现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与ServletAPI解耦214
5.3.1为何需要与ServletAPI解耦214
5.3.2与ServletAPI解耦的实现过程215
5.4安全控制框架――Shiro219
5.4.1什么是Shiro219
5.4.2HelloShiro220
5.4.3在Web开发中使用Shiro224
5.5提供安全控制特性230
5.5.1为什么需要安全控制230
5.5.2如何使用安全控制框架231
5.5.3如何实现安全控制框架242
5.6Web服务框架――CXF261
5.6.1什么是CXF261
5.6.2使用CXF开发SOAP服务262
5.6.3基于SOAP的安全控制278
5.6.4使用CXF开发REST服务291
5.7提供Web服务特性308
5.8总结329
附录AMaven快速入门330
附录B将构件发布到Maven中央仓库342

前言/序言

  序
  其实一开始黄勇找我为他的处女作写序的时候,我是拒绝的。因为你不能让我写,我马上就写。我要先看一下书,因为我不愿意写完后发现书很烂,然后读者来骂我乱推荐。
  黄勇一直是开源中国非常活跃的会员,非常积极地回答各种问题和分享自己所擅长的知识。本身也是SmartFramework框架的作者,积分居然过千,要知道开源中国上超过1000积分的会员寥寥无几。我和黄勇并没有见过面,仅通过线上的信息大概觉得他是一个热情、虚怀若谷又非常接地气的技术牛人。
  回归正题,2015年是Java的20周年。Java是一门让我们又爱又恨的编程语言,在编程语言界里算是一棵老树,关键是这棵老树还频频长出新枝。Java8的出现使其具备了各种流行的编程理念,而全新的Java9也已经奠定了Java发展的里程碑并将于2016年下半年发布正式版本。说起又爱又恨,在Java最火热的那几年里,满世界的SSH(Struts+Spring+Hibernate),所有人都在讨论SSH框架里的奇技淫巧,也出现了各种图书和培训教程。很多初学者认为Java=SSH,学Java就是学SSH,以至于很多人用SSH做了不少项目,但依然对Java、HTTP等基础知识一知半解、不甚了了。
  在Web开发方面,Java经历了这么几个阶段,从最开始使用大量Servlet来处理各种业务逻辑,然后出现了著名的Struts框架,大大简化了Web应用的开发以及配置,而后是Hibernate和Spring的出现,使这三者成为三驾马车,并一直流行到现在。
  而如今,确切地说应该是最近几年,Java用户开始回归理性。由于SSH在不断发展的同时,体积也变得越来越庞大,很多人在使用的过程中被各种配置、注解弄得头昏脑涨。而前些年RubyonRails框架以其“惯例优于配置”的理念让我们猛然清醒——原来Web的开发就应该这么简单。于是越来越多的Java开发者开始考虑轻量级框架解决方案。而黄勇的SmartFramework就是这种轻量级解决方案之一。
  Java的世界从来不缺乏各种优秀的开源软件,理念成熟后大量的轻量级Web框架如雨后春笋般出现在我们眼前。在开源中国网站上你会发现Java的Web框架有超过300款之多。那么多的框架对初学者来说简直是噩梦。于是三年前我写了一篇文章《初学JavaWeb开发,请远离各种框架,从Servlet开发》,今天一看,这篇文章居然超过了21万阅读量。这篇文章是针对Java初学者的,因为很多人为了学习各种框架而疲于奔命,但却从来没有思考为什么同样是做开发的,自己要比别人更累。最根本原因在于方法不对,事倍功半!
  在招聘Java开发人员时我最爱问的一个问题是:请解释一下Session的工作原理,从而来判断应聘者对基础知识的掌握情况。那么什么才是初学者学习Web开发的好方法呢?其实我在前面提到的文章里包含了详细的步骤,简单地说就是先要熟悉JavaEE里关于ServletAPI中的常用类和方法。在这个基础上再去学习某个框架的使用,最后是阅读HTTP协议的内容。想成为高手必须对HTTP协议有着深入的了解。一旦掌握了这些基础的内容,你会发现使用框架甚至是开发一个适合自己业务的框架是多么的容易。
  而黄勇的这《架构探险:从零开始写Java Web框架》,虽然我只是看到书的目录以及前面两三章的内容,但相信这是一本对初学者非常好的书,没有华丽的词藻,实实在在地讲述了整个开发流程。这《架构探险:从零开始写Java Web框架》不是在教你怎么用SmartFramework,而是展示了作者开发这个框架的整个心血历程,包括设计一个框架所用到的各种技术,还涉及了很多底层的Java技术,如类加载器、依赖注入、线程本地、事务管理和安全控制,等等。
  不管是学习还是在实际的开发中,少问怎么做,多问问为什么要这么做。或许,这就是黄勇想要告诉大家的吧。
  红薯
  开源中国(oschina.net)创始人
  2015年6月12日
  于北京到上海的G123列车上


其他推荐