老大想要做一个TimeSheet的东西,要管理公司员工每年的时间和effort.反正还要个什么报表,老大发话了,很荣幸我有此机会又可以和刚进公司带我的老大一起做东西了,感觉很好。不过这个项目是一个partimejob,自己在工作中抽时间来做。当然啦,堆码的事情肯定我来搞定啦。项目开发,需求不是我定,所以在等待需求的时候,我就将环境先搭建起来。上次做了一个Spring+SpringMVC+Mybatis+Log4J+JUnitTest的环境搭建,这次也差不多,不过就是基于了Maven,同时也添加了事务管理。首先,可以去了解一下maven,个人觉得这个东西就是JAR包管理方便,不用自己一个个去写,直接添加dependence就行了,不过有时候要注意哟,有可能重复的包含了某个JAR包,会报冲突的哟,亲!因为只有一个POM文件里指定JAR包,所以整个项目都很小的,一般就几MB,只有你在将该项目打成WAR包的时候,maven会自动的把三方JAR包放进项目,然后你就可以去部署到Tomcat的webapp下面了,放进去,重启Tomcat就OK。1.开始搭建我的环境吧。首先,IDE我用的是eclipse的JEE版本。要保证装上了Maven哟,可以使用eclipse的InstallNewSoftware,URL地址是,然后一步步走下去,安装好了过了会重启一次。给一个忠告哟,安装好了maven后,不要使用IDE里面的了,而是去官方下载一个,解压,然后让IDE的Maven指向你下载安装的,如图:2.maven安装成功了,我们用Maven创建一个新的WEB项目。File—New—Other—MavenProject.选默认,下一步。在SelectanArchetype里面种找到如下图所示3.然后next,输入groupId:net.yuanmomo;artifactId:Test,然后finish,稍微等待一下,就创建好了。下面的是创建好了的一个初始的项目:4.但是这个并不是默认的maven项目的标准结构.我们需要进行一些改动.(1).在项目下创建一个SourceFolder.FolderName:src/main/java如下图所示:(当然,还可以添加用于junit测试的src/test/java和src/test/resources不过在此就不添加了.)(2).在src/main/java中创建3个包(maven标准推荐是3层包结构)(3).如果装的JDK是1.6的,更改JRESystemLibary为1.6版本的.(4).就src/main/webapp文件夹看做一个的WebRoot,然后创建js,css,jsp等文件夹。这样.一个标准的mavenweb项目创建成功.5.大家一看上面的项目结构,很熟悉吧。maven的项目结构路径有点讨厌,有点让人很烦。maven打WAR包的时候提取的东西是src/main/webapp下面的文件,然后打成一个WAR的WEB项目就可以部署了,但是,但是,我们在开发的时候,在使用eclipse里面的Tomcat调试的时候,tomcat却不是把src/main/webapp下面的文件部署到服务器。此时,如果你打开Server,然后addandremove,你在左边是找不到Test项目的,如下:原因是因为Tomcat默认回去Test项目的路径下面去找WebRoot—WEB-INF--web.xml(WebRoot文件夹的名字可以不一样,可以使其它的,但是WEB-INF--web.xml这两个名字不能变),但是当前就找不到这几个目录。这个时候有两个解决办法:(5.1).在Test项目的路径下面,按照路径规则创建WebRoot,WEB-INF等文件夹,然后把上面的web.xml拷贝到新建的WEB-INF中去。放心吧,我上一个项目就是这样做的,不过这种方式打死都不可取的。你修改JSP的时候改的是下面的,maven打包的时候用的上面的。你还得拷贝过来,拷过去,麻烦,如果再有svn管理,累死你,晕死你,我们经常是调试编写的时候再下面做,最后提交的时候还得一个个拷贝上去,还出很多问题。所以建议采用第二种方式。(5.2).转换该项目:(1)在Test工程名上右键--Properties--ProjectFacets--Convettofacetedform,(2)勾上DynamicWebModule,选择2.4版本。同时点击下方的furtherconfigurationavailable(3)将默认的WebContent改成src/main/webapp(4)一路点OK..此时在server视图中的tomcatserver上点右键--AddandRemove,就能看到该项目于,然后部署啦。至此,我们已经创建好了一个合格的基于Maven的项目,也可以在Tomcat中部署。接下来,我们开始整合我们的J2EE框架。6.先给出数据库的创建脚本,方便测试搭建是否成功。SETSQL_MODE=NO_AUTO_VALUE_ON_ZERO;----数据库:`timesheet`--CREATEDATABASE`timesheet`DEFAULTCHARACTERSETutf8COLLATEutf8_bin;USE`timesheet`;--------------------------------------------------------------表的结构`testtable`--CREATETABLEIFNOTEXISTS`testtable`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`name`varchar(50)COLLATEutf8_binDEFAULTNULL,`date`timestampNULLDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_binAUTO_INCREMENT=1;7.在pom文件中添加必要的jar包的dependence,可以从两个地方查询:://search.maven.org/添加后的pom文件如下:projectxmlns=:xsi=:schemaLocation=://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdnet.yuanmomo/groupIdartifactIdTest/artifactIdpackagingwar/packagingversion0.0.1-SNAPSHOT/versionnameTestMavenWebapp/nameurl!--设置Spring的版本--propertiesorg.springframework.version3.0.0.RELEASE/org.springframework.version/propertiesdependencies!--此处开始就是Spring所有的jar了,spring3.0的jar包拆分了,所以很多--!--Coreutilitiesusedbyothermodules.DefinethisifyouuseSpringUtilityAPIs(org.springframework.core.*/org.springframework.util.*)--dependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion${org.springframework.version}/version/dependency!--ExpressionLanguage(dependsonspring-core)DefinethisifyouuseSpringExpressionAPIs(org.springframework.expression.*)--dependencygroupIdorg.springframework/groupIdartifactIdspring-expression/artifactIdversion${org.springframework.version}/version/dependency!--BeanFactoryandJavaBeansutilities(dependsonspring-core)DefinethisifyouuseSpringBeanAPIs(org.springframework.beans.*)--dependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion${org.springframework.version}/version/dependency!--AspectOrientedProgramming(AOP)Framework(dependsonspring-core,spring-beans)DefinethisifyouuseSpringAOPAPIs(org.springframework.aop.*)--dependencygroupIdorg.springframework/groupIdartifactIdspring-aop/artifactIdversion${org.springframework.version}/version/dependency!--ApplicationContext(dependsonspring-core,spring-expression,spring-aop,spring-beans)ThisisthecentralartifactforSpring'sDependencyInjectionContainerandisgenerallyalwaysdefined--dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${org.springframework.version}/version/dependency!--VariousApplicationContextutilities,includingEhCache,JavaMail,Quartz,andFreemarkerintegrationDefinethisifyouneedanyoftheseintegrations--dependencygroupIdorg.springframework/groupIdartifactIdspring-context-support/artifactIdversion${org.springframework.version}/version/dependency!--TransactionManag