2019-02-20 架构探险——从零开始写Java Web框架

目录

编辑

第1章 从一个简单的Web应用 1

正所谓“工欲善其事,必先利其器”,在正式开始设计并开发我们的轻量级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 [1]

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容