首页 > 其他分享 >SSM框架整合Maven版

SSM框架整合Maven版

时间:2023-08-19 14:35:29浏览次数:54  
标签:xml Maven 框架 spring 配置 springframework SSM mybatis org

简单介绍一下SSM具体指的是SpringMvc、Spring、Mybatis或者MybatisPlus这三大框架,其中Spring是最核心的框架,其他两个框架都要集成在Spring上让其进行统一管理。由于整合过程中需要导入很多jar包所以为了方便管理使用项目管理工具Maven来进行依赖jar包的管理,需要什么jar包就导入什么jar包的坐标,使用起来及其方便。

SpringMvc框架其实就是之前讲的servlet中视图层和控制层的进一步封装,通过SpringMvc的核心前端控制器(DispatcherServlet)来请求、响应、渲染视图对象并展示。Spring框架其实就是之前讲的servlet中的逻辑业务层的封装,通过Spring的核心容器应用上下文(spring context),创建bean对象并对其进行统一管理。Mybatis或者MybatisPlus框架其实就是之前讲的servlet中的数据持久层的进一步封装,使用Mapper映射文件来编写SQL实现对数据库的相关操作。由于实际项目开发中这三个框架都会使用到,所以接下来就来具体整合这三个框架。

为了展示效果首先需要创建一个javaweb项目,其次需要使用IDEA连接上数据源,点击右上角的Database选择MySql数据库输入你的用户名和密码和选择的数库名连接成功后如下图:

SSM框架整合Maven版_SSM整合

选中其中的表使用MybatisX插件反向生成实体对象类和service层及mapper映射文件模板,操作如图:

SSM框架整合Maven版_spring_02

接下来在反向生成的包结构下创建一个名为controller的包,并新建一个名为×××Controller的java类,结构创建完毕。

接下来在Maven中导入整合所需要的相关jar包:

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>


        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.24</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.24</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.3.24</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!-- <dependency>
             <groupId>org.mybatis</groupId>
             <artifactId>mybatis</artifactId>
             <version>3.5.11</version>
         </dependency>-->
        <dependency>
            <groupId>org.singledog</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.3</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.24</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.24</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.28</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.28</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.14.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.5</version>
        </dependency>
        <!--文件下载-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.3</version>
        </dependency>
    </dependencies>

因为javaweb项目在启动时,最先扫描的就是web.xml文件里的内容,所以要先配置。先配置spring的编码过滤器以及编码过滤器的映射,使所有路径的编码方式都为UTF-8。

 <!-- 配置spring的编码过滤器-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceRequestEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 配置spring的编码过滤器的映射-->
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/</url-pattern>
    </filter-mapping>

再配置SpringMvc的前端控制器以及前端控制器映射,使项目启动时去扫描加载对应位置的配置文件。

 <!-- 配置SpringMVC的前端控制器 -->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 设置SpringMVC的配置文件的位置和名称 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/springMVC.xml</param-value>
        </init-param>
        <!--将DispatcherServlet的初始化提前的服务启动时-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--配置映射-->
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

最后在web.xml文件中配置Spring监听器和Spring配置文件的位置,让项目启动时扫描加载对应的配置文件信息。

<!-- 设置Spring的配置文件的位置和名称 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/applicationContext.xml</param-value>
    </context-param>

    <!-- 配置Spring的监听器 在服务启动时加载spring的配置文件-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

到此web.xml文件就配置完毕,接下来到资源目录下配置对应的xml文件。

资源目录配置,在resource目录下创建如下结构的文件:

SSM框架整合Maven版_SSM整合_03

首先配置最简单的mybatis-config.xml文件和jdbc.properties数据库配置文件。mybatis-config.xml文件只需要配置最简单的将表中字段的下划线自动转换为驼峰命名格式即可:

SSM框架整合Maven版_spring_04

而jdbc.properties中则配置一下你要连接的数据库的信息即可:

SSM框架整合Maven版_SSM整合_05

接下来是对SpringMvc.xml文件的配置,配置控制层扫描组件,注意的是扫描的包结构必须与项目结构层次相同否则配置不生效。

SSM框架整合Maven版_SSM整合_06

然后配置视图解析器,配置视图的位置和后缀类型和开启注解:

<!--配置视图解析器 默认的-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 视图前缀 -->
        <property name="prefix" value="/view"/>
        <!-- 视图后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>
    
     <mvc:annotation-driven>
    </mvc:annotation-driven>

最后配置最重要的applicationContext.xml文件,主要是整合mybatis相关的配置,整合mybatis第一步要导入jdbc.properties配置文件,

 <!--1.导入配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

第二步把相关参数配置到数据源中,

 <!--2.配置数据源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

第三部是配置sqlSessionFactory工场,用来创建sqlSession对象执行sql,这里由于我配置的是mybatisplus的所以导入的包略有不同,

 <!--3.配置sqlSessionFactory工场-->
    <bean class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <!--映射数据源-->
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!--设置映射文件的路径 ,若映射文件所在路径和mapper接口所在路径一致,则不需要设置-->
        <property name="mapperLocations" value="classpath:mapper/*/*Mapper.xml"/>
        <property name="plugins">
            <array>
                <bean class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"></bean>
            </array>
        </property>
    </bean>

第四步是配置mapper代理,扫描加载配置层次下的mapper映射文件

<!--4.配置mapper代理-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.cdtu.*.mapper"/>
    </bean>

再配置一下service的包扫描和开启注解即可:

    <!--配置service层的包扫描-->
    <context:component-scan base-package="com.cdtu.*.service"/>
    <!-- 开启注解 -->
    <tx:annotation-driven></tx:annotation-driven>

这样SSM三大框架的整合就到此完毕,整合完测试一下是否能跑通,建一个简单的页面,实现业务跳转,看是否能完成简单的业务逻辑。测试页面如下:

SSM框架整合Maven版_spring_07

后台代码如下:

SSM框架整合Maven版_spring_08

数据库数据如下:

SSM框架整合Maven版_spring_09

启动项目如果点击页面上的a标签跳转后在控制台打印出对应数据代表SSM框架正确整合,整合后效果如图:

SSM框架整合Maven版_SSM整合_10

标签:xml,Maven,框架,spring,配置,springframework,SSM,mybatis,org
From: https://blog.51cto.com/u_15101214/7149340

相关文章

  • 【Maven】打包补充依赖的操作记录
    题外话每次搞maven环境,总是觉得很痛苦,痛苦的根源源于,无从下手。要说maven有多难,自然也不能这样说,究竟也是因为没有系统地去学习,和没有把踩过的坑积累成经验,以至于每一次都踩差不多的坑,浪费相当的时间,打击相当的信心,于是觉得这是一道铜墙铁壁。每每遇到这些环境问题,首先就觉得,......
  • 基于SSM技术的心理学网站系统设计与实现-计算机毕业设计源码+LW文档
    一、选题背景及意义随着信息化社会的形成和微电子技术日新月异的发展,为开发心理学网站系统提供了良好的环境。在当前的技术和社会需求环境下,心理学网站系统将具有长足的发展。特别是在互联网高度发展和应用的今天,随着心理关爱需求的越来越多,也正因此,心理学网站系统应运而生,可以为......
  • 基于Hexo和Butterfly创建个人技术博客,(1) 初始化博客站点,您只需要知道Hexo框架的这些
    专题概述本文是个人建站系列的第一篇文章,最终有多少篇文章笔者现在也说不好,因为是一边创建个人站,一边沉淀这个过程。每一步都是实操后再总结文档,文档是以章为单位总结的,每一章都会有几篇文章,在发文前也都经过至少3次的大纲、文案的调整和校对,目的是为了尽量让您能看明白,内容包括但......
  • Java智慧工地系统源码(微服务框架+Java+MySQL)
    智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需......
  • Google开源了可视化编程框架Visual Blocks for ML
    VisualBlocksforML是一个由Google开发的开源可视化编程框架。它使你能够在易于使用的无代码图形编辑器中创建ML管道。为了运行VisualBlocksforML。需要确保你的GPU是可以工作的。剩下的就是clone代码,然后运行,下面我们做一个简单的介绍:VisualBlocksforML是运行在支持jav......
  • pytest + yaml 框架 -53.yaml 用例规范与全部关键字总结
    前言v1.4.4版本新增对yaml用例格式校验,不合法的用例格式不会被执行,避免出现用例格式不合法导致的报错。全部关键字总结config中可用关键字关键字可支持类型功能说明name可选str没什么用,仅描述当前yaml用例的名称base_url可选str,支持格式:http://、htt......
  • 【Java 高阶】Maven 本地仓库、中央仓库、私仓
    ......
  • 老问题了:idea中使用maven archetype新建项目时卡住
    背景作为一个后端Java打工人,idea就是最重要的打饭工具。创建项目,熟悉吧,但是,这么多年下来,因为idea换了版本,电脑换了等等,我还是时不时遇到根据mavenarchetype新建maven项目卡住。没错,我说的就是下面这样的场景:总之吧,就是停在上面这里,不动了:[INFO]---maven-archetype-plugin:......
  • NodeJS系列(12)- Next.js 框架 (五) | 样式 (Styling) 、部署(Deploying)
    在“NodeJS系列(8)-Next.js框架(一)|安装配置、路由(Routing)、页面布局(Layout)”里,我们简单介绍了Next.js的安装配置,创建了nextjs-demo项目,讲解和演示了Next.js项目的运行、路由(Routing)、页面布局(Layout)等内容。在“NodeJS系列(9)-Next.js框架(二)|国际化(i18n)、中......
  • 智安网络|零信任安全框架:保障数字化时代网络安全的最佳实践
    随着数字化时代的快速发展,网络安全问题变得越来越突出。传统的安全防御模式已经不再适用于现代复杂的网络环境中。为了应对日益增长的网络威胁,零信任安全模式应运而生。一、什么是零信任?零信任是一种安全框架和哲学,它基于一个简单的原则:不信任任何用户或设备,即使它们已经位于网络内......