JAVA自学之路 一:学会选择
为了就业,很多同窗参加各类各样的培训。
决心作软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。
那么究竟应该选择什么方向呢?
个人意见是,不要太过相信各类培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把本身当成学生,不要把本身的未来交给别人,学会运用本身的眼睛去观察,去了解这个世界吧。
每一个培训机构都会宣传本身的好处,并不能说明大的趋势。
一些新闻文章颇有多是枪手写的,没必要太过相信。
国外背景的教师和课程,未必适合你。
那么怎么才能肯定本身未来的方向?如何才能从纷繁复杂、或真或假的数据世界中挖出一条路?
我讲一个经过招聘网站的观察方法。
能够到各类招聘的网站上查询信息(能够到google上查询招聘的网站),例如:
http://www.51job.com
http://www.chinahr.com
http://www.zhaopin.com
以及csdn的招聘频道等
还有一个网站也不错,http://www.jobui.com,综合了各大招聘网站的数据。
这些数据都是最真实不掺假的原始数据,你能够每隔一段时间搜索一次,一些规律就会被总结出来了。
好比说我在http://www.jobui.com中搜索java,全国大概提供了3万个职位。
而后要多翻几页,这样不只可以看清楚大概有多少是有效的职位,并且还能够看清楚用人单位最关心的技能是什么,这个很重要,决定着你未来要花多少时间和精力在特定的知识点上,好比说swing,搜了一下,全国只有700个左右的职位,仔细读了一下,也并不是全是有效的职位,花太多时间和精力在这个上面就不值得了,固然本身感兴趣或者为了研究的话另当别论。不过若是是为了快速的就业,把太多时间和精力花在不少职业生涯的前1、二年用不到的知识上就太惋惜了。
同时,并不是某一个行业的职位数目少,就不能看成一个方向进行选择,好比.NET,我搜索到的职位数是1.6万左右,比java少,是否是就选java了呢?不必定,由于java职位虽然多,可是可能竞争者可能也多,有些方向虽然职位数很少,可是和你竞争这些职位的人数量也少,不见得就不能选择。
不过,若是某一个方向的职位数目过少,你可就要当心了,选择这样的方向风险会很是大,如J2ME。
我我的以为java/J2EE、.net、嵌入式开发是不错的三个方向。
若是非要在java和.net中选择的话,我我的是推荐java的,缘由:
1:Java可以开发linux、unix服务器上的程序
2:JavaEE和.NET在企业应用方面的关注点是差很少的,可是学习了java若是未来想转到.net上会比较简单,几天的学习而后上手开发应该是问题不大的,可是反之就不行了。 固然若是有了些经验以后,你就会发现语言或者平台再也不是技术上的阻碍,一些原理性的东西学到手,而后再加上项目经验,使用什么平台,反而不是最重要的。不过若是非要用一种平台进入企业开发的领域,至少在目前,2007年9月,我推荐java。
彻底能够不一样意个人观点,可是无庸置疑,若是是为了就业,多到招聘网站阅读阅读职位的信息,对你未来的方向和学习是大有益处的。
选择是最痛苦的,看看《天生购物狂》中的刘青云就知道了,不过既然没法逃避,就做出本身的选择吧。
每一个人都会受到别人的影响,在做出决定以前,要想尽各类办法让本身理性一些吧。这样,你的选择会离正确的方向更近一些。
JAVA自学之路 二:JAVA自学路线图
有很多的同窗发信给我,和我探讨java的自学过程应该是什么样的,毕竟有不少人由于各类各样的缘由不能参加培训。我试着给出本身的看法,抛砖引玉吧。
这个路线图是给那些为了就业的人准备的,若是只是兴趣,不必定照这个走。
这里只是讲了路线图,关于路线中的各个阶段,学到什么程度,如何学习等,能够参考后面的JAVA自学之路 七:《路线图明细》。
首先要学JavaSE,这是无庸置疑的。
与此同时,是的,与此同时,和JavaSE的学习同步,建议你们研究一下数据结构与算法。
在这儿以后,你能够选择向J2ME、或者Java GUI、Socket编程等方向努力,可是经过第一篇的办法,你能够很容易就将这方向过滤掉(永远不要忘了咱们是为了就业),好吧,暂时和它们诀别,仍是向着J2EE的方向前进吧。
在JavaSE完成以后,能够试着完成一些小项目,同时关注一下设计模式的内容,没必要强求本身可以彻底掌握各类细节,往前走吧。
掌握一种编程工具,好比说Eclipse。
数据库,能够选择使用Oracle或者MySQL开始。
JDBC,用Java链接数据库。
能够选择在这个地方切入Hibernate,也能够选择在Struts以后。
HTML CSS JavaScript,这些东西是作web项目必需的内容。
Servlet JSP,服务器端必需。
XML AJAX,新的流行趋势不能不了解。
做一些小项目吧。好比BBS、留言系统、学籍管理、商城等等,随便着一些业务逻辑比较简单的来作一作。
Struts,MVC的典型应用
Hibernate,OR Mapping的典范之做。
Spring IOC + AOP, 面向对象 + 面向切面,完善的旅程。
把之前本身的小项目加入Struts、Spring、Hibernate的元素吧。
去研究各类商业项目的业务逻辑吧,才能在你的简历中加入浓重的一笔。
EJB3.0,java在走了不少弯路后的回归之做,值得研究。
SOA,业界铁定的将来趋势,要牢牢跟随。
在后面,我会告诉你每一步的学习方法和学习重点。
JAVA自学之路 三:要动手
不管如何,请坚持不懈的动手实验!
学习Java要动手,仅仅是看和听是不可以学好编程的。
总有同窗来信问咱们这样的问题,说:"老师我看了视频了(下载:http://www.bjsxt.com/download.html),但是怎么一动手就没有任何思路呢?"
对此,我通常都会说不要着急,若是你只是看了视频就想行云流水的话,那老师这些年的锻炼真是白费了,这么多年的苦练才能略有些行云流水的感受,你一朝一夕就想本身可以达到,不是太奢侈了吗:)
做为编程的过来人想一下,当年本身学编程的时候是何时有思路的呢?至少也是照猫画虎画了一段时间以后吧,我本人是在某一个领域画虎画了上万行代码的时候才慢慢有本身思路的。就像写做文,要有本身思路老是通常来讲要通过几个阶段,首先学习词汇,而后学习造句,而后大量阅读别人的文章,本身模仿着写一些,逐渐的经验积累,才能造成本身的思路。学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。
因此,动手吧,跟着作,一行一行的跟着敲,一个项目敲完了,好比坦克,再试着加一些本身的功能,按照本身的思路敲一些代码,收获远比干听大的多。
若是遇到,暂时对于一些思路不能理解的同窗,我通常都会劝告说,动手写,先写代码,量变会引发质变的。而这种质变的确发生过很多次。
提醒一句,要理解代码思路以后再跟着敲 ,背着敲,千万不要左边摆着别人的程序,右边本身一个一个子母的写,这就再也不是程序员了,成了打字员了。
纸上得来终觉浅,因此:
别问那么多,别想那么多,动手写吧。
JAVA自学之路 四:要事为先
对待人生的任何事情都要:抓大放小,要事为先
对于一个之前历来没有接触过java的人,java无疑是庞大的,彷佛每一个领域均可以拓展开来都是一片开阔地,每个领域要想深刻接触到每个细节所耗费的精力都是巨大的。这个时候你们都胸怀壮志,两眼发光的盯着每个崭新的知识点,碰见了任何一个知识点都巴不得抠的清清楚楚,明明白白。
难道这有什么不对吗?
个人意见是,没什么大毛病,可是学习效率过低了!
咱们推荐的学习方式是:抓大放小,要事为先。
好比说学习J2SE的时候,学到GUI这一章,有的同窗认为,既然学到这儿了,咱们去把SWING细细的了解一遍吧;还有的同窗,遇到了在Linux下的Shell编程,就巴不得把Shell先学成专家才肯,或者是才敢,继续往下学习;有没有过这样的感受,一本书的上册没有学好,觉着下册内心也没底儿,甚至非要把上册复习一遍才敢继续学习。
若是你也是这样,要去看看心理医生啦,没准儿会有洁癖的毛病:)。
任何事情都要追求完美才敢继续日后进行,是一种性格缺陷
大胆的放弃一些东西吧,有失才有得,把本身有限的、宝贵的精力用在对于就业直接相关的地方,这才是最有效率的学习方式!等你参加工做,有了可持续发展的事业动力和经济基础,有时间有精力闲的没事儿干的时候,再去研究那些其它吧。
曾经有一个故事,说得是产能和产量的关系。
一我的喜欢读书,读了一生,无所不通,这时候要作任何工做均可以,他的产能到了极致,可是,他老了,即使天天产出大量的东西也不能维持多久了,一生的产量并无多少。
另外一我的直接工做,忙,每天在机器旁日复一日,作了一生,没时间学习和进修,能够想象,产量能有多大呢。
人的一辈子,要锻炼产能,也要及时产出,引擎要转,也要停下来加油,这二者平衡的越好,你的贡献和产量就会越大。若是钻研的东西和产能目标(或者说近期的产能目标)无关的话,要舍得放手。
因此,对于SWING,暂时先扔在一边吧。
对于shell,对于各类协议过于详细的细节,对于喜欢的游戏编程,对于javascript各类华而不实的效果,都暂时和它们分别吧。
一切和咱们的直接工做目标关联不大的东西,扔在一边或者弄清楚到足够支持下一步的学习就能够了。
那这样岂不是妨碍我成为通晓各类细节的高手了吗?
我一贯不认为一我的掌握了不少不少知识点的细节就是高手了,一我的若是告诉你,回字有四种写法,你会认为他是高手吗? 绝不客气的说,如今咱们所教授的全部知识细节在网上或书中均可以找到,只要你肯花时间花精力去动手试,去钻研,没有什么不能掌握的。struts、spring你能掌握吗?固然能!可是若是把时间花在spring的各类细节的研究上,花在研究中国企业应用不普遍地的spring mvc上,这个精力就太浪费了,并且学习的积极性会受到打击,谁愿意成天泡在细节的蜘蛛网中挣扎不出来呢?谁愿意每天经历风雨却老是不能见到彩虹呢?
盖房子,要先建骨架,再谈修饰。
画山水,要先画结构,再谈润色。
认识一台结构复杂的机器,应该首先认清楚脉络,而后再逐步认识每个关节。
为了应付从小学到大学的考试,咱们背了各类各样的不该该提早掌握的细节,同时也养成了见到细节就抠的学习习惯。而如今,是到改改的时候了。
请在合适的时间,作合适的事情吧。
把时间和精力花在做项目上面,花在写做品以及锻炼解决问题的能力上面吧,这是迈向高手的正确的并且快速的方向。
我一直不认为一个课程提供了不少不少的细节就是优秀的价值高的课程了,掌握必要的细节,这个不含糊,至于其余,或者经过视频给出(这样能够给出更多的细节,可是不占上课时间,课上只讲重要的、必要的细节知识),或者在掌握了自学的能力后本身可以查出,这才是正途。
当你看书到某个地方暂时不理解的时候的,暂时放手吧,追求一些行云流水、天然而然的境界吧,只是不要停下前进的脚步,不要被大路旁边的支根末节干扰了你前进的行程,项目,真实的项目,这才是目的,就在不远的前方。
陶渊明读书,叫作“不求甚解”,但他是大诗人。
诸葛亮读书,老是“观其大略”,但他是大政治家。
做研究的,是在肯定了方向以后才详细的研究深刻的东西。
到了庐山,脉络形状扔在一边,盯着一棵棵小草、一粒粒石子的看,怎么样才能识得“真面目”?
做为应用型的人才,是研究回字的n种写法仍是抓紧时间向着主要应用的方向努力,请本身做出抉择。
以项目驱动本身的学习吧,当把握了技术的脉络以后再去补充细节的研究,是正途。
这辈子就不研究其余的方向了吗?
固然要研究!可是在未来合适的时间再说吧。
因此,抓大放小,要事为先!
那么,在JAVA的这些课程中,哪些才是大,才是要事呢?请继续读下去。
JAVA自学之路 五:问题解决之道
既然是学习,就不可能不遇到问题。
既然是自学,就没有方便的和老师探讨的机会。
那么,遇到问题以后,环境配不通,程序调不过,运行不正常,碰见这些恼人的问题的时候,该怎么办呢?
首先我要恭喜你,碰见问题,意味着你又有涨经验的机会了,每解决一个问题,你的JAVA经验值就应该上升几百点,问题遇到的越多,知识提高的越快。
可是老是解决不了也是很恼人的,怎么办呢?
我通常要求咱们的学生都是这样来进行的。
当你遇到一个问题的时候:
1:要仔细的观察错误的现象,是的,要仔细
有很多同窗的手很是快,在编译一个程序的时候,报了一大堆的错误,扫了一眼以后就开始盯着代码一行一行的找,看清什么错误了吗?没有!
有的时候安装软件出问题了,一个对话框弹出来讲出错了,立刻举手问老师:“不得了了,出错了,出错了”。
“什么错误?”
“还没看呢?”
这都是典型的不上心的方法!请记住,学习编程并非一件很容易的事情,本身首先要重视,要用心才能够。
在开发中,仔细观察出错信息,或者运行不正常的信息,是你要作的第一件事。
读清楚了,才能在之后的步骤中有的放矢,哭了半天,总要知道哭的是谁才成。
这里又分三种状况:
A:错误信息读懂了,那么请进入2步:要仔细思考问题会出在哪些环节
B:没读懂,愣是一点没看懂,进入第4步吧:google
C:读了个半懂,有些眉目可是不太能肯定,第2步和第4步结合着来。
2:要仔细思考问题会出在哪些环节(重要)
当你读懂了一个问题以后,要好好的思考这个问题可能会在哪些环节上出错。
一辆汽车从总成线上下来,车门子关不上!
哪错了?你怎么查?
固然是顺着生产线一站一站的查下来。
程序也是同样的,也是一系列语句完成后产生的结果。
写一个网络程序,老是发现服务器端打印不出接收的数据,有几个环节会出错?
仔细分析这个现象的环节:
客户端产生数据->按“发送”按钮->发送到服务器->服务器接收到后打印
这几个环节都有可能会出错:
有可能客户端根本就没产生数据,有可能发送按钮按下去后根本就没发出去,或者发出去的不是你产生的东西,或者根本就没链接网络,或者发送出去服务器没有接收到,或者接收到以前就打印了等等等等。
学着去这样仔细的分析程序的环节和这些环节可能会产生的问题,你的经验值定然会大幅度快速的提高,这样作很累人,可是一件事情若是作下来一点都不累的话,这个东西还有价值吗?
在网页A输入了一我的的名字,提交到B,首先存储到数据库,而后再读出来,发现乱码!怎么办?
固然是分析环节:
客户输入->HTTP发送->B接收->存储到数据库->读出->展示到网页
每一个环节均可能出问题,怎么才能知道哪里出的问题?继续往下读。
3:如何定位错误(重要)
分析清楚有哪些环节以后,下一步就是定位到底什么环节出错了。
定位有如下三种办法:
A 打印输出,好比java的System.out.println(),好比js的alert(),这种办法经常使用,必须掌握
B Debug,能够参考咱们的视频《坦克大战》,详细讲了Eclipse的调试。
C 删掉一部分调试一部分,也就是去掉一部分的功能,作简化,而后调试剩下的功能,JSP和JavaScript经常使用。能够参考咱们的视频《BBS》等
这些我说的比较简单,详细了解的话请关注如下咱们的视频吧,在近期会逐步的将一些知识点的视频 进行免费的公布,http://www.bjsxt.com/download.html
4:若是还不行,google吧
还查不出来?恭喜你,你遇到的错误是值得认真对待的错误,是会影响你学习生涯的错误,问一下google或者百度吧。照着下面的方法查查看。
通常来说,搜索引擎能够搜到各类知识点,我曾经跟同窗们开玩笑说:“学会了怎么google或者baidu,其实不必跟老师学了,本身全都搞懂了,尚学堂是不必来的。”固然,只是玩笑,培训的做用有三个:
A:系统化知识
B:真实项目锻炼经验
C:少走弯路,节省时间
不知不觉开始作广告了,请原谅,处其位谋其事,总得为尚学堂说点什么:)
言归正传,如何查搜索引擎?
先精后粗,首先先进行尽可能精确的查找,好比一个错误,SocketException,你怀疑它是在connect()方法出的问题,那么固然是选这样的关键词java connect SocketException
先中后英,本着以解决问题为主的想法,练习英文仍是先放在一边吧,首先应该在中文网页中查询,还不行的话,搜索英文的吧,最近的尚学堂课程中会带你们阅读英文的书籍。有不少东西就像一层窗户纸,远看灰蒙蒙怪唬人的,你壮着胆子一捅,它就破了。阅读英文的书籍就是如此,不是想象中的那么困难:)宁肯在沙场上战死,也不能被吓死不是吗:)
信息筛选,搜索出来的结果不见得可以彻底匹配,建议你们多阅读前几页的搜索结果,多打开几个网页看看,不过,个人经验是超过3页通常就没意义了,因此超过3页尚未找到合适的答案,或许应该调整一下关键词,或者放粗整个搜索的结果了。
常常的进行知识难点的查询,若是一个问题牵扯的面比较广,就干脆到网上搜索一些相关的专题,好比“java 乱码 mysql” “oracle 建立用户”等等,若是有必要,不要犯懒,勤动手写一些小小的测试程序,来弄明白知识点的细节。这也是涨知识的重要的途径。
5:什么?还不行?那么就BBS吧
若是实在还不行,就到BBS上面问一问高手吧。
到哪一个BBS上?
google或者百度不就好了么:)关键词“java论坛”“java bbs”
而后在搜索结果里好好的看看那些活动频繁的论坛,之后就是你常常光顾的地方了。http://community.csdn.net就很不错。
向别人提问是很是须要技巧的!
曾经有人问我这样的问题:“请问如何才能学好java呢?”
这个要求太泛泛了。
还有人给我一段代码甚至jar包也寄过来,而后说老师的个人代码中有个错误您帮我查查:(
我没有办法去花大量的时间创建环境去调试一个还不知道存在不存在的错误!
还有人在BBS上问这样的问题:“是否有人能帮我完成一个完整聊天的程序?请帮我写一个登录模块吧!”
这个要求有些过度了,有人帮你作是你的运气,没有人帮你是正常反应。
向别人提问,应该首先肯定你已经作了本身应该作的事,简单说是我前面列举的1,2,3,4步你都做过了,而后再求助于人。不要没有通过认真思考就草率的向别人提问,本身也不会有长足进步的。
那我该怎么样向别人提问呢?
在google或百度搜索《提问的智慧》,你会找到答案。
在这里我给出一个连接http://community.csdn.net/IndexPage/SmartQuestion.aspx,磨刀不误砍柴功,先花点时间去阅读一下吧。
获得别人的回答,要懂得感恩。
不须要去写信感谢,不须要支付费用,不须要那些花言巧语,作到下面这一点就够了:
当你逐步成为高手的时候,要回答别人在论坛上提出的问题,有时间有精力的前提之下!
6:还解决不了?问老师吧,这个只能是在你参加了培训的前提下了。
7:还解决不了?天哪,是否是思路从根上就搞错了?写信给我,让我也学习一下,共同进步吧。mashibing2004@sina.com
JAVA自学之路 六:项目的自学
如今就业竞争的激烈程度已经远远高于当年了,记得我当年毕业时,一个会编程的毕业生站到台上,大声问道:“我会ASP,月薪5000有没有人要?” 台下的企业立刻哗的举起一大片手:"我要我要 !"
那时 没有任何项目经验也会有人提供学习的机会:)
这种好日子恐怕一去不复返了(有些夸张,但无疑当时找一份不错的工做是比如今要容易的多)
而如今,即使是各类必要的知识你掌握的差很少了,但还有一座大山横在你的面前,那就是-项目经验。
有经验的程序员都知道,学习编程的最有效率的方式,恐怕就是把你扔到一个项目组,连滚带爬的作下一两个项目来,你立刻会发现全部的知识点全都连到一块儿了,再也不是分散的,而是造成一个总体了。那种感受是仅仅深刻钻研知识点而不写真实项目的人所不能体会的。一个项目就是一根绳子能够把大片的知识串到一块儿。
若是想锻炼实际开发的能力而不只仅是背诵或者了解一些知识点,若是想成为真正的好手而不只仅是背诵“回”字有几种写法,那么,做项目吧!
目前,各类编程的知识点变得愈来愈容易掌握,按照《JAVA自学之路 五:问题解决知道》中的各类办法也能够逐步积累本身知识的广度和深度,那如今什么才可以体现水平的不一样?固然是项目经验。
目前,尚学堂的课程已经超越了知识点的研究和罗列,咱们将在将来的时间里逐步公布各个知识点的视频,包括SSH、EJB等,这样作有两个好处:首先自学的同窗能够免费获得原来商业培训的内容,这样起码能够节省一些时间,省一些力气。其次尚学堂本身能够更加专一于项目上。
目前尚学堂的项目写做占了课程50%左右的比重,尚学堂的项目也早已经超越了简单的MIS系统的概念,逐步的成为综合了搜索引擎、工做流、SCA/SDO、Linux/UNIX、大型数据库系统、设计模式、架构模式、负载均衡等各类深层应用的综合大型项目而且采用手把手式的教学方法,作的更加的深刻和细致,从如今看效果至关好,最近142班的就业就彻底证实了这一点(了解142的就业状况),咱们的计划是最近逐步将项目比重提高到70%以上,相信效果会更好。
签于公司的规定,咱们并不能将全部的项目实战都录制成视频来公布,可是已经公布的项目实战也是很是的有价值的:(http://www.bjsxt.com/download.html)
1:Chat & Tank系列
2:BBS
3:Shopping(近期公布)
那么若是自学咱们应该怎么样才能学习项目的开发呢?
一个比较有效的办法是,能够在现有项目的基础上作的更深刻一些,好比在你按照视频完成了BBS以后,能够增长一些其余的功能,例如注册/积分/精华/搜索/贴图等等,在完成了Shopping以后,能够增长一些评论/排行/统计/存货等等方面的业务逻辑,尝试用本身的技术将他们做出来,这样既积攒了项目经验,又记住了知识点。
那么如何才能肯定我要写什么样的业务逻辑呢?
应该讲这对于一个初学者是很是困难的,一些简单的系统,好比说BBS、Shopping、图书管理等等,它们的业务逻辑很容易肯定,去浏览和参考一些现成系统的功能,很容易就能了解了。可是对于商用的大型系统,光是了解业务逻辑自己就会花费大量的精力,若是有时间有精力有财力的话,仍是建议考虑一下咱们的培训吧,这样经验的积累和薪水的提高会更快,从之前的统计数据看很是容易就能够回收这笔投资(替尚学堂的广告,必须得写,请见谅,但保证真实)。
若是条件不容许,那么就按照上面的方法来学习项目吧,不要由于暂时不能接触更大型更深刻的项目而气馁,记住:机会老是青睐有准备的头脑,努力吧。
JAVA自学之路 七:路线图明细
下面给出第二节《JAVA自学路线图》
注:
1:下面大多数的知识点咱们已经公布了视频或者会近期公布(几个月以内),请你们关注一下这个网址http://www.bjsxt.com/download.html,能够按照该页面的提示,用电驴进行下载
2:这里是为方便你们自学给出的列表,请你们不要同尚学堂的课程画等号,下面的内容要比实际授课简单不少,另外不少知识是融汇在项目开发中的,适合面授,不适合自学。
一:J2SE
面向对象-封装、继承、多态
内存的分析
递归
集合类、泛型、自动打包与解包、Annotation
IO
多线程、线程同步
TCP/UDP
AWT、事件模型、匿名类
正则表达式
反射机制
2:数据库(Oracle或者MySQL)
SQL语句
多表链接,内外链接, 子查询等
管理表、视图、索引、序列、约束等
树状结构存储
存储过程、触发器
数据库设计三范式、
3:JDBC
JDBC基础
链接池
树状结构存储与展示
DataSource & RowSet
JDBC链接Oracle及MySQL
4:HTML_CSS_JAVASCRIPT
html、css、javascript基础语法
JavaScript Form判断
Dom编程基础(事件处理等)
JS经常使用效果如TreeView、下拉联动等
JS学习方法
JS调试方法
DreamWeaver初步(创建HTML、Table、Form、CSS)等
5:Servlet & JSP
tomcat基础
servlet基础
web.xml配置基础
web application的结构
servlet生命周期
request response等经常使用方法
ServletContext类
HTTP协议基础(GET POST)
Cookie
Session
Application
JSP的几种语法(包括JSTL等)注意在项目中练习,不要拘泥于语法细节而裹步不前。
6:Struts
多层架构理论
Model 1 and Model 2
Struts基本概念
MVC
Action与业务逻辑类的关系
在Struts与JSP之间传递数据
Struts处理流程(控制流)
Struts TagLib(了解经常使用的)
JSTL
ActionForm
字段收集
上传文件
类型转换
DTO
动态Action Form
验证框架
ActionForward 转发与重定向
动态生成ActionForward
全局与局部的ActionForward
Action Forward Scope
UnknownActionMapping
Action的线程安全
I18N
如何切换语言环境
Struts异常处理机制 程序处理 自动处理 自定义异常处理器
Struts的多模块配置
7:XML
(XML/XSL、XSLT/DTD、SCHEMA等基础的概念、关于Java的编程能够暂时扔在一边)
8:Hibernate
OR Mapping原理
Hibernate基础开发步骤
Hibernate基本接口(重点Session)
普通属性映射
关联关系映射
Native SQL
inverse lazy cascade
继承关系映射
HQL
性能优化 一级缓存 二级缓存 查询缓存
事务与并发 悲观锁、乐观锁
OpenSessionInView
CurrentSession
(至于JTA、联合主键、天然主键、动态主键、Any类型 Creteria Queries Intercepter and Event 自定义类型等,能够暂时扔在一边)
9:Spring
IOC/DI
Spring配置
Spring架构
AOP及Spring AOP
声明式事务(AOP)
Spring + Hibernate Spring支持Web
Scope
(其余的Spring模块对于自学来讲能够暂时扔在一边)
10:EJB3.0
J2EE架构基础(JTA JMS等)
EJB基础(地位及基本理论、分类等)
Annotation
Ant编译与部署EJB
Session Bean
EJB的依赖注入
Persistence API
(能够用JBoss学习EJB3.0)
11:至于SOA,对于自学的同窗来讲,暂时不用特别关注。
梳理一下,你就会发现东西不是想象中的那么多呀!
建议你们优先学习咱们公布的视频,而后再去找参考书,由于这个时候就能分辨出来哪些书适合你了。
那么,如何才能找到好书呢?一个简单的办法,在卖书的网站上,好比http://www.china-pub.com,搜索你想了解的知识点好比"javascript",按销售排行,排在前几位的,应该就是不错的,记下书名,到书店阅读几章,合适你的就是好书了。没钱买?简单!还有什么google + 电驴找不到的资料吗:)
写了这么多,有一些是广告,在其位,谋其政,但并无讲假话,还望你们理解,若是你们在自学的过程当中有什么问题的话,能够写信给我mashibing2004@sina.com或者training@bjsxt.com,我愿意随时聆听你们的教诲。
若是是技术问题,记得首先要阅读《JAVA自学之路 五:问题解决之道》哦 :) javascript