我推荐的 Java Web 学习路线
晚上再 V2 的 Java 的节点看到有人问 Java Web 书籍推荐。我这半年多的时间,也从别的方向开始转向 Java 服务端开发,所以,我来说下我的学习路线,帮助有需要的朋友把半只脚踏进 Spring 大门。
本文所描述的路线,适合有其他面向对象语言编程经验,具备数据结构、算法、网络、数据库、Linux 使用经验的人,如果你没有基础,这篇文章可能不适合你。
工欲善其事必先利其器
电脑系统推荐使用 *nix ,不论是 Linux 还是 macOS 都有强大的工具能让你学习的过程得心应手,Windows 系统也不是不可以,但 Windows 系统的终端个人很不喜欢。
IDE 推荐 IntelliJ IDEA,使用 Eclipse 也是可以的,不过现在越来越多的人开始使用 IntelliJ IDEA。
学习的过程中你会遇到各种各样的问题,无脑推荐 Google,鉴于目前国内的网络环境,你需要有利器能够访问 Google(比如 AT&T 漫游,误)。
Java SE
Java 基础有 Java编程思想、Java核心技术、Head First Java 等,我选择的是 Java编程思想(第4版),第 22 章是讲 GUI 的,可以不看。
现在你有 Java 基础了,但是现在 Java 发展到 1.9 的版本了,怎么办?
Java编程思想(第4版) 基本覆盖了 1.5 版本的内容,1.6、1.7 版本的更新,可以通过网上查资料来学习。1.8 版本有比较大的更新,建议买本书系统学习,我使用的是 Java 8 实战。
好了,现在你会写 Java 代码了,但是 .java 文件如何成了 .class 文件,.class 文件长成什么样,又如何被加载到虚拟机中执行等等若干问题,难道你不好奇。这里推荐深入理解Java虚拟机(第2版)。
随着时间流逝,你写了不少代码。但条条大路通罗马、再加上语言本身的语言负担,你或许会写出不那么优雅的代码,你需要前辈的经验来写清晰、健壮、高效的代码。Effective Java 就是这么一本书。当然,还有重构、代码整洁之道这样的书,但这里只讨论 Java 。
Web
强烈不推荐上来直接上框架,你需要先了解 JSP、Servlet。这里我使用的是 Head First Servlets & JSP,Servlet与JSP核心编程这本书网上评价也不错。
好了,现在来说企业中的框架该怎么学。最最最重要的是,学的过程中一定要动手。
万事开头难。我最开始接触的时候,也是不知道如何开始框架的学习,在网络找了很多方法,浪费了不少时间,记住只有适合自己的才是最好的。在开始介绍前,再重复一遍,一动手尝试,二大胆猜测并验证。
1. Spring
在我刚开始的时候,很多人推荐直接读官方文档,经过验证,这种方法不适合初学者,或者说不适合我。
这里我使用的是Spring实战,学 Spring 一定要理解依赖注入(你说控制反转也行)和 AOP,跟着这本书敲,书中关于配置的东西一定要看仔细、理解好,不然配错了,自己找起来可能很麻烦。
2. Spring 与 MyBatis、Redis 等其他框架的整合。
MyBatis 推荐官方文档,然后找个 demo 做一下,自己再练习练习就可以了。
与 Spring 整合的时候参考文档,可以很简单的完成。
Redis 等其他框架的整合参考 Spring 实战,或者找资料都是可以的。
其他
要不要看视频这个事,我的观点是能不看就不看,但不要因噎废食。慕课网上有 SSM 框架的视频,对于这个路径,我的经验是直接跳过前两个,即战斗伊始--Spring和转战阵地--SpringMVC,这两部分看 Spring实战就可以了,后边两个可以看看。
注意,针对这个慕课网这个视频我这里解释的是上文的你都做了,且自己写的服务能够正常运行。
刚接触框架配置很容易出错,出错的时候一定要耐心看输出的信息,有的很简单可能是手误,有的可能可能需要你对框架有些理解,所以 Just Google It。
手动倒入 jar 包费时费力,上 maven 啊。
好了,你的服务跑起来了,你的半只脚已经进入了 Spring 的大门,请继续加油。
我在 Github 上有一个基于 SSM(Spring、Spring MVC、MyBatis)的小项目,部分学习内容会在该项目中使用。
该项目 Spring 相关配置,完全使用基于注解的方式。博主在刚接触各种配置的时候,绕了一些弯路。
对于刚接触这些框架的朋友,该项目或许会有些许帮助。如果在理解该项目时或参考时遇到任何问题,欢迎通过你能找到的任何方式联系我,非常乐意共同学习。
项目地址为:spittr 。
文中提高了慕课网,如果你喜欢 xml 配置的方式,可参考另外一个项目 seckill 。该项目是博主在慕课网上学习该课程的源代码,项目中没有完全采用基于注解的方式,相比而言,该项目在配置方面更加老道。
我写完了,如果你有什么不明白的可以发邮件给我。如果文中有不合适的地方,也请指正。我的邮箱地址是:shixj.cs@foxmail.com。
我推荐的 Java Web 学习路线的更多相关文章
- Java Web 学习路线
实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...
- Java Web学习路线
2016-08-22的早上,本是一个很平静的早上,坐在去往公司的公交车上想到了很多之前上学时的点点滴滴,回想起来还真的是耐人寻味啊,当初青春的懵懂,当初的冲动,当初的做事不考虑后果! 也正是这耐人寻味 ...
- Java Web学习系列——Maven Web项目中集成使用Spring
参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...
- Java web 学习之旅
java web学习之旅 来公司十天了,感觉已经慢慢地融入了这个环境中,几个学长人都很好,都是在他们帮助下,我才能比较顺利的开始了学习java web的旅途. 来这里学习的第一个阶段是做一个简单的用户 ...
- Java+Bigdata学习路线
Java+Bigdata学习路线 2019-05-28 07:04:33 @Auther:MrZhangxd STAGE 第一阶段:JAVA基础 |-第一阶段:JAVA基础 | |-可掌握的核心能力 ...
- [原创]java WEB学习笔记95:Hibernate 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问
本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- 201521123122 《java程序设计》第十四周学习总结
## 201521123122 <java程序设计>第十四周实验总结 ## 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. M ...
- SQL性能优化十条经验(转)
1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'-- 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便会 ...
- 【设计模式】module模式&&Revealing module (揭示)模式
写在前面 <head first设计模式>里有一篇文章,是说使用模式的心智, 1.初学者"心智" :"我要为HELLO WORLD找个模式" 2.中 ...
- AngularJS -- Bootstrap(启动器)(转载)
AngularJS -- Bootstrap(启动器) 点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ Bootstrap(初始化) ...
- 多线程进阶---Thread.join()/CountDownLatch.await() /CyclicBarrier.await()
Thread.join() CountDownLatch.await() CyclicBarrier.await() 三者都是用来控制程序的"流动" 可以让程序"堵塞&q ...
- 写了一个迷你confirm弹窗插件,有取消和确认操作处理并支持单个确认使用弹窗和锁屏禁止滚动
由于项目想精简不想用其他第三方的ui插件,又很需要像confirm等小效果来完善交互,且使用的频率也是相当的高,于是自己造了一个,省时也省力 代码已经粘贴出来,直接复制即可看到效果,高手勿喷,可以相互 ...
- String Problem hdu 3374 最小表示法加KMP的next数组
String Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- bzoj2330(差分约束)
题解:这道题是练差分约束的一道好题目吧,我具体在代码中注释,这样更加好理解, 为什么求最长路呢?因为这样保证了满足条件,如果存在正权环,就表示无解,就是 正权环之间不断要更多的糖果才行. #inclu ...
- Deep learning:一(基础知识_1)
本文纯转载: 主要是想系统的跟tornadomeet的顺序走一遍deeplearning; 前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程 ...
- HTTPS与MITM
HTTPS:基于SSL/TSL的HTTP协议 MITM:Man-In-The-Middle中间人攻击 Https下中间人攻击的思路: 1 去https化 2 向CA申请相似域名的证书 防范: 睁大双眼