SSM框架整合(基础)

Spring整合SpringMVC

Spring整合SpringMVC时,两者的配置文件不需要做太多改变,当SpringMVC作为表现层响应的时候,可直接利用Spring作为业务层进行相关的操作,但是需要在SpringMVC的配置文件中加上监听器(需要的话可加上Spring配置文件的具体路径),否则SpringMVC响应的时候,无法找到Spring的配置文件。

<!-- 配置 spring mvc 的核心控制器 -->
<servlet>
<servlet-name>springmvcDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置初始化参数,用于读取 springmvc 的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 配置 servlet 的对象的创建时间点:应用加载时创建。取值只能是非 0 正整数,表示启动顺 序 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvcDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

这是web.xml文件,<servlet-mapping>标签中说明了拦截所有请求,再通过<servlet-name>指向org.springframework.web.servlet.DispatcherServlet
<load-on-startup>标签说明了在加载web.xml文件时即进行servlet的加载,而<init-param>为正数则说明了在加载servlet时需要进行初始化相关的文件,因为加载web.xml文件时需要自动加载SpringMVC.xml文件,故<load-on-startup>标签通常为正数。

<!-- 扫描controller的注解,别的不扫描 -->
<context:component-scan base-package="com.derder.ssm.controller">
</context:component-scan>
<!-- 配置视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- JSP文件所在的目录 -->
<property name="prefix" value="/pages/" />
<!-- 文件的后缀名 -->
<property name="suffix" value=".jsp" />
</bean>
<!-- 开启对SpringMVC注解的支持 -->
<mvc:annotation-driven />

<!-- 扫描controller的注解,别的不扫描 -->
只写一个SpringMVC的demo时,如果通过注解的方式,则也是需要在Controller类上写@controller注解并在SpringMVC.xml文件上指明要扫描该注解。

 

 

 

Spring整合Mybatis

Spring整合Mybatis时,需要将Mybatis的配置文件加到Spring配置文件中,Mybatis原有的配置文件可删除掉,Spring中需配置连接池和DAO接口所在包(配置DAO接口所在包用于扫描,而mybatis原来的配置文件,如果是用xml形式,则在原mybatis配置文件中写入xml文件的路径,如果是注解的形式,则写出注解的类所在的位置或者用扫描的形式写出要扫描的包,故在mybatis与spring结合的配置文件中可看到DAO包被扫描了两次),还要配置SqlSessionFactory工厂,便可将SqlSessionFactory交给Spring框架处理,如此一来,就可以利用Spring读取配置文件的方式获得DAO的代理对象,而不用原来Mybatis中利用工厂手动获取代理对象。

原来的通过工厂获取代理对象

// 加载配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 创建SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        // 创建SqlSession对象
        SqlSession session = factory.openSession();
        // 获取到代理对象
        AccountDao dao = session.getMapper(AccountDao.class);

现在的通过Spring框架获取代理对象

 // 加载配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        // 获取对象
        AccountService as = (AccountService) ac.getBean("accountService");
        // 调用方法
        as.findAll();

Spring和Mybatis结合后,Spring的配置文件为

 <!--Spring整合MyBatis框架-->
    <!--配置连接池-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql:///ssm"/>
        <property name="user" value="root"/>
        <property name="password" value="root"/>
    </bean>

    <!--配置SqlSessionFactory工厂-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!--配置AccountDao接口所在包-->
    <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.itcast.dao"/>
    </bean>

注:

<!-- 开启注解扫描,管理service和dao -->
    <context:component-scan base-package="com.itheima.ssm.service">
    </context:component-scan>
    <context:component-scan base-package="com.itheima.ssm.dao">
    </context:component-scan>
这里让我很疑惑,为什么要去扫描DAO包,当利用Spring注解来完成依赖注入的时候,是需要在Autowire所注入的那个类的上方通过注解声明该类是一个组件类的,而Spring和mybatis整合时,DAO层却没有任何组件类相关的声明。
事实上DAO层上是可以写@Repository注解的,也可以不写,不写的时候去扫描DAO包,
详情如下:https://blog.csdn.net/java280580332/article/details/72123890

 

思维导图如下:

 

日期:

SSM框架基础部分的相关博客都是我很久以前的笔记,搬上来而已

放只允允镇楼:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文档压缩了SSM三大框架的学习思维导图,可以帮您更方便更高效的学习,资源制作过程相当繁琐,好资源且下且珍惜吧。 SSMSpring+SpringMVC+MyBatis框架集由SpringMyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架Spring   Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。   Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。   SpringMVC   SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。   mybatis   mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。 页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值