前阵子恶补了Spring、SpringMVC和MyBatis的相关知识,对这三部分有了一定的理解,下面以一个小型项目,学习SSM的整合。 该项目是一个用户管理系统,涉及对用户(包括ID、用户名、密码)的增删改查。系统的前端使用JSP。(后端逻辑简单,前端界面简陋) 源代码地址:https://gitee.com/linda_gitee/ssm_management.git。克隆后如果要部署,需要修改src/resource/db.properties。建议边看源代码边看文章。 需要准备提前安装IDEA、Maven、Tomcat和MySQL。
在源代码的Mapper目录下编写Mapper接口,在Resources的Mapper目录下编写映射文件,两者目录要一致,这样Maven打包就可以把两个文件打包在同一目录下了。
在resources目录下,
新建db.properties,写数据库的相关配置(驱动、url、用户名、密码);新建applicationContext.xml作为整个SSM项目的配置文件,在里面通过import标签导入Spring整合MyBatis的配置文件spring-dao.xml;原先使用MyBatis需要手动创建对象,但是Spring的一大特点就是能使得我们不用手动创建对象,我们只需要在spring-dao.xml中进行配置即可,包括数据源和sqlSessionFactory,需要引用db.properties的数据库配置;创建sqlSessionFactory需要绑定MyBatis核心配置文件,所以再新建配置文件mybatis-config.xml,可以在这个配置文件中配置MyBatis的设置项、别名以及注册Mapper(理论上这些都可以在spring-dao.xml中配置,但是这样结构会比较清晰)。这里使用到的方法上是在spring-dao.xml中配置MapperScannerConfigurer进行扫描,这样就不用手动地注入了。
以上做的工作都在Dao层,Service层可以写很多逻辑,但是这个项目比较简单,直接调用Dao层方法即可。然后,新建spring-service.xml注册Service对象,在applicationContext.xml中导入spring-service.xml。
在Junit中,通过Spring上下文获取到Service对象,测试增删查改的正确性。测试完删除单元测试,因为Maven打包时会执行该用例,避免影响到打包。
我看有些同学可以直接用IDEA添加Web框架支持,但是我在自己的IDEA上实际操作后发现webapp目录自动建的位置有问题,且Maven也没有设置打包格式,可能还有其他的问题,所以我打算手动添加Web框架支持:
在项目的pom.xml中追加打包方式为war方式<packing>war</packing>
在src/main目录中设置创建webapp目录
SM_MANAGEMENT\SRC\MAIN\WEBAPP │ index.jsp ├─jsp └─WEB-INF web.xml在IDEA的项目结构中添加Web框架,设置web.xml的位置和Web应用根目录的位置(webapp)
用户信息的增删查改。(逻辑简单,略)
通过yum install tomcat进行安装,systemctl start tomcat进行启动,systemctl status tomcat查看状态,system restart tomcat和systemctl stop tomcat进行重启和停止。
通过上图,可知用yum安装的Tomcat依赖的是JDK 1.8,为了避免版本冲突,编译项目使用的JDK版本我们也指定为1.8。在项目的Pom.xml中,我们对maven-compiler-plugin进行设置。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build>打包通过mvn clean && mvn package进行,会得到一个war包。 如果我们没有指定maven-comipler-plugin的版本,则会使用maven-comipler-plugin的默认版本,这个默认版本比较低,可能会出现编译不通过的情况(Spring和JDK与存在版本对应关系)。
用浏览器访问网址:http://服务器IP:8080/XXX,测试。