JavaEE成长之路

前言



学习Java已经有一段时间了,在学习的过程中也走过了不少弯路。
写下这篇博文,主要是想记录下自己学习编程之路,以及反思自己在学习的时候出现的问题,下面也会给出我自认为学习JavaEE的路线,想要学习JavaEE的同学可适当地参考一下。

反思

在刚上大一的时候,什么编程语言都不懂,也不知道怎么学习编程。

当时想要加入学校的计算机协会,当时的师兄师姐告诉我们想要加入协会需要审核,给了一个外国的学习网站。这个网站主要是学习HTML、CSS的。于是就去草草学习了一番HTML和CSS。那时候只知道HTML和CSS的代码能够使用浏览器来打开,可以改变字体颜色,添加图片,简单的页面布局,随后就再没有去看它了。

大一学校开的编程语言课程是c++,去逛了一些论坛(知乎,贴吧等),学习的第一门编程语言最好是C,于是我就会找相应C语言的视频去学习了。当时候把郝斌180讲C语言的视频地过了一遍,后来又把郝斌的数据结构视频过了一遍。这么一来,学校的c++课程对我来说好像就不成问题了,自以为就有点基础了,又去寻求其他的技术了。 

在期间,逛论坛的时候出现了很多我不知道的专业名词,看起来就觉得非常地高大上:“数据库“,“Java”,“javaScript“”,“Jquery”什么的。对于当时是萌新的我,就想什么都学学。于是乎,在论坛上看见别人说“李兴华的Oracle教程”不错,我就去买了一本李兴华的Oracle书籍,跟着自带的视频学习Oracle去了。学习着Oracle,发现很多知识理解不了,甚至学了一段时间之后,会存在这样的想法:Oracle究竟学了有什么用?后来又舍弃Oracle的学习,去学了一下Java,JavaScript,Jquery乱七八糟什么的。

到了大一末时,要准备四级的考试了。编程什么的都放了一边,花了一个多月去复习英语四级,随后放暑假偷懒没有学习编程。等到大二的时候,发现之前学过的东西几乎全忘了!

在大二的时候,又去重新学习了Java,书上和视频的Demo也积极敲了,可是总觉得自己不知道在学什么,整天对着命令行窗口太枯燥了!

我觉得出现这样的情况有以下主要原因:
一、过于浮躁。一会学习HTML、CSS,一会学习Java、JavaScript、Oracle,甚至在不知道为什么要学习这门技术的情况下就去胡乱学习了。
二、学习路线不合理。Oracle、Java、JavaScript这样的技术没有分清学习的先后顺序并且没有体验到学习的趣味
三、没有总结和做笔记。没有对知识进行整理,并不是理解了某个知识点,后边就会自然地记起来的。只要不一段时间不接触它,我们就会遗忘。

因此在学习编程中,在我们学习一门技术之前,我们首先要知道这么技术是用来干嘛的,我们为什么要学习它。这门技术解决了什么问题。还有就是,我是强烈建议要做笔记的,并且笔记的格式要做得整齐,不然最后你也不想看你自己写过的笔记、甚至会以为你并没有写过这篇笔记的。

推荐做笔记工具

对于截图工具,我推荐使用FastStone Capture,它十分轻巧,并且功能非常强大。

编辑笔记的工具我推荐使用markdown,在github上的很多readme都是使用它的,而且在编写笔记的时候,可以完全不用到鼠标,仅仅用markdown的语法就能有对应的格式了。我的博文都是使用markdown来进行编辑的。

画思维导图、一些简单的流程图的话,我推荐https://www.processon.com这个网站,非常好用,并且格式还是挺好看的。

如果是需要用到轻量级的文本编辑器,我推荐使用sublimeText3或者notepad++



JavaEE学习路线

对于JavaEE的学习路线,我认为是以实际需求来一步一步学习,并且在短时间内能看到效果的,这样是最好的。而当我们把整个JavaEE体系有大概的了解和认识的时候,我们再去专研基础,阅读源码。

Java基础


在学习java基础的时候,尽可能去理解java常用的知识点。而一些比较偏门的知识点,可以先放着不管,在初学的阶段没必要死磕。因为有一些偏门的知识点,即使我们搞明白了,但在后续中用不上,我们还是会渐渐遗忘掉。

参考视频:
一、Java毕向东
二、2015Java刘意

参考书籍:
一、java疯狂讲义
二、headFirstJava【虽然这本书销量很高,我个人不太喜欢,插图很多,与正常书籍的画风差距有点大】

在初学的时候,我们可以使用轻量级的文本编辑器sublimeText3或者notepad++,在使用久了之后,我推荐使用Intellij
idea这个集成开发工具。即使我们的视频都是使用eclipse,但是Intellij idea的风势越来越大,用起来也很好用,只不过有点难上手而已。

对于idea,sublimeText3的初步使用或者一些设置问题,可以看我其他的博文有没有解决方案:Idea、SublimeText教程

对于Java基础中的Swing、AWT、JDBC、注解章节的,到目前为止我们都可以先放着不看

Web前端基础

在学习完Java基础之后,我建议直接去学习Web前段的基础HTML、CSS和JavaScript。



因为Java基础都是面对一个命令行窗口或者我们IDE的输出窗口,太过无聊了,我们得学习些见效快的东西。



参考视频:

一、韩顺平HTML+CSS【讲得比较细,可以加速观看的视频速度】

二、韩顺平JavaScript【讲得比较细,可以加速观看的视频速度】



参考书籍:

HTML5+CSS3疯狂讲义



参考网站:

w3c


参考博文:

JavaScript基础教程


在学完此阶段上,我们就会理解到HTML是名词,CSS是形容词,JavaScript是动词这么一个比喻。

XML

在学习完Web前端之后,我们知道了HTML的概念,而XML是HTML的升级,但是XML是用来传输数据的【它本身是希望既能够做页面展示,又能够传输数据,可是我们觉得它做页面展示不好】。



XML解决了传输的数据是关系型数据的问题,并且是一种格式通用的传输数据文本,通常我们可以将它作为配置文件。接下来Servlet就是使用XML作为配置文件的。



参考视频:

韩顺平xml细讲【讲得比较细,可以加速观看的视频速度】



参考博文:

XML教程

Tomcat

在学习Servlet之前,我们得先学习一个中间件:Tomcat。这个是可以让我们写的页面能够被别人访问。在之前,我们写的HTML都仅仅是自己机器上的访问,我们写出来的东西当然是想被别人访问的,只要把写的东西放在Tomcat这么一个中间件上,就能够被别人访问到了(局域网)。



而Tomcat也是装载着Servlet和JSP的一个容器,是非常适合我们学习的。



参考视频:

方立勋JavaWeb教程



参考博文:

Tomcat基础知识

Servlet与JSP

在学习Servlet之前,要看看HTTP协议的基本知识,了解HTTP的消息头。



市面上很多书籍都是先讲JSP,再讲Servlet的,其实我认为我们先要学Servlet,再学JSP。



Servlet其实就是一个Java类,只是这个Java类被称作是Servlet这样高大上的名称而已。由于Servlet不适合做页面的输出,因此就诞生了JSP。JSP本质上就是Servlet的,因此我们只要把Servlet学好,JSP就很自然的懂了。



参考视频:

方立勋JavaWeb教程



参考书籍:

李兴华JavaWeb

JavaWeb王者归来【我认为这本书还是啰嗦了一点,很多输出到页面上的代码都是用Servlet来写,其实是没必要】



参考博文:

Servlet与JSP教程





Servlet和JSP要好好学,因为Servlet是JavaWeb最基础的部分了,后面所谓的框架本质上都是对Servlet进行包装的。只要把Servlet好好学了,那么理解后面的框架也就不难了,就很快可以上手。



Servlet知识点:



JavaEE成长之路



JSP知识点:

JavaEE成长之路



过滤器和监听器知识点:

JavaEE成长之路

JDBC与数据库

学到这里,我们就存储数据有这么几种方式



一、使用普通文件来存储数据

二、使用XML来存储数据



一般地,由于我们涉及到的数据量可能是很大的,普通的文件和XML能存储的数据量是远远不够支撑我们的数据。因此我们做项目都是将数据存储到数据库中的,所以我们要学习数据库的内容。



第一次接触数据库的话,我推荐是使用Mysql比较好,安装起来比较方便,配置没有那么麻烦。当然了,Oracle也顺带学学也不错。



参考视频:

方立勋JavaWeb教程

传智播客32期中Oracle教程

李兴华Oracle



参考书籍:

SQL必知必会【这本书挺薄的,涵盖了数据库的所有知识,作为入门是不错的】

李兴华Oracle



参考博文:

数据库基础知识教程



Mysql命令图:

JavaEE成长之路



SQL知识点大纲图:

JavaEE成长之路



JavaEE成长之路



当我们知道如何使用SQL,了解数据库的基本用法之后,我们就可以去学习JDBC了。



JDBC其实翻译过来就是Java连接数据库的缩写。也就是说,Java通过程序接口来连接数据库!



JDBC参考视频:

方立勋JavaWeb教程



JDBC参考博文:

JDBC教程

JavaWeb小项目

到这个阶段,我们已经把所有的JavaWeb基础学完了,我们可以做几个小项目来练手练手



参考博文:

五个JavaWeb项目练手



参考视频:

方立勋JavaWeb教程

AJAX与JSON

做完几个JavaWeb小项目之后,我们会发现即使请求的是页面上一小部分的内容,我们还是使用Servlet返回整一个页面给浏览器。这样的话是非常耗费资源的,明明我们页面上其他的数据是不用动的。因此,我们接下来就要学习AJAX了。AJAX就是能够将一小部分的数据发送给我们的Servlet,Servlet处理完数据返回给页面也是一小部分,那么浏览器只要处理那小部分数据就行了!



Servlet返回的数据如果是非常简答的话,那么我们可以直接使用字符串即可了。如果返回的数据是带关系型的话,那么我们就要使用XML了。而XML数据又过于复杂化了,因此又出现了一种通用的传输技术-JSON



JSON其实也就是字符串,它可以被JavaScript语法解析,轻量级并且很方便解析。



参考视频:

王兴魁Ajax教程【这个教程有点老了,并且我个人不太喜欢那种风格】

传智播客32期Ajax章节视频





参考博文:

AJAX与JSON


Web前端库

在之前,我们一直用的是HTML、CSS、JavaScript来做简单的页面布局,但我们发现,如果每次都是从零开始写页面的话,那未免复杂了一点。



还有就是,我们在学习AJAX和处理XML的的时候就知道,浏览器的兼容性问题,IE和Chrome等浏览器处理方式可能是会不同的。



每次使用原生JavaScript的时候,代码量的也比较高...



基于上面的问题,我们就要开始学习一些简单的Web前端库了。首先就是我们的Jquery



Jquery是JavaScript的一个库,它封装了Javascpirt很多的功能,屏蔽了浏览器的兼容性问题,在使用AJAX的时候就十分地简单了。









在学习完Jquery之后,我们发现要对页面进行DOM操作就非常简单了。Jquery也提供了动画效果这样的接口供我们使用。



可是在页面上,还是需要我们从零开始写HTML、CSS代码呀。此时,我们就可以学习ESAY-UI,BootStrap这样的前端框架了。



对于我们学习过了Juqery而言,并且EASY-UI和BootStrap都是有中文的文档的,我们是非常容易上手的。


Jquery参考视频:

传智播客32期



Jquery参考书籍:

锋利Jquery



参考资料:

bootStrap中文网

EASYUI中文网



参考博文:

Web前端库

Struts2

在进入此阶段的时候,我们已经将所有JavaWeb基础都已经学完了,是时候去学习框架了。



在学习框架的时候,我们要明确我们为什么要学框架?比如,为什么我们要学习Struts2这个框架呢??



一、我们在页面上获取数据到Sevlet上的时候,如果我们要获取的参数有多个,那么我们就必须一个一个来进行获取(当然了,我们可以使用beanUtils)。

二、在文件上传的时候,我们又要使用SmartUpload或者FileUpload等上传组件,而且用起来也没有想象中那么方便

三、如果我们的功能比较多的话,那么我们的编写Servlet的次数是会非常多的,并且Servlet上的很多代码其实也是重复的。



Struts2框架是针对我们的Controller控制层的,也就是Servlet处理那模块的。



基于上面几种原因,我们就需要学习框架来帮我们管理一些重复性的代码,这样就能够提高我们的开发效率。



参考视频:

传智播客Java32期



参考博文:

Struts2教程



参考书籍:

JavaWeb王者归来

Hibernate

学完了Controller层的框架,我们接下来学习Dao层的框架了。



我们Dao层中经历了这么的阶段

一、原生JDBC

二、JDBCUtils框架



其实我们用JDBCUtils框架的时候,已经是用得非常爽了。可是如果你学习了Hibernate的话,那么就更加爽了!



Hibernate可以说是全自动实现ORM(对象映射数据库表)的一个框架,学习了它就不用我们写SQL语句来对数据库进行操作了。



它里边封装了增删改查的方法,对应SQL中的insert、delete、select、update语句,用起来就很爽!



参考视频:

传智播客Java32期



参考博文:

Hibernate教程



参考书籍:

JavaWeb王者归来


未完待续,如果想要上面所说的视频资源的,在评论下留言。如果我有的都免费发







上一篇:使用JavaConfig和注解方式实现零xml配置的Spring MVC项目


下一篇:js算法初窥06(算法模式03-函数式编程)