前言
出于目的
这篇文章写出来大体没什么技术价值,主要是写给小白入手的,因为我也已经加入公司团队,在项目框架这一块完全不需要普通开发者接手,不过在自己实际从零开始搭建过程中,就出现一系列的问题,网上也有很多关于SSM整合搭建的博客,只是很多要么是copy人家旧版本的,要么不完整,遇到一个问题找一个问题,对于小白来说都不是很友好。况且不同的开发环境(eclipse、IDEA)不同的项目架构差异也大,对新手来说在环境搭建耗费太长,就不利于后期深入学习了,所以就有必要将自己徒手搭建踩过的坑徒手记录下来,就写出这篇文章吧
整体规划
这不是一篇文章,是多篇文章构成的集合,因为搭建环境有太多形式,在这一系列的文章会分多种形式讨论,分别在eclipse和IDEA中搭建单项目SSM,多项目依赖的SSM,以及需要配合dubbo&zookeeper使用的微服务SSM,小伙伴们可以根据自己的实际需要来确定自己看那篇文章的项目搭建。
关于SSM
关于SSM,我想简单说的就是至少目前还是主流的,即使已经出现的Spring Boot + mybatis 至多与其并肩同行,要想取代,仍需一定的时间。当然我也会在至少取代之前给大家介绍Spring Boot框架搭建
开始搭建
首先声明一下这次需要搭建的架构是单项目结构,使用的工具为eclipse
本次将从零开始,即从刚安装好的eclipse环境开始
配置JDK*
如果已经添加,可以跳过此步骤
这是配置项的入口,一定要记好哦,以后很多配置项基本都从这里进的
找到java -> Intalled JREs 匹配你当前环境的JDK版本
添加tomcat*
如果已经添加,可以跳过此步骤
apache下的tomcat,根据你实际的版本进行选择,即可next
接下来就需要选择tomcat路径了
接下来选择需要部署的项目,我们无项目可部署,跳过。
等待创建,即可完成
配置maven*
如果已经添加,可以跳过此步骤
同样还是在配置窗口下找到maven下的Installations配置maven安装路径,添加一个自己安装的maven
选择maven安装路径
使用新添加的maven再apply
然后再User Setting选项也是需要改的
就是setting.xml的路径,它会根据这个文件自动匹配本地仓库的路径
选择manve根目录下的conf下的setting.xml即可
最后apply完就可以close了
创建项目
如果你前面的工作都准备好了,那么接下来我们就要开始搭建项目了
这里要创建的项目肯定是maven工程
这里用maven创建web项目,我这边使用官方提供的架构来创建:
所以下一步直接next
找到带有webapp字样的架构,注意一定是这个
接下来输入坐标,即包名和项目名称
解决项目初始化的一系列问题
引入tomcat 的JAR包
创建完成后,我们的项目遭到了报错,这是因为没有tomcat运行时的jar包。
首先右键点击项目,选择属性选项:
这个是项目配置项的入口,也一定要记住哦
找到build Path 下添加library
即可
这时候项目就不报错了
匹配JRE 版本
但是出现如下警告:
也就是JRE的版本不匹配
这时我们需要添加一个maven-compile-plugin插件
我们可以通过maven repository官网找到这个插件的具体配置项,在项目中的pom.xml添加
最新的版本已经到3.8。可以根据本地仓库现有的情况选择
注意不是在dependency,要放在plugins下面哦!!
除此之外还有添加<configuration>
配置哦
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF8</encoding>
</configuration>
</plugin>
最后还需要update一下maven才会生效哦
右键点击项目,找到maven进行update
弹出的对话框,直接选择OK即可
补全maven项目结构
项目已经有了java 和 source缺少了一个test/sources
接下来我们将它补全
添加一个source folder
名字一定要是这个
然后需要配置项目输出的文件
这两个文件夹也是需要匹配的
选择编辑一下
有可能还要再选择一下,将contain test resources 改为yes即可
配置webapp输出目录
还是在项目的配置路径里,找到Deployment Assembly这里可以看到它默认根目录指向的不是webapp目录,而是webContent,但是按照maven项目的规范,我们需要将它改为webapp目录
将WebContent删除掉,再添加,选择Folder
找到webapp目录进行finish
即可
升级动态web 3.0
这里我们看到该项目的动态web版本还是在2.3,这里我们需要更高的版本
但是你选择不了
解决办法是把这个√去掉来apply一次
在把这个选中,再进行apply一次
这里就是我们的web.xml
但是这里还是2.3版本的,那是因为我们用官方默认创建的maven工程比较旧,还是2.3版本的
这里只需要改成3.1约束即可
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" metadata-complete="true">
<display-name>Archetype Created Web Application</display-name>
</web-app>
修改项目编码
还是在项目的配置窗口,把原来的GBK改为UTF8即可
启动web项目
把上面的一系列问题完成后就可以启动项目运行了
首先先进行项目发布 add and remove
把项目弄过去,Finish
一般需要先进行clean操作,保证最新同步
在进行启动 debug 或 run
或者直接使用Run on Server方式也行!
好了,到这里,maven项目在本地tomcat已经可以运行了
整合SSM
目录结构和整合思路
目录结构
- java Sources
- bean 实体包
- constanst 常量包
- dao
- web 控制器、拦截器等
- service
- java Resource
- config
- mapper mybatis的实体与表映射文件
- properties 属性配置文件
在config目录下,我们将SSM整合的配置拆分,这样做的好处在于方面日后扩展,也方面维护,就不至于一个配置文件里写了一堆东西
- applicationContext: 总配置文件、
- applicationContext-service: 给service的配置文件
- applicationContext-dao: 给dao层的配置文件
- applicationContext-web: 给web层的配置文件
- mybatis-config: mybatis总配置文件
整合思路
基于这样的结构,我们整合的思路也是分开来的,首先先是在web层,这一层配置啥呢?显然就和spring mvc有关了,就是做spring-mvc相关配置。
在service层呢?就可能是根据实际需要来配置了,但是最基础的,肯定是需要有spring Aop事务处理方面的配置
在dao层呢?很显然就是和数据库连接有关的配置了,并且让它找到mybatis总配置文件
除此之外,为了能够让spring注解注入,每一层都需要包扫描配置
最后就是需要将这些配置文件整合起来,统一在spring总配置文件里导入。
最后在web.xml引入spring和spring mvc并让它找到总配置文件即可了。
引入依赖
在做以上一切工作之前,先要做的那就是引入SSM依赖,这里我就根据我实际本地仓库来引入,已经引入了SSM所有必要的依赖,关于版本的问题,可以自行上maven repository官网去找就可以了。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.3.RELEASE</version>
</dependency