接着上一篇文章,我们已经完成springMVC+mybatis项目的登录功能,对相关知识也有了简单的了解,那么,helloworld就不再适合我们了,我们来尝试带有业务需求的去创建一个项目,在实战中完善对知识点的积累和学习,所以我们打算创建一个工程,用来统计所有同事的周报内容,并根据查询结果做excel导出。
首先我们来完成主体功能,最后在完善系统,接下来让我们一步步来
1、根据我们之前所学,先来创建一个工程,工程名叫wrmp(Work Record Manage Platform的缩写),我们之前没有用maven是为了让我们属实一下项目创建的基本需求,现在我们既然做实战项目,我们按实际情况来,使用maven来管理我们的jar包并构建项目。
我们使用的是sts,所以创建spring项目会和通常的eclipse有些不同,这里我只做sts的创建介绍,相信eclipse创建maven项目的流程肯定有很多大神已经分享过了,朋友们可以参考。
1)、下载maven的免安装包,解压到你电脑的指定空间作为maven的工作空间(我本就解压到C:\maven,创建E:\m2文件夹作为maven的本地仓库),配置maven配置文件(maven/conf/settings.xml)
因为我们自己开发学习,不是刻意学习maven,所以不用搭建maven私服,我们也就统一使用中央仓库(即maven的默认仓库),那我们就只需要在setting文件中配置下本地仓库地址就可以了,以后到了企业,肯定还要配置公司私服地址,具体配置可以单独学习
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>E:/m2/repository</localRepository> </settings>
2)、maven准备好了,我们来配置下sts工作空间,使其使用我们刚刚准备好的maven管理我们这个工作空间所有项目的jar包
点击window->选择preference->搜索框输入maven->选择installations->点击add
点击Directory… 找到你的maven存放路径,点击finish
选中你刚添加进来的maven点击下面的ok按钮
点击user settings -> 点击Browse… 找到你的maven的setting.xml ->点击apply按钮->点击ok按钮完成sts工作空间maven的配置
3)、window->preferences-> general -> Workspace设置工作空间的编码格式为UTF-8
4)、右键-> new spring project如下图,选择spring mvc project -> next
填入你的包名,finish即可,你的项目创建成功了
然后你会发现你的项目报错,不用担心sts会自动帮我们构建项目并使用maven下载我们需要的包
然后我们的项目就创建完了,sts帮我们创建了一个springMVC项目,需要的文件和工程结构也都已经帮我们创建好了,看到一下的截图,你可能会发现,有个pom.xml是我们之前没有见过的,接下来我们就来看看这个pom.xml是做什么用的,不过这之前,老规矩,启动下项目,测试下是否能正常启动。
a-ok,我们成功了,下面我们来看下pom.xml
2、一个使用springMVC框架工程的基本骨架我们我们已经搭建好了,有的朋友可能要问,我们为什么没有需要引入相关的jar包呢?因为我们使用了maven呀,在构建sts的时候maven已经帮我们从我们配置的仓库(私服,这里我们没有配置,所以是走的默认的中央仓库)下载了我们需要的jar包并帮我们导入构建到了项目中。这时候你可能有想问了,可是maven怎么知道我们需要那些jar包已经需要什么版本呢?这就要看看我们刚才提到的pom.xml文件了。我们在pom中配置好我们需要jar包,在执行maven更新命令时,我们安装的maven插件就会去读取我们的pom文件,然后为我们下载我们需要的并配置在其中的jar包,下面我们来看看,一个springMVC+mybatis项目需要的jar包配置文件pom是啥样的:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 默认基础包名,也是发布到maven私服时保存的路径名 --> <groupId>com.thc</groupId> <!-- 项目名 --> <artifactId>wrmp</artifactId> <name>wrmp</name> <!-- 当前项目在时候maven打包时,项目的打包后的文件类型 一般java项目打包类型是jar或是war,我们web项目都是打war包,即wrmp.war --> <packaging>war</packaging> <!-- 当前开发项目的版本 --> <version>1.0.0-BUILD-SNAPSHOT</version> <properties> <java-version>1.6</java-version> <org.springframework-version>3.1.1.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> <!-- 指明编译源代码时使用的字符编码,maven编译的时候默认使用的GBK编码, 通过project.build.sourceEncoding属性设置字符编码,告诉maven这个项目使用UTF-8来编译 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- Spring 项目使用的基本包 start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework-version}</version> <exclusions> <!-- 排除 spring-context包中引用的的 commons-logging包 --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- Spring 项目使用的基本包 end --> <!-- AspectJ --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${org.aspectj-version}</version> </dependency> <!-- Logging日志包 start --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j-version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> <exclusion> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> </exclusion> <exclusion> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> </exclusion> </exclusions> <scope>runtime</scope> </dependency> <!-- Logging日志包 end --> <!-- @Inject --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <!-- web项目中的Servlet包 start --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- web项目中的Servlet包 end --> <!-- Test 单元测试 start --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> <!-- Test 单元测试 end --> <!-- mybatis需要的包 start --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.18</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.1.1.RELEASE</version> <exclusions> <exclusion> <artifactId>spring-beans</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <!-- mybatis需要的包 end --> <!-- spring requestbody 转换request中的表单内容使用 start --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.5</version> </dependency> <!-- spring requestbody 转换request中的表单内容使用 end --> </dependencies> <build> <plugins> <plugin> <artifactId>maven-eclipse-plugin</artifactId> <version>2.9</version> <configuration> <additionalProjectnatures> <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> </additionalProjectnatures> <additionalBuildcommands> <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> </additionalBuildcommands> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.6</source> <target>1.6</target> <compilerArgument>-Xlint:all</compilerArgument> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <mainClass>org.test.int1.Main</mainClass> </configuration> </plugin> </plugins> </build> </project>