第1章 高级程序员的Web知识体系 1
1.1 合格Java程序员和高级Java程序员的技能比较 1
1.1.1 Java Core方面 2
1.1.2 Java Web方面 3
1.1.3 数据库层面 4
1.1.4 项目管理方面 5
1.1.5 能帮助到你的加分项 5
1.2 你可以少走的弯路 6
1.2.1 哪些知识点可以延后了解 6
1.2.2 大学阶段的实习经验能帮到你 7
1.2.3 刚开始的1到3年,找个专注的方向 8
1.2.4 常学习、多实践的人工资涨得快 8
1.3 上手Web方面的开发工具 9
1.3.1 在MyEclipse上开发和部署Web项目 9
1.3.2 更换端口号 14
1.3.3 引入外部的jar包 15
1.3.4 支持中文 16
1.4 推荐一些经过实践检验的学习方法 19
第2章 需要了解的数据库知识 21
2.1 合理地使用各种连接 21
2.1.1 内连接和左连接 21
2.1.2 范式和连接的代价 24
2.1.3 表的设计和数据冗余 25
2.2 不复杂但容易忽视的SQL用法 25
2.2.1 group by和Having 26
2.2.2 Having的另一个常用用途——查看重复记录 27
2.2.3 通过一些案例来看一下常用的Select定式 28
2.3 索引的用途和代价 29
2.3.1 从结构上来分析索引的好处和代价 29
2.3.2 建索引时我们需要权衡的因素 30
2.3.3 索引的正确用法 31
2.4 让你的JDBC代码更专业 32
2.4.1 用try...catch...finally从句 32
2.4.2 预处理和批处理 34
2.4.3 事务的提交与回滚 36
2.4.4 事务隔离级别 38
2.5 总结 39
第3章 JSP+Servlet+JavaBean框架 41
3.1 只应负责界面显示的JSP 41
3.1.1 从一个大而全的例子里分析JSP的语法 42
3.1.2 “大而全”和“小而精” 45
3.2 让Servlet承担控制器的角色 46
3.2.1 基本知识点 46
3.2.2 生命周期与多线程运行方式 47
3.2.3 JSP+Servlet的开发模式 49
3.2.4 运行结果和JSP+Servlet模式的说明 53
3.3 JSP+Servlet+JavaBean+JDBC的开发模式 54
3.3.1 通过一个简单的例子来了解JavaBean 54
3.3.2 在JavaBean里编写业务逻辑 57
3.3.3 对MVC的总结 64
3.4 总结 64
第4章 通过Struts进一步了解MVC 66
4.1 在MyEclipse里开发一个基本的Struts程序 66
4.1.1 创建Web项目,并导入必要的jar包 67
4.1.2 开发前端的JSP代码 67
4.1.3 在web.xml里声明使用Struts 68
4.1.4 配置struts.xml文件 69
4.1.5 开发Action类 69
4.1.6 开发两个跳转结果页面 71
4.2 通过运行,了解Struts的工作流程 71
4.2.1 Struts的跳转流程分析 72
4.2.2 Struts MVC框架和JSP+Servlet+JavaBean框架的比较 73
4.3 通过Struts的验证机制校验输入内容 74
4.3.1 通过Validate方法来验证 74
4.3.2 在配置文件里定义验证方式 77
4.4 Struts拦截器 81
4.4.1 拦截器与职责链设计模式 81
4.4.2 通过登录案例详解拦截器的用法 82
4.4.3 拦截器的使用要点归纳 87
4.5 为了尽快进阶,你必须知道如下知识 87
4.5.1 Action里的跳转 88
4.5.2 可以指定Action里的处理方法 89
4.5.3 对Struts框架的进一步了解 89
4.6 关于Struts框架的常见面试点 90
第5章 Spring的基本知识点分析 92
5.1 依赖注入的好处 92
5.1.1 一个基本的依赖注入的程序 93
5.1.2 IoC的特点,不用New就可以初始化类 95
5.1.3 控制翻转和依赖注入 95
5.1.4 面向接口编程的本质是缩小修改的影响范围 96
5.2 依赖注入的常用知识点说明 100
5.2.1 读取配置文件的各种方式 100
5.2.2 单例多例,有状态无状态Bean 100
5.2.3 Spring的注入方式与AutoWire 103
5.2.4 @AutoWired注解 105
5.2.5 Bean的生命周期 106
5.3 AOP,面向切面编程 108
5.3.1 面向切面编程的使用场景 108
5.3.2 面向切面编程的案例演示 108
5.3.3 深入了解面向切面编程的各种概念 114
5.4 如何证明自己了解Spring的基本技能 114
第6章 Spring的MVC框架 117
6.1 一个只包含MVC的案例 117
6.1.1 开发Spring MVC的代码 117
6.1.2 Spring MVC的运行流程 120
6.1.3 与Struts MVC的区别 122
6.2 Spring MVC的关键类说明 122
6.2.1 通过HandlerMapping来指定处理的控制器类 123
6.2.2 通过视图解析器处理响应结果 127
6.2.3 通过ModelAndView返回视图结果 129
6.2.4 Spring的拦截器 131
6.3 在Spring MVC方面你如何准备自己 135
第7章 通过ORM专注业务(基础篇) 138
7.1 让你尽快掌握Hibernate 138
7.1.1 通过Hibernate完成ORM的具体步骤 139
7.1.2 通过Hibernate的注解方式实现ORM 144
7.1.3 Hibernate里生成主键的方式 146
7.2 Session对象在项目里的用法 150
7.2.1 Session对象中的重要方法 150
7.2.2 Session对象中的load和get方法的差别 152
7.2.3 Session缓存与三种对象状态 154
7.2.4 FlushMode与清空缓存的时间点 157
7.3 在Hibernate里执行复杂的查询 158
7.3.1 where、groupby和having 158
7.3.2 表关联查询和子查询 160
7.3.3 通过SQLQuery对象执行SQL语句 162
7.3.4 通过Criteria设置查询条件 163
7.4 针对Hibernate基础知识部分的小结 166
第8章 通过ORM专注业务(高级篇) 168
8.1 通过Hibernate关联多张表 168
8.1.1 通过配置文件实现一对一关联 169
8.1.2 一对一关联的注解实现方式 173
8.1.3 一对多关联(配置文件,返回List) 177
8.1.4 一对多关联(注解,返回Set) 182
8.1.5 用Map来管理一对多关联 186
8.1.6 通过配置文件实现多对多关联 189
8.1.7 多对多关联的注解实现方式 194
8.1.8 关联性操作里的cascade取值 196
8.1.9 通过inverse设置外键控制权 198
8.2 Hibernate里的事件机制 201
8.2.1 在拦截器里放一些通用性的代码 201
8.2.2 事件系统和监听器 207
8.3 Hibernate中的优化 212
8.3.1 结合数据库大背景 212
8.3.2 使用SessionFactory二级缓存 213
8.3.3 项目中常用的优化策略 218
8.4 在Hibernate方面我们面试的方式 218
第9章 Spring整合数据库层面的应用 221
9.1 Spring与Hibernate的整合 221
9.1.1 Spring整合Hibernate注解的例子 222
9.1.2 配置数据池来提升效率 225
9.2 通过Spring管理事务 227
9.2.1 编程式事务管理方式 227
9.2.2 声明式事务管理方式 232
9.2.3 事务传播机制要解决的问题(适用范围) 235
9.3 针对Spring整合数据库的总结 237
第10章 Web框架案例分析 238
10.1 Struts、Spring与Hibernate的整合 238
10.1.1 SSH整合案例的说明 239
10.1.2 编写登录页面和Web.xml配置文件 240
10.1.3 编写Struts的配置文件struts.xml 242
10.1.4 编写Spring的配置文件 243
10.1.5 编写Struts的Action类 245
10.1.6 编写Service和DAO类 246
10.1.7 编写Model类和映射文件 248
10.1.8 编写显示返回结果的index.jsp 249
10.1.9 对SSH框架的分析 250
10.2 基于Spring MVC的Web框架分析 251
10.2.1 Spring MVC案例的说明 251
10.2.2 在web.xml里定义使用Spring MVC 253
10.2.3 编写整合Hibernate的xml文件和Model类 254
10.2.4 配置Spring MVC的xml文件 257
10.2.5 编写前端的增改查JSP文件 258
10.2.6 编写拦截器类和控制器类 261
10.2.7 编写Service层的代码 264
10.2.8 编写DAO层的代码 265
10.3 描述商业项目案例经验 267
第11章 简历面试那些事 271
11.1 不要让你的简历进回收站 271
11.1.1 面试的基本流程 272
11.1.2 根据职务介绍再针对性地准备简历 272
11.1.3 哪类简历比较难获面试机会 273
11.1.4 准备简历时该注意哪些 273
11.2 面试之前,你要做哪些准备 274
11.2.1 准备项目经验描述,别害怕,因为面试官什么都不知道 274
11.2.2 面试官的策略——如何通过提问,找出你回答中的矛盾 275
11.3 面试陈述篇:充满自信地描述你的项目经验 275
11.3.1 准备项目的各种细节,一旦被问倒了,就说明你没做过 276
11.3.2 充分准备你要说的项目的框架、数据库 277
11.3.3 不露痕迹地说出面试官爱听的话 279
11.3.4 一定要主动,面试官没有义务挖掘你的亮点 280
11.3.5 一旦有低级错误,可能会直接出局 281
11.4 面试引导篇:把问题引入准备好的范围 282
11.4.1 项目要素、框架设计和数据库,这些是必须要准备的 282
11.4.2 准备些加分点,在介绍项目时有意提到,但别说全 284
11.4.3 对于面试官的圈套,别顺口回答 284
11.4.4 别自作聪明地回答面试官没问到的但你很想说的亮点 285
11.5 必问的问题:这些非技术问题你逃不掉的 286
11.5.1 如何描述你在项目里的作用?别单说你仅仅coding 286
11.5.2 一定要找机会说出你的团队合作能力 287
11.5.3 当问项目周期规模和技术时,是在考查你值多少钱 288
11.5.4 想尽办法展示你的责任心和学习能力 289
11.6 开放性问题篇:面试官想摆脱你的准备,别慌,有技巧 290
11.7 当你有权提问时,别客气,这是个逆转的好机会 290
11.7.1 通过提问,进一步展示你和职位的匹配度 291
11.7.2 通过提问,说出你没被问到的亮点 291
11.7.3 可以展示一些非技术的特长 291
11.8 亡羊补牢:万一你回答不好,该怎么办 292
11.8.1 坦诚相对,说明你的擅长点,让面试官给次机会 292
11.8.2 展示你以前的亮点,让面试官相信你的潜力和能力 293
11.8.3 记下所有的面试题,迎接下次面试 295
11.9 基础差,不知道怎么应对面试时的对策 295
11.9.1 有计划的学习和实践 295
11.9.2 多挖掘你之前的项目经验和技术点 296
11.9.3 及时提升你项目里用过的知识 297
11.10 背景调查的一般流程 297
11.10.1 技术面试阶段,着重甄别是否是商业项目 298
11.10.2 关键因素一旦不对,立即出局 298
11.11 面试评分的一般依据 299
11.11.1 技术面试的考查要点 299
11.11.2 综合能力面试的考查方式 301