以struts2.0为对象说
正确的学习方法不仅能够让你事半功倍,也能够让你更加接近真理。在这一系列的文章之初,我想首先说说学习一个开源框架的途径。这些学习方法,不仅适用于Struts2,我想同样适用于许多其他的开源框架,比如说Spring,Hibernate等等。而这些学习方法,也是我个人的一些心得体会,希望对初学者或者正在为学习开源框架犯愁的朋友带来一些启示。
阅读、仔细阅读、反复阅读每个开源框架自带的reference
这一点是学习一个框架最最重要,也是最最一开始需要做的事情。不是事实上,无数的程序员对此并不在意。程序员总是以种种理由不仔细阅读reference:
1. 看英文文档太吃力
应该说阅读英文文档是每个程序员的基本素质之一,这就跟调程序需要耐心一样。如果你连调试程序的耐心都没有,那么乘早放弃程序员这个行当吧。其实阅读文档,尤其是英文文档,也是程序员的基本素质,这个素质是一点一点积累培养起来的。所以,对于那些实在觉得吃力的朋友,我的建议是结合中文文档一起看。好在满江红的开源支持者为你精心做了许多很有价值的翻译,例如Spring,Hibernate等都有对应的中文文档。但是我依旧认为,看中文文档,必须和英文文档对照,否则你就可能迷失在许多的语义不匹配上。
2. reference实在太厚而抓不住思路
耐心,耐心,还是耐心。从reference的质量而言,其实多数的开源框架的reference都是相当优秀的。尤其是Struts2,基本上都是一个一个的专题wiki文章拼起来的文档。至于说到Spring,那只能培养你的耐心了。
我之所以强烈推荐大家仔细阅读开源框架自带的reference,主要基于以下的两个原因:
1. 这些自带的reference多数出自这些开源框架的作者之手。你说还有谁能够比他们自己更了解他们自己的产品呢?自己写的程序,到底有哪些优点,如何使用,自己肯定是最最清楚的,所以要说到权威,不可能有任何的文档比自带的reference更加权威。
2. 自带的reference几乎很少犯错,所以不会给你带来什么的误导信息。不仅如此,许多的reference已经为你总结了许多框架使用过程中的最佳实践。有那么好的事情,为什么我们不直接去看这些reference来获得第一手的资料呢?
当然,很多人看reference会觉得很枯燥。没关系,我的建议是,多看几遍。第一遍,你可以采取scan的方式,目的是了解框架的大概。第二遍,挑重点的章节仔细阅读,并且辅以一定的代码实践。第三遍,带着碰到的问题阅读,在文档中寻找答案。
少读、精读网络教程,坚决不读有价书籍
对于很多初学者来说,看reference这种方式他们的接受程度很低。相反的,他们反而会去转向一些书籍和网络教程。针对这些学习材料,我就不得不带着有色眼镜去看待了。
目前市场上任何的有价书籍,我认为完全没有阅读的必要。这些书籍的一大特点是贵,将花费你大量的银子。而且这些书籍错误繁多,所挑出的示例也基本上毫无实践意义。更加可悲的是,这些书籍中的很多示例,作者在写的时候根本不动脑筋,也不会包含程序开发中的一些最佳实践,甚至会给很多读者以:“程序就是这么写的”这样的误导。
网络上还有很多原版的教程,例如《XXX in Action》系列。《XXX in Action》系列的书籍在市场上深受好评。这些系列的书籍我很多都读过,我并不认为这一系列的丛书相对于框架自带的reference有什么过人之处,有某些地方的理解也带有一些作者个人的感情色彩。其实每个人写书或者写文章都会带上自己的感情色彩,这本不是什么坏事,不过既然已经有了 reference,为什么我们要舍近求远呢?当然,不得不说,这个系列的书籍还是写得相当不错的,只是相对reference而言,不如 reference来的好了。
同时,网友也提到了很多网络教程。网络教程,尤其是中文的网络教程,基本上都是网友的经验之谈,也有写成系列文章的。对于网络教程,我的意见是:少读,精读。因为网络教程是网友自发的,而我不得不说,许多网友写的网络教程是一塌糊涂,误导世人的。同时,也有很多网络写的网络教程相当不错,可以作为入门级别的参考资料。但是对于初学者来说,根本很难分辨其中的好坏真伪。完全凭借运气去赌大小,押宝押对了就对了,押错了就自认倒霉。所以,针对网络教程,最好是带着问题去读,去搜索你的答案,而不是当作核心文档来阅读。
搭建环境运行每个开源框架自带的sample项目
我不知道有多少初学者真正的去跑过每个开源框架自带的sample项目。按照我的经验来说,这绝对是一个学习的最佳途径。
以Struts2为例,Struts2的根目录下有一个apps的目录,里面有struts2-blank-2.0.11.war,struts2-showcase-2.0.11.war,struts2-portlet-2.0.11.war等war包。你只要把这些war包放到任何的application server的运行环境下即可运行。比如,你可以放到Tomcat的webapps目录下,启动Tomcat,你就可以直接访问到一个内置了众多Struts特性的项目了。
其实你可以从这些项目中获得许许多多有用的信息。不仅如此,一旦你在使用Struts2的某些特性的时候发生了无法解决的困难,你往往也能从这些项目中找到一些解决问题的方案。更加能让你放心的是,至少这些项目表达了Struts2的作者原本的意思,你只要按照它的sample来写代码,总不会错到哪里去。
在这里,我简单举例来说明你可以从这些项目中学到些什么:
1. 如果你仔细学习struts2-blank-2.0.11.war这个项目,它可以告诉你如何搭建一个最最简单的Struts2的项目;它还会告诉你,Struts2至少需要依赖哪些jar包(请以后不要再为jar包错误而苦恼);同时,也给你做出了一些范例,web.xml怎么写,struts.xml又怎么写。
2. struts2-showcase-2.0.11.war这个项目,你则可以看到Struts2的特性的大杂烩,这对于你看reference是相当有帮助的。比如说,你在看文档时看到了"文件上传"的章节,那么你就可以参考项目中的upload子目录。相当于你一边看文档,一边已经有一个现成的跑得通的例子在这里提供给你。这是不是要比那些所谓的网络教程更实际呢?
3. struts2-portlet-2.0.11.war则给出了在Portal环境下的Struts2的应用。
所以,综合来说,框架自带的项目绝对是你学习的第一手资料,你基本上不需要舍近求远得去找网络上别人写的例子,原生态,不好嘛?
自己写一个sample项目亲身体验
这一点其实不用我说,大家也应该明白。不过我还是见过不少的程序员,眼高手低。成天能够和人吹牛说这个框架怎么怎么好,那个框架怎么怎么方便。让他自己动手来用这些框架写一段程序出来,手足无措,搞了半天,就是无法跑通。
所以,实践是检验真理的唯一标准。只有自己亲自动手去实践,才能说你真正掌握了某个技术,理解了某个框架。在编写自己的sample项目时,你不妨就以最简单的User的增删改查作为你的业务场景,在实践中不断的重构你的代码,从而提升自己的水平。
带着问题debug开源框架的源码
如果你对某个开源框架的使用已经比较熟练,对其内部的原理也基本清晰了。你或许会对其中的某些设计原理产生一些问题(或许仅对勤于思考的人有效)。这个时候,我认为你可以试图去看一看开源框架的源码。
我看开源框架的源码的方式有些特殊,我喜欢在程序里做debug,来看看在开源框架的内部,到底运行了哪些类,他们是如何执行的。我坚决反对逐个包逐个包的去看源码,这毫无意义。因为这相当于把一个肢体进行了分解,一个运行状态良好的程序,你把它割裂开来,显然什么都读不懂。在程序中debug源码,你不仅可以浏览到程序执行过程中的每个类,还能查看这些类的运行状态。这才是阅读源码之道。
分享到:
相关推荐
通过以上步骤,你就可以完成一个基本的SSH框架应用搭建。不过,实际开发中还可能涉及更多细节,如异常处理、安全控制、性能优化等。对于初学者,理解每个框架的核心概念和作用,以及它们如何协同工作是非常重要的。...
Struts是一个开源的MVC框架,负责处理用户请求并展示视图。它通过Action类来控制业务流程,使用ActionForm对象传递请求参数,同时提供了一套强大的标签库简化JSP页面的编写。在SSH集成中,Struts主要作为前端控制器...
通过以上步骤,我们不仅成功地在Tiles框架中添加了一个新的页面,而且还学习了如何使用Tiles框架来构建具有统一风格和外观的Web应用程序。Tiles框架的强大之处在于它的灵活性和可扩展性,它可以轻松地适应各种复杂的...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常用的一种集成框架,用于构建高效、可扩展的...对于初学者来说,这是一个很好的学习资源,能够帮助他们快速理解和运用SSH框架进行实际项目开发。
总的来说,Caffe是一个强大且高效的深度学习框架,尤其适合需要快速原型验证和大规模计算的任务。其简洁的模型定义、丰富的预训练模型库和活跃的社区使其在学术界和工业界都有广泛应用。通过熟练掌握Caffe,开发者...
在MyEclipse中新建一个Web工程,然后按照SSH框架的结构组织项目文件,包括src目录、lib目录、Web-INF目录等,并在Web.xml中配置基本的Servlet和过滤器。 **5、增加Spring框架** 引入Spring的核心库,配置Spring的...
以下是一些关于构建一个框架的详细步骤,以创建一个Java平台上的轻量级、零配置、易用且高度可扩展的Web MVC框架为例。 1. **定位与目标**: - **框架目的**:明确框架的核心功能,例如,我们的框架旨在提高Java...
Spring是一个全面的后端应用框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性。在SSH开发中,Spring主要负责控制层和业务层的管理。在配置文件中,你会看到如`beans.xml`,它定义了各个组件的实例化和...
一个自动化的机器学习框架也在持续开发中,它基于上述的通用步骤,旨在简化机器学习任务。 在实际操作中,首先要明确研究问题的类型(分类或回归)。接着,数据会被划分为训练集和验证集,确保训练集和验证集在标签...
**Struts** 是一个基于Java EE Servlet/JSP框架,实现了MVC设计模式,主要用于创建Web应用的用户界面。 **Spring** 是一个开源的Java平台,它为企业应用开发提供了全面的编程和配置模型。通过依赖注入、面向切面...
1. **Spring框架**:Spring是一个全面的后端应用程序框架,它提供了依赖注入(DI)和面向切面编程(AOP)等功能。在SSH整合中,Spring主要作为应用的核心,负责管理其他组件,如Struts和Hibernate,通过Bean工厂和...
play框架的搭建步骤,是我自己学习的总结
FedML是联邦学习的一个开源框架,它提供了多种联邦学习算法的实现,便于研究人员和开发人员进行实验和应用。Octopus是FedML中的一个组件,专注于为本地环境提供联邦学习的便捷搭建方案。 搭建FedML的Octopus框架...
Spring框架则是一个全面的企业级应用框架,它不仅提供了依赖注入(DI)和面向切面编程(AOP)功能,还涵盖了数据访问、事务管理、远程服务、邮件服务等多个领域。Spring的核心是IoC(Inversion of Control)容器,它...
CI框架,全称为CodeIgniter,是一个轻量级的PHP框架,因其简洁高效而深受开发者喜爱。本篇文章将概述CI框架的学习概要,基于后盾网的16个视频教程内容,帮助读者深入理解并掌握CI框架的核心知识。 首先,学习PHP是C...
在机器学习领域,TensorFlow是一个非常流行的深度学习框架,它能够帮助开发者快速构建和训练神经网络模型。 机器学习的概念可以通过一个简单的例子来说明,使用k-近邻算法改进交友网站的配对效果。机器学习算法可以...
Spring 是一个轻量级的 Java 开发框架,由 Rod Johnson 于 2003 年创建。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。Spring 的用途不仅限于服务器...