以一个项目学习SSM的整合(详细,从项目创建到服务器部署)

    科技2024-06-08  85

    1、背景

    前阵子恶补了Spring、SpringMVC和MyBatis的相关知识,对这三部分有了一定的理解,下面以一个小型项目,学习SSM的整合。 该项目是一个用户管理系统,涉及对用户(包括ID、用户名、密码)的增删改查。系统的前端使用JSP。(后端逻辑简单,前端界面简陋) 源代码地址:https://gitee.com/linda_gitee/ssm_management.git。克隆后如果要部署,需要修改src/resource/db.properties。建议边看源代码边看文章。 需要准备提前安装IDEA、Maven、Tomcat和MySQL。

    2、准备

    在MySQL中创建数据库ssm_db,新建users表,字段包括id,name,password;通过IDEA新建一个Maven空项目;在pojo包下,编写User实体类,与数据库字段进行对应;Maven项目中导入Junit单元测试依赖。

    3、Spring和MyBatis的整合

    3.1、导入依赖

    MyBatis相关(mysql驱动、mybatis)Spring相关(spring-webmvc、spring-jdbc)整合模块(mybatis-spring)

    3.2、业务代码

    在源代码的Mapper目录下编写Mapper接口,在Resources的Mapper目录下编写映射文件,两者目录要一致,这样Maven打包就可以把两个文件打包在同一目录下了。

    3.3、将MyBatis使用过程中需要创建的对象SqlSessionFactory交由Spring容器管理(通过XML配置)

    在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中配置,但是这样结构会比较清晰)。

    3.4、将映射器注册到Spring容器中

    这里使用到的方法上是在spring-dao.xml中配置MapperScannerConfigurer进行扫描,这样就不用手动地注入了。

    3.5、Service层

    以上做的工作都在Dao层,Service层可以写很多逻辑,但是这个项目比较简单,直接调用Dao层方法即可。然后,新建spring-service.xml注册Service对象,在applicationContext.xml中导入spring-service.xml。

    3.6、测试

    在Junit中,通过Spring上下文获取到Service对象,测试增删查改的正确性。测试完删除单元测试,因为Maven打包时会执行该用例,避免影响到打包。

    3.7、在调试过程中出现的问题(Maven打包)

    如果打包产物中没有将所有的xml配置文件打包进去,需要在pom.xml中根据情况设置资源过滤;<resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> 如果打包的配置文件出现乱码问题,可以尝试在文件-设置-编辑器-文本编码中设置IDEA的文件编码。

    4、整合Spring MVC

    4.1、项目添加Web框架支持

    我看有些同学可以直接用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)

    4.2、导入Servlet和JSP依赖(Spring MVC依赖已经导入)

    servlet-apijsp-apijstl

    4.3、使用Spring MVC

    在web.xml中注册Spring MVC的DispatcherServlet(Spring MVC核心分发Servlet,配置文件为applicationContext.xml)和CharacterEncodingFilter(乱码过滤);新建配置文件spring-mvc.xml作为Spring MVC的配置文件,在applicationContext.xml中导入;在spring-mvc.xml中设置注解驱动和包扫描路径(Controller目录)。

    4.4、测试

    在Controller目录中编写测试接口,并用@Controller注解注册;在启动配置中添加Tomcat配置,启动,测试。

    5、编写业务代码

    用户信息的增删查改。(逻辑简单,略)

    6、在服务器上的部署

    6.1、服务器和数据库的准备

    我租了一台腾讯云服务器,就在这台服务器(CentOs)上进行项目的部署。服务器已经安装过MySQL数据库了(https://www.runoob.com/mysql/mysql-install.html),注意properties.db中的数据库配置要根据情况调整(用户名、密码)。因为项目没有需要提前准备的数据,所以直接在MySQL中新建数据库ssm_db和数据表users。

    6.2、Tomcat的安装

    通过yum install tomcat进行安装,systemctl start tomcat进行启动,systemctl status tomcat查看状态,system restart tomcat和systemctl stop tomcat进行重启和停止。

    6.3、打包

    通过上图,可知用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与存在版本对应关系)。

    6.4、部署

    yum安装的tomcat的路径是/usr/share/tomcat,进入这个目录;cd webapps;将打包得到的XXX.war,上传到webapps下;重启tomcat,systemctl restart tomcat;

    6.5、访问

    用浏览器访问网址:http://服务器IP:8080/XXX,测试。

    Processed: 0.018, SQL: 8