Java开发之ssm三大框架整合

 更新时间:2022年05月16日 09:18:35   作者:仰望星空的快乐  
SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层,使用spring MVC负责请求的转发和视图管理,spring实现业务对象管理,mybatis作为数据对象的持久化引擎

1.springmvc

和只有spring-mvc时一样,web.xml spring-mvc.xml

spring-mvc.xml

<beans 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:mvc="http://www.springframework.org/schema/cache"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
<!--    注解驱动-->
    <mvc:annotation-driven/>
<!--    静态资源过滤-->
<!--    开启jsp专用的视图控制器 internalresourceresoler-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--    设置前缀-->
        <property name="prefix" value="/WEB-INF/templates/"></property>
        <!--    设置后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>
<!--    扫描 controller注解-->
    <context:component-scan base-package="com.hxut.rj1192.zyk.Controller"></context:component-scan>
</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
<!--    设置拦截器,解决参数乱码,一定要在设置HiddenHttpMethodFilter请求前,要在其他拦截器和servlet执行前设置编码-->
    <filter>
        <filter-name>paramencoding</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>
<!--        解决返回的请求数乱码  response-->
        <init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
<!--拦截所有页面-->
    <filter-mapping>
        <filter-name>paramencoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
<!--servlet 将所有除了jsp的页面拦截,交给dispatcherservlet视图控制器,并设置dispatcherservlet的xml文件的位置-->
    <servlet-mapping>
        <servlet-name>all</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>all</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:Spring-springmvc.xml</param-value>
        </init-param>
    </servlet>
<!-- 拦截所有请求,并交给hiddenhttpmethodfilter 检测否是post请求,且_method不为空,如果是,就将请求类型改为_method的值-->
    <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>
</web-app>

2.spring-dao.xml与mybatis-config.xml

主要就是spring整合mybatis

spring整合mybatis

在上面的基础上,去掉成接口的实现类了,需要配置dao接口扫描包,我的理解是这个dao接口扫描包中有datasource,有mapper的扫描范围, 它会自动生成这些接口对应的mapper,并将接口的mapper放到xml文件中,所以在spring-service中,直接

<property name="bookmapper" ref="bookmapper"></property>

引用即可

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context
       https://www.springframwork.org/schema/context/spring-context.xsd">
    <!-- 读取数据库配置文件-->
    <context:property-placeholder location="classpath:database.properties"></context:property-placeholder>
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxPoolSize" value="30"/>
        <property name="minPoolSize" value="10"/>
        <!-- 关闭连接后不自动commit -->
        <property name="autoCommitOnClose" value="false"/>
        <!-- 获取连接超时时间 -->
        <property name="checkoutTimeout" value="10000"/>
        <!-- 当获取连接失败重试次数 -->
        <property name="acquireRetryAttempts" value="2"/>
    </bean>
    <bean id="sqlsessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>
<!--配置dao接口扫描包 ,动态的实现了dao接口可以注入到spring容器中
  就是用来代替BookMapperImpl类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--        注入sqlsessionfactory-->
<!--个人理解,这个dao接口扫描包中有datasource,有mapper的扫描范围,
它会自动生成这些接口对应的mapper,并将接口的mapper放到xml文件中,所以在spring-service中,直接
   <property name="bookmapper" ref="bookmapper"></property> 引用即可-->
        <property name="sqlSessionFactoryBeanName" value="sqlsessionFactory"></property>
<!--        要扫描的dao包, 会自动生成包下的类的接口的实现类-->
        <property name="basePackage" value="com.hxut.rj1192.zyk"></property>
    </bean>
</beans>

mybatis-config.xml 详细在上面的mybatis整合spring的文章中,它做两件事,配置映射文件路径,配置接口扫描范围,它被import到 spring-dao.xml中。

<?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>
<!--    配置数据源交给spring了-->
    <!--    给类起别名-->
    <typeAliases>
        <package name="com.hxut.rj1192.zyk.mapper"/>
    </typeAliases>
    <!--    设置映射文件路径-->
    <mappers>
        <mapper resource="com/hxut/rj1192/zyk/mapper/Bookmapper.xml"></mapper>
    </mappers>
</configuration>

3.spring-service.xml

在这个文件中要进行事务的处理(事务本来就应该是在service层),要将service层的类全部放到ioc容器中,然后这些类中因为调用了dao层的类,然后因为刚才第二部配置了接口扫描包,直接ref获取mapper即可

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context
       https://www.springframwork.org/schema/context/spring-context.xsd">
<!--    开启注解驱动-->
    <context:component-scan base-package="com.hxut.rj1192.zyk.service"></context:component-scan>
    <bean id="booksServiceimpl" class="com.hxut.rj1192.zyk.service.BooksServiceimpl">
        <property name="bookmapper" ref="bookmapper"></property>
    </bean>
<!--    声明式事务-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!--       注入数据源 -->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
</beans>

4.引用

将这些文件的引用放到一个大的xml文件中,这个文件只放引用,这样就很容易看

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <import resource="applicationContext.xml"></import>
    <import resource="spring-dao.xml"></import>
    <import resource="Spring-Service.xml"></import>
    <import resource="Spring-springmvc.xml"></import>
</beans>

或者在project structure中设置 spring application context,效果是一样的

到此这篇关于Java开发之ssm三大框架整合的文章就介绍到这了,更多相关Java ssm框架整合内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java 获取本机IP地址的实例代码

    Java 获取本机IP地址的实例代码

    这篇文章主要介绍了Java 获取本机IP地址,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • MyBatis-Generator的配置说明和使用

    MyBatis-Generator的配置说明和使用

    本文主要介绍了MyBatis-Generator的配置说明和使用的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 使用maven实现redis与idea的连接问题

    使用maven实现redis与idea的连接问题

    这篇文章主要介绍了使用maven实现redis与idea的连接问题,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • SpringBoot整合Quartz及异步调用的案例

    SpringBoot整合Quartz及异步调用的案例

    Quartz是一个完全由java编写的开源作业调度框架、它的简单易用受到业内人士的一致好评,这篇文章主要介绍了SpringBoot整合Quartz及异步调用,需要的朋友可以参考下
    2023-03-03
  • java 中迭代器的使用方法详解

    java 中迭代器的使用方法详解

    这篇文章主要介绍了java 中迭代器的使用方法详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • Java 将List中的实体类按照某个字段进行分组并存放至Map中操作

    Java 将List中的实体类按照某个字段进行分组并存放至Map中操作

    这篇文章主要介绍了Java 将List中的实体类按照某个字段进行分组并存放至Map中操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Java实战房屋租赁网的实现流程

    Java实战房屋租赁网的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现一个房屋租赁网站,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • SpringBoot多文件分布式上传功能实现

    SpringBoot多文件分布式上传功能实现

    本文详细介绍了如何在SpringBoot中实现多文件分布式上传,并用代码给出了相应的实现思路和实现步骤,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • Java基础篇之反射机制详解

    Java基础篇之反射机制详解

    本文详细讲解了Java基础篇之反射机制,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • Java中创建对象的5种方式总结

    Java中创建对象的5种方式总结

    本篇文章主要介绍了Java中创建对象的5种方式总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02

最新评论