前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ssm基本框架的整合

ssm基本框架的整合

原创
作者头像
julianna
发布于 2022-04-10 08:25:53
发布于 2022-04-10 08:25:53
4610
举报
文章被收录于专栏:web基础框架web基础框架

一. 创建Maven工程,引入依赖,配置所需环境

依赖

  1. mybatis的依赖
  2. spring的依赖
  3. mybatis-spring整合所需的依赖
  4. spring mvc的依赖
代码语言:html
AI代码解释
复制
        <!--********** mybatis **********-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.caches</groupId>
            <artifactId>mybatis-ehcache</artifactId>
            <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.3.0</version>
        </dependency>
代码语言:html
AI代码解释
复制
        <!--********** spring **********-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.18</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.18</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.18</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.3.18</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.3.18</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.9.1</version>
        </dependency>
代码语言:html
AI代码解释
复制
        <!--********** mybatis-spring **********-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>
代码语言:html
AI代码解释
复制
        <!--********** spring mvc **********-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.18</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.1.0.M1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.2.2</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>
代码语言:html
AI代码解释
复制
        <!--********** junit **********-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

        <!--********** mysql **********-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>

        <!--********** druid **********-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>

        <!--********** log **********-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.3.0-alpha14</version>
        </dependency>
代码语言:html
AI代码解释
复制
    <!--********** mybatis逆向工程 **********-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.4.1</version>
                <dependencies>
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-maven-plugin</artifactId>
                        <version>1.4.1</version>
                    </dependency>
                    <dependency>
                        <groupId>com.alibaba</groupId>
                        <artifactId>druid</artifactId>
                        <version>1.2.8</version>
                    </dependency>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.28</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

webapp

  1. 向模块添加web框架支持
  2. 进入项目结构→模块→添加部署描述符→...src\main\webapp\WEB-INF\web.xml
  3. 在webapp中添加存放静态资源的文件夹static,在WEB-INF中添加存放html页面的文件夹templates

tomcat

  1. 点击编辑配置
  2. 添加tomcat本地服务器
  3. 在部署中添加当前项目的的展开型包,将应用程序上下文修改为“/”
  4. 设置重新部署+更新类和资源

二. 程序结构的规定

  • src
    • main
      • java
        • com.ssm
          • controller
          • service
          • mapper
          • interceptor
          • pojo
      • resources
        • com.ssm.mapper
        • applicationContext-dao.xml
        • applicationContext-service.xml
        • spring-mvc-controller.xml
        • mybatis-config.xml
        • log4j.xml
        • generatorConfig.xml
        • jdbc.properties
      • webapp
        • static
        • WEB-INF
          • web.xml
          • templates
    • test
      • java

三. mybatis实现逆向工程

创建mybatis核心配置文件mybatis-config.xml

代码语言:html
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="**jdbc.properties**"/>

    <!-- pojo包的全地址 -->
    <typeAliases>
        <package name="**com.ssm.pojo**"/>
    </typeAliases>

    <!-- 设置连接数据库的环境 -->
    <environments default="development">
        <environment id="development">
            <!-- type="JDBC":使用原始的JDBC的方式管理事务 -->
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 引入映射文件,mapper包的全地址 -->
    <mappers>
        <package name="**com.maximilian.mapper**"/>
    </mappers>
</configuration>

创建逆向工程的配置文件generatorConfig.xml

代码语言:html
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <context id="DB2Tables" targetRuntime="**MyBatis3**">
        <!-- 数据库的连接信息 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/**数据库名**?useSSL=false&amp;useUnicode=ture&amp;characterEncoding=utf8&amp;serverTimezone=Asia/Shanghai&amp;rewriteBatchedStatements=true"
                        userId="**用户名**"
                        password="**密码**">
        </jdbcConnection>
        <!-- javaBean的生成策略-->
        <javaModelGenerator targetPackage="**pojo包的全类名**"
                            targetProject="**java文件夹的绝对路径**">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- SQL映射文件的生成策略 -->
        <sqlMapGenerator targetPackage="**mapper包的全类名**"
                         targetProject="**resources文件夹的绝对路径**">
            <property name="enableSubPackages" value="true"/>

        </sqlMapGenerator>
        <!-- Mapper接口的生成策略 -->
        <javaClientGenerator targetPackage="**mapper包的全类名**"
                             targetProject="**java文件夹的绝对路径**"
                             type="XMLMAPPER">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 逆向分析的表 -->
        <!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
        <!-- domainObjectName属性指定生成出来的实体类的类名 -->
        <table tableName="表名" domainObjectName="**pojo类名**"/>
    </context>
</generatorConfiguration>

通过逆向工程创建mapper、pojo、mapper

  1. 点击maven
  2. 点击插件
  3. 找到mybatis-generator中的mybatis-generator:generate并点击

四. 整合MyBatis与Spring

准备工作

  1. 针对数据表创建对应的service接口与实现类
  2. service接口实现类上添加注解@Service 、@Transactional
  3. 通过注解@Resource向service实现类注入mapper(实现类)对象
  4. 在覆盖重写的方法中调用mapper方法

dao(mapper)的配置——applicationConfig-dao.xml

  • mapper包的扫描
代码语言:html
AI代码解释
复制
    <context:component-scan base-package="**com.ssm.mapper**"/>
代码语言:html
AI代码解释
复制
    <context:property-placeholder location="classpath:**jdbc.properties**"/>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
  • SqlSessionFactory的创建与生成mapper接口的代理对象
代码语言:html
AI代码解释
复制
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- pojo的别名映射扫描,在value后面填写pojo包的全类名 -->
        <property name="typeAliasesPackage" value="**pojo包的全类名**"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
    <!-- 扫描mapper接口,生成代理对象,生成的代理对象会储存在ioc容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="**mapper包的全类名**"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

service的配置——applicationConfig-service.xml

  • service包扫描
代码语言:html
AI代码解释
复制
<context:component-scan base-package="**com.ssm.service**"/>
  • 事务管理、事物注解驱动
代码语言:html
AI代码解释
复制
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>

这两个xml文件的bean标签中需要:

代码语言:html
AI代码解释
复制
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"

五. 在test中测试service方法

  1. 创建测试类
  2. 在类上添加基于Spring的JUnit测试注解
代码语言:txt
AI代码解释
复制
@RunWith(SpringJUnit4ClassRunner.class)  

@ContextConfiguration(locations = {"classpath:/applicationContext-service.xml"})

  1. 添加测试属性,有接口的就一定要使用接口注入
  2. 测试方法

六. 整合Spring MVC

在spring-mvc-controller.xml配置

  • 扫描cotroller(如果有拦截器也要扫描拦截器的所在包)
代码语言:html
AI代码解释
复制
    <context:component-scan base-package="**com.ssm.controller**"/>
  • 配置thymeleaf视图解析器
代码语言:html
AI代码解释
复制
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <!-- 视图解析器的优先级 -->
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                        <!-- 视图前缀 -->
                        <property name="prefix" value="/WEB-INF/**templates**/"/>
                        <!-- 视图后缀 -->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8"/>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>
  • 开启mvc注解驱动
代码语言:html
AI代码解释
复制
    <mvc:annotation-driven>
        <mvc:message-converters>
            <!-- 处理响应中文内容乱码 -->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="defaultCharset" value="UTF-8"/>
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html</value>
                        <value>application/json</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
  • 设置视图跳转控制器(点击即跳转,中间不能有任何的逻辑)
代码语言:html
AI代码解释
复制
    <mvc:view-controller path="**请求体**" view-name="**页面名称**"/>
  • 开放对静态资源的访问
代码语言:html
AI代码解释
复制
    <mvc:default-servlet-handler/>
  • 可选:文件上传下载的文件解析器
代码语言:html
AI代码解释
复制
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
  • 可选:拦截器
代码语言:html
AI代码解释
复制
    <mvc:interceptors>
        <mvc:interceptor>
            <!-- 期待被拦截的请求 -->
            <mvc:mapping path="**/****"/>
            <!-- 不期待被拦截的请求 -->
            <mvc:exclude-mapping path="**/**"/>
            <ref bean="**拦截器类注解中的value**"/>
        </mvc:interceptor>
    </mvc:interceptors>

在web.xml中整合spring与spring mvc

  • 过滤器1:编码
代码语言:html
AI代码解释
复制
    <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>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  • 过滤器2:隐藏的http请求方法
代码语言:html
AI代码解释
复制
    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  • 启动spring框架
代码语言:html
AI代码解释
复制
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:**applicationContext*.xml**</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
  • 配置spring mvc的前端控制器dispatcher servlet,对浏览器发送的请求进行处理
代码语言:html
AI代码解释
复制
    <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-mvc-controller.xml**</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SSM之SSM整合
文章链接: http://silentcow.cn/2020/08/06/SSM%E6%95%B4%E5%90%88---%E5%A2%9E%E5%88%A0%E6%94%B9%E6%9F%A5/
Rochester
2020/09/01
1.4K0
SSM之SSM整合
SSM整合
SSM整合 导入依赖 Spring的依赖 SpringMVC的依赖 MyBaits的依赖 其他---数据源和驱动 补充jsp两个依赖 写配置 web.xml配置 SpringMVC的配置 整合步骤 1.导入整合包,将dao的实现加入到容器中 MyBaits与Spring整合的关键配置 Spring配置 MyBaits配置----这个其实可有可无 基础测试的完整代码 目录结构 controller层-----页面跳转与转发操作 LockController类 Dao----操作数据库-----使用m
大忽悠爱学习
2021/11/15
7220
SSM笔记(一)框架整合
用了好久了,但都是当初大神配置完后直接粘贴复制过来的,一直没仔细看过相关配置,趁此机会对自己也算是一个复习与深入,也希望对初学者有所帮助。本系列均是基于IDEA的教程。在学校时用的Eclipse,刚出校门接触的MyEclipse,一年后接触到IDEA就从此彻底倒戈。
WindCoder
2018/09/19
1.4K0
SSM笔记(一)框架整合
Mybatis+SSM整合
如果当前包类与子包类重名,会有异常 可以在类上使用注解@Alias(“别名”)
JokerDJ
2023/11/27
1880
Mybatis+SSM整合
【云+社区年度征文】最详细的 SSM整合(纯干货)包含(常用依赖),(如何整合)等
By CaesarChang 张旭  合作: root121toor@gmail.com
编程张无忌
2020/12/04
3220
【云+社区年度征文】最详细的 SSM整合(纯干货)包含(常用依赖),(如何整合)等
SSM整合开发实战 SSM-MALL
采用SSM整合开发一个web系统是这学期web期末项目考核,前前后后花了八九天的时间,一个bug能玩一天,真是令人焦头烂额,著此博客复盘记录,颗粒入仓。写得不好有错请指出
唔仄lo咚锵
2020/09/15
5420
SSM整合(狂神版)
我看了一些其他的整合视频感觉都没有狂神的清晰,层次分的分明白,结合狂神的笔记写的
全栈程序员站长
2022/08/23
6720
SSM整合(狂神版)
SSM整合
Spring提供了监听器ContextLoaderListener,实现ServletContextListener接口,可监听
捞月亮的小北
2023/12/01
2000
快速学习-SSM 整合
持久层实现类代码: 此时不要做任何操作,就输出一句话。目的是测试 spring 框架搭建的结果。
cwl_java
2020/04/08
5050
Java学习之SSM框架整合
前面的学习的Spring、Spring MVC 和Mybatis框架基本已经学习完了,但是要使用起来,我们需要把这三大框架给整合起来一起使用。
全栈程序员站长
2022/07/13
4690
【SpringMVC】010-SSM框架整合
WEB/INF的lib下,除了导入jstl.jar包,还要导入standard.jar包。另外,解压standard.jar包,把.tld文件放在WEB/INF下;
訾博ZiBo
2025/01/06
720
【SpringMVC】010-SSM框架整合
SSM框架(九)整合SSM框架
本篇带来的是SSM框架整合,主要是常用配置文件的全部书写,以后要用直接复制建立项目即可。
HcodeBlogger
2020/07/14
2.6K0
SSM框架(九)整合SSM框架
SpringMVC第五次课 SSM整合
Spring框架,来整合其他框架,想到Spring第一次课,兼容性比较好。还可以整合其他xxx框架。
张哥编程
2024/12/19
500
SSM框架整合:SpringMVC + Spring + MyBatis+Maven
创建一个登陆页面,输入username和password,如果和数据库对应,则跳转的success.jsp,否则跳转到error.jsp
CBeann
2023/12/25
2460
SSM框架整合:SpringMVC + Spring + MyBatis+Maven
SSM整合完整流程
Spring 和 SpringMVC 本身就是同源的,作为 Spring 家族的一个框架,整合不整合都行,我们所说的不整合是指 Spring 和 SpringMVC 创建同一个 IOC 容器,整合是指 Spring 和 SpringMVC 各自创建自己的 IOC 容器,管理各自的组件。(建议整合)
程序员Leo
2023/08/07
4160
SSM整合完整流程
整合SSM
我们整合SSM框架,其实就是用Spring去整理其余二者,主要以Spring为主。其工作流程是Web层调用Service层,而Service层调用Dao层,那么我们就从底层的Dao层开始整合,以TDD推动开发,那么下面给出整理好后的结构图,方便后面参考(使用的是IEDA)
晚上没宵夜
2020/03/10
7960
ssm框架搭建过程
ssm框架搭建过程
Java架构师必看
2021/06/08
1K0
ssm框架搭建过程
SSM三大框架整合
pom工程: 用在创建父工程或聚合工程,用作jar包的版本控制。我们必须指明这个聚合工程的打包方式为pom。
星哥玩云
2022/09/15
9290
SSM三大框架整合
SpringMVC--SSM整合
上篇SpringMVC--请求和响应中,我们对SpringMVC的基本使用有了一定的了解,但对于后台开发还差点火候,即数据库交互,接下来通过整合Mybatis来完成SSM三大框架联合运用开发后台
aruba
2022/05/25
2580
SpringMVC--SSM整合
SSM整合
文章目录 1. Spring + SpringMVC + Mybatis整合 1.1. 依赖 1.2. 配置数据库连接信息 — db.properties文件 1.3. Mybatis和Spring整合 — spring-dao.xml 1.4. Spring与SpringMVC不需要整合 1.5. 业务层的配置文件 – spring-service.xml 1.6. 配置 web.xml 文件 1.7. 包的结构 Spring + SpringMVC + Mybatis整合 依赖 <!-- Spri
爱撒谎的男孩
2019/12/31
7210
相关推荐
SSM之SSM整合
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档