原文地址:http://blog.csdn.net/jinxfei/article/details/5471474
平时在工作的时候,总是觉得刚毕业的同事们对技术的理解不到位,知其然而不知其所以然。可是,静下心来想一想,这也不能全怪他们,不是新人们不爱学,而是现如今Java Web开发的确很繁复。表面上看,现在会Java的人多如牛毛,SSH 恨不得是每个 java 开发培训课的必选项目,但 WEB 开发的门槛,真的不低。当然,我说不低,是要以一个专业性要求为前提的,如果只是精于“C&P” 大法,其实还不能算“掌握”,顶多是“会用”罢了,更别提精通了。
在实际的工作中,由于以前项目的积累,已经基本上不会从头建立工程了,通常都是拿现成的工程框架开始做,避免了很多配置啊,依赖啊之类的繁琐的工作。但是今天又感受了一下,用了一天半的时间,从零开始,建立了一个 WEB 工程,所以才有这篇感慨文:Java Web 开发真的不容易。
那么,建立一个比较完整的WEB工程,并且跑起来(完成从前台到数据库的完整处理流程,哪怕只是插入一个整数),需要一个什么样的知识集合呢?
1、首先是环境准备。
通常,我们需要开发工具:Eclipse,或者MyEclipse。但我从来没有用过,我选Eclipse。
然后,选择WEB容器,最常用的Tomcat,或者Jetty,JBoss亦可。我选Tomcat。
2、选择数据库。
没有数据库,很难做出有价值的应用,所以,我们需要选择一个数据库,
自己研究,用的最多的是MySql,当然,Oracle,Postgres也很常见,
喜欢Sql Server的也不少,不过我已经N年没有玩过了。
我选MySql。
3、建立工程。
我相信很多人根本没有自己手工创建过WEB工程的目录结构,都是使用工具自动生成,我坚信,了解工具帮助我们干的事情非常必要,而且非常有好处的。这里主要是建立WEB-INF目录,WEB-INF/classes,WEB-INF/lib,创建初始的 web.xml。
4、写代码前的准备工作
在真正开始写第一行代码之前,我们还需要做的准备工作有:
> 配置日志系统,java领域最常用的 Log4J
> 选择连接池,我用了C3P0
> 选择持久化技术。当然,直接使用JDBC也可以,不过现在多数项目还是用持久化层的,Hibernate 和 Ibatis,处于简单性考虑,选择 Ibatis。
当然,这些准备工作,除了技术选型的决策,还都涉及到寻找相应的 jar 包、 jar 包所依赖的 jar,以及写编写初始的配置文件,包括:log4j.properties,c3p0.properties 和 ibatis 的一系列配置。据我所知,不了解 log4j.properties 配置项含义,只会拿来例子就用的绝不在少数,还有很多人,在将 web 工程发布到 tomat 以后,无法把 log4j.properties 配置与实际的日志文件所在的位置对应起来。
5、写代码测试配置,并验证不熟悉的技术(比如 ibatis,我第 0.2 次用,N 年前了解过)
这个过程耗时较长,尤其是 ibatis ,官方的文档并不丰富,使用它做到对数据库表的增、删、改、查,调了一个下午的时间,最后发现,ibatis 出到了 3.0,但其配套工具ibator (用于自动从数据库生成表对应的 javabean 和 sql 映射文件)生成的配置文件语法完全不对,仔细一看,ibator 的最后更新时间 2008年,faint!
6、开始写工作代码
这时候就更体现了 Java 大家庭的繁荣,以及程序员的兼容并蓄了。
首先,会 Java,Jsp 那是肯定的。
而框架方面呢,我一直不待见 SSH,因此还是准备只用 Struts,这样可以不学强大的有点过于强大的Spring。
还有些技术点,要么是必然用到的,要么是很好用的,包括:
> XML处理,或者 JSON 二选一,现在 JSON 大有取代 XML 的趋势。
> Apache commons 系列的类库,尤其BeanUtils,StringUtils,API 多少了解一点还是很有好处的。
> JSTL,我一直很想为这项技术鸣不平,我觉得挺好的东西,但我周围的人都很冷落它。
然后,因为项目需要,我还要使用一些特定的技术:
> WEB Service技术,我用 Restful 模式,在Restlet 和 Jersey 之间选择,最后用了 Restlet。
> 需要做一些图表,选用 JFreeChart
> … 其实还有很多,不一一列举了
7、工程打包、发布
日常工作中,工程的集成、打包和发布,通常不是程序员需要关心的问题。但如果是你一个人在战斗,除了会在 MyEclipse 的帮助下集成 Tomcat 进行测试,最好掌握一种手段,把工程打包发布到独立的 Tomcat 下,从而避免繁琐的手工操作。
常见的方式有:
> ant
> maven
原来我用 ant,不过现在转投 maven 了,用熟了以后,感觉 maven 比 ant 要好很多,不过,ant 的价值在于灵活,有时候用于完成一些非标工作挺实用的,比如:增量拷贝文件等等。
如果再提稍微高一点的需求,那就是最好掌握 windows 下批处理文件和 linux 下 shell 脚本的编写。
8、版本控制
为了协作、分享或者是安全起见,保存代码的历史版本很重要,
因此需要选择版本管理工具,SubVersion 和 CVS 都很好,
不过我用 CVS 更熟练一些。
---
因此,做一个合格的 JAVA WEB 开发人员,真的是不大容易。
知识面要宽,学习能力要强,要善于触类旁通。
对了,我还忘了说前台相关的技术,那就是 javascript,CSS,ajax,有时候,还得搭上Flash,及JQuery等一系列的框架。
本文涉及的部分技术,每一个要想做到一定程度的熟悉,都需要不少的时间,
我个人觉得,这个时间跨度为1-2年比较合适,
所以,新入行的朋友们,要在工作前两年经常想一想,自己是不是在各方面逐渐深入,还是一直在做重复性的工作呢?