晚上再 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 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
-
PHP 文件夹操作「复制、删除、查看大小」迭代实现
"既然递归能很好的解决,为什么还要用迭代呢"?主要的原因还是效率问题-- 递归的概念是函数调用自身,把一个复杂的问题分解成与其相似的多个子问题来解决,可以极大的减少代码量,使得程序 ...
-
jQuery下拉框扩展和美化插件Chosen
Chosen 是一个支持jquery的select下拉框美化插件,它能让丑陋的.很长的select选择框变的更好看.更方便.不仅如此,它更扩展了select,增加了自动筛选的功能.它可对列表进行分组, ...
-
Fail2ban 防止暴力破解centos服务器的SSH或者FTP账户
次尝试登陆root账户失败的情况.[说明服务器被攻击了] logtarget = SYSLOG #我们需要做的就是把这行改成/var/log/fail2ban.log,方便用来记录日志信息 so ...
-
数字图像处理- 3.4 空间滤波 and 3.5 平滑空间滤波器
3.4 空间滤波基础 • Images are often corrupted by random variations in intensity, illumination, or have poo ...
-
ArcGIS动态文本
处理动态文本 来自:http://resources.arcgis.com/zh-cn/help/main/10.2/index.html#/na/00s900000013000000/ Deskto ...
-
Gap Locks 区间锁
Gap Locks 区间锁 1. 区间锁不能用于语句锁定记录使用一个唯一索引来搜索一个唯一的记录 2.READ COMMITTED 没有区间锁 区间锁是一个锁在一个在index记录间的区间,或者一个l ...
-
轻量级jquery框架之--树(tree)
前言 在常用的UI组件中,树形组件与数据列表组件可以说是构成一个管理平台基本的两大数据核心组件.树形组件用于系统菜单,数据列表用于数据表现,两者配合即可完成一个简单的数据系统.要实现一个支持复选.工具 ...
-
Python3基础 使用for循环 删除一个列表中的重复项
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
-
Jupyter Notebook 添加目录
1. 安装 jupyter_contrib_nbextensions pip install jupyter_contrib_nbextensions 2. 配置 nbextension jupyt ...
-
stream,file,filestream,memorystream简单的整理
一.Stream 什么是stream?(https://www.cnblogs.com/JimmyZheng/archive/2012/03/17/2402814.html#no8) 定义:提供字节序 ...