由于最近手头没有JSP项目,所以暂停Hibernate和Spring的研究。个人觉得只有发现某个东西的不足之后再去学习新的东西来弥补这个不足比较好。就好比,最开始在JSP页面里面写Java代码,每次操作数据库都必须写连接数据库的语句,为了弥补这个不足,我们就开始学习Servlet。学习了Servlet之后,我们发现Servlet也有天生的不足,比如传值不方面等等,于是我们开始学习Struts。Struts很好地诠释了MVC思想,让功能的实现流程变得更加明了。但是Struts也有自己的不足,比如操作数据库的时候,每一步执行语句都必须亲自写。作为程序员,最反感的事就是每次都做相似的事情。这时我们就引入了Hibernate。Hibernate让对数据库的操作变得非常简便,存取的时候直接对对象进行操作,具体的SQL语句由Hibernate自动生成执行。说起Hibernate,有一种相见恨晚的感觉,因为是上一个项目做完之后才发现Struts的先天性缺点,所以学了Hibernate也暂时没能有用武之地。关于Spring,目前能做的就是看懂别人写的Spring代码,关于其使用还是等我发现Struts和Hibernate结合使用的缺点之后再续,所以对于J2EE的学习就暂告一段落了。

关于J2EE的学习,个人觉得一路走来实属坎坷,中间甚至一度打算以后不从事这方面的开发的。2010年12月开始接触JSP,那时候在工作室里面看HTML。简单熟悉了html之后就开始转手JSP。不得不承认,当初开始学的时候有点囫囵吞枣,上一届的学长学姐给了我们一个小的登录例子,我们大概地知道了是怎么回事。但是那时候连数据库都没有学,所以也是似懂非懂。后来某一周的周任务,通过学长学姐的指导及自己网上查阅资料,终于实现了几个小功能,当时还为此兴奋了一下的。不过现在看来,那时候真的连菜鸟的级别都算不上,因为我们甚至连CSS.DIV这些东西都没摸清楚是怎么回事,更不用提Javascript了。后来带着种种的疑问又开始接触servlet、EL表达式等等的,虽说大概知道是怎么回事,但凭个人能力做不出东西。2011年5月,借着数据库课程设计的机会我们开始接触Struts,虽然跟着视频教程把Hello world给写出来了,但是对于Struts的执行流程,脑袋里面还是一团雾水。后来的课程设计里面我做了一个小功能,但是没有用到Struts,是用很笨的方法实现了所需的功能。2011年暑假我们去三峡高科实习,接手别人留下来的一个J2EE项目,是用SSH框架开发的。我现在还记得当时对着满屏幕代码的时候的苦闷。对于刚接触Struts的我来说,Spring和Hibernate是神马东西我都不知道。在修改别人留下来的bug的时候,只是仿照别人写的代码来做改动。暑假两个月,啥都没学到,实属可惜。后来开学了,由于担任新生助理班主任忙于一些乱七八糟的事务,加之那时候大部分人都转向了Android开发,我就退出了工作室,在工作室学习JSP到此结束。

退出工作室之后的很长一段时间里,我都没有再看过和JSP有关的代码。一直到2012年3月,偶然逛到一个网站,看到里面有很多html例子就copy下来做测试。测试的过程中熟悉了以前不熟悉的html,很多很好的例子我都保存在博客里面。2012年9月,我们有门课程《毕业实习》,那时候忙于考研,而这门课程在机房进行,最后要交一个成果。那个时候,以前在工作室的同桌阿丁果断选择了做Andriod,而我,因为一直对JSP念念不忘还是选择了做JSP。于是在机房打酱油的时间里,我用servlet做了一个小系统,实现了几个小功能。

2012年10月份,我们选了毕业设计的题目。那时候在图书馆备考,去机房选课题的时候,选了一个很没技术含量的网站,想着这样既能弥补我没能独立做JSP项目的遗憾,又能保证顺利毕业。在备考的后三个月里,我一直坐在图书馆四楼A区。而在图书馆里计算机相关的比较好的书都在那一块。所以每次吃完饭回到图书馆,我就会去附近的书架拿几本书看看。那时候看得最多的是和JSP、JAVA、HTML有关的,偶尔也看看C++。到考研结束,四楼A区的JSP、JAVA、HTML相关的书几乎都被我翻过。考研结束后,在学校颓废了十天,期间开始重新学Struts2,在Verycd上找到了Struts视频。寒假回家,一个人无聊的时间里就窝在房间里面看Struts视频,到2013年开学的时候基本上能自己写代码了。2013年春季,借着在学院办公室值班能免费上网的机会,我开始做毕业设计。一个月的时间,当然也包括不少玩的时间在内,基本实现了网站前台的功能。后来考研复试,加上回家耽误了一段时间。回学校后搬进了研究生工作室,大概花了20天时间完成了网站后台。做完毕业设计我发现我对标签及一些表达式的使用很不熟悉。所以在后来导师给我的一个项目里面,大量使用Struts标签和JSTL标签及其他一些表达式,使得整个代码看起来比较舒服。但是也发现了Struts自身的一些缺点,就如文章开头说的。

至此,J2EE的学习暂告一段落。为了糊口,我决定开始研究PHP以便日后能够接到项目。Keep moving!!!

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1258512

我的J2EE学习历程的更多相关文章

  1. 我的Linux学习历程:那些我看过的Linux书籍们

    [+]查看原图http://www.ituring.com.cn/article/119401 来北京工作已经一个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为基本的计时单位.有时茫 ...

  2. StudyJams学习历程总结

    Study Jams 是一个学习 Google 在线课程的活动.该活动由学员自发组建课程学习小组,旨在带领小组成员入门 Android 开发,最终将 Android App 上载至 Google Pl ...

  3. 3、J2EE学习推荐书籍

    3.J2EE学习推荐书籍       J2EE的学习应该循序渐进,一本好书会很快上手和深入.在学习J2EE之前,应该学好SQL,基本上,程序设计都会跟数据库打交道.如果SQL没学好,就如同房子没有基脚 ...

  4. 大三仍是Linux系统小白的我给大家讲讲学习历程

    我与Linux结缘是在大三的时候.我与Linux熟识是在偶然遇到<Linux就该这么学>的时候.因为我是电子信息工程专业,在高年级时开设了嵌入式课程,嵌入式系统是一种专用的计算机系统,作为 ...

  5. 登录模块的进化史,带大家回顾java学习历程(二)

    接着前面的登录模块的进化史,带大家回顾java学习历程(一) 继续往下面讲 前面我们去实现登录功能,都是想着要完成这个功能,直接在处理实际业务的类中去开始写具体的代码一步步实现,也就是面向过程的编程. ...

  6. J2EE学习从菜鸟变大鸟之九 深入浅出理解 Servlet-----实例解析

    关于Servlet的基础内容在前面已经和大家分享过了,参考J2EE学习从菜鸟变大鸟之七 Servlet,现在结合到DRP中学习,深刻的体会Servlet起到了枢纽中转的作用,控制逻辑(到MVC中更像是 ...

  7. 来自一个电子狂的stm32学习历程

    文章尾部有学习时的一些视频资料在学的可以看看那么我们就进入今天的主题我stm32的学习历程 在学习了51单片机之后,早已经对单片机这个东西甚有了解了,所有不管是从内部资源,还是一些常见应用,都可以说的 ...

  8. Linux学习历程——Centos 7重置root密码

    一.自述 最近刚刚接触linux,因为我设置密码比较随性,把自己做系统的时候设置的root密码给forget,每当系统崩溃,重新把虚拟机备份还原后,就面临无法登陆的尴尬情况,只得重置root密码,好了 ...

  9. Nginx系列0:Nginx学习历程

    Nginx学习历程 一.初识Nginx 1.Nginx适用于哪些场景 (1)静态资源服务 通过本地文件系统提供服务 (2)反向代理服务 Nginx的强大性能 缓存 负载均衡 (3)API服务 Open ...

随机推荐

  1. WordPress 博客文章时间格式the_time()设置

    国外设计的WordPress 主题里的文章的时间格式是类似“十一月 21, 2010”这种格式的,而中国人习惯的是年在前,月紧跟其后,日在末尾,所以看国外的就显得很别扭,但是我们可以通过修改WP时间代 ...

  2. Web前端性能优化教程06:减少DNS查找、避免重定向

    本文是Web前端性能优化系列文章中的第六篇,主要讲述内容:减少DNS查找.避免重定向.完整教程可查看:  一.减少DNS查找 基础知识 DNS(Domain Name System): 负责将域名UR ...

  3. 查找Linux系统中的占用磁盘空间

    目录的来查看空间占用情况 du -sh /* 先看看根目录下面 让文件夹下的文件让文件按大小排序 方法一:# ls -lhSl 长格式显示,h human readable模式,大小单位为M,G等易读 ...

  4. Android Studio 连接提交Git

    转载:http://www.jianshu.com/p/061d24a6b798 之前一直在使用SVN的时候,就听说Git是个很强大的版本控制工具,最近比较闲,又赶上在痛苦的学习着使用Android ...

  5. js-JavaScript高级程序设计学习笔记2

    第四章 变量.作用域和内存问题 1.ES变量包含两种不同数据类型的值--基本类型值(5种基本数据类型)和引用类型值(保存在内存中的对象,所有引用类型值都是Object的实例) 2.只能给引用类型值动态 ...

  6. CF 702B Powers of Two(暴力)

    题目链接: 传送门 Devu and Partitioning of the Array time limit per test:3 second     memory limit per test: ...

  7. Socket与SocketServer结合多线程实现多客户端与服务器通信

    需求说明:实现多客户端用户登录,实现多客户端登录一般都需要使用线程技术: (1)创建服务器端线程类,run()方法中实现对一个请求的响应处理: (2)修改服务器端代码,实现循环监听状态: (3)服务器 ...

  8. Yocto开发笔记之《嵌入式linux libcurl编程》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...

  9. python学习笔记-(六)深copy&浅copy

    在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用. 1. 赋值 赋值其实只是传递对象引用,引用对象 ...

  10. 查看apt-get安装软件的版本

    apt-cache search name 查询 apt-get install name 安装 dpkg dpkg dpkg-checkbuilddeps dpkg-genchanges dpkg- ...