SSM框架整合需要的配置

才刚刚开始学没多久,有很多的不懂,我看了很多的ssm框架整合配置,但是每个人的配置都不一样,看的太杂感觉哪个都不对,应该是我太菜,一直都很相信自己,还要多多学习我自己整合了一下ssm框架整合需要配置的一些简单的配置

SSM框架整合需要配置的东西:
一、 applicationContext.xml 配置文件(有些也叫mybatis-config.xml,spring-mybatis.xml)
作用就是: spring容器的配置文件,实现框架整合
1.添加约束条件

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.2.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">

2.开始扫描注解,用来扫描文件(自动扫描)

<!--自动扫描包-->
<!--context:component-scan可以扫描controller和service等-->
  <context:component-scan base-package="路径(com.xx)">
  <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.javen.mapper" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>
    <!-- 映射器、适配器等自动加载 -->
	<mvc:annotation-driven/>
	<!-- aop -->
   	<aop:aspectj-autoproxy/>

3.加载jdbc.propertise文件,并做好配置数据源

<context:property-placeholder location="classpath:jdbc.properties" />
<!--org.apache.commons.dbcp.BasicDataSource这个包好像已经不支持了,我导的这个jar包里,已经不支持这个了-->
  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

 <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>

jdbc.propertise配置一般为一下所示

jdbc.url=jdbc:mysql://localhost:3306/数据库名称?characterEncoding=utf-8
jdbc.username=root(用户名)
jdbc.password=123456(密码)
jdbc.Driver=com.mysql.jdbc.Driver

4.配置sqlSessionFactory(Spring和Mybatis整合)
配置sqlSessionFactory会话工厂,SqlSessionFactoryBean是用来产生sqlSessionFactory的 -->

  <!-- sqlsession的作用是用来执行sql语句,创建sqlsession执行sql语句 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <!-- 加载mybatis的全局配置文件,放在classpath下的mybatis文件夹中 -->
<property name="configLocation" value="classpath:mybatis-configuration.xml" />
  <!-- 加载数据源,使用上面配置好的数据源 -->
<property name="dataSource" ref="dataSource1" />
  <!-- 映射mapper文件(mapper.xml文件) -->
<property name="mapperLocations" value="classpath:com.mapper.*Mapper.xml" />
  </bean>

在配置sqlSessionFactory时,配置mapperLocations属性,用来加载mapper.xml文件,mapper扫描器配置则如上所示
mapper扫描器中的两个property的顺序不能交换,即SQLSessionFactoryBeanName必须在前

5.配置事务管理器

<!-- 事务管理器 -->
    <bean id="myTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    	<property name="dataSource" ref="dataSource1"></property>
    </bean>
    <tx:annotation-driven transaction-manager="myTransactionManager"/>
还有一种事务管理器,上面一种适初学者,不需要考虑那么多东西,非常简单
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

        <!--控制住数据源  -->
        <property name="dataSource" ref="DataSource"></property>
    </bean>  <!--开启基于注解的事务,使用xml配置形式的事务(必要主要的都是使用配置式)  -->
    <aop:config>
        <!-- 切入点表达式 -->
        <aop:pointcut expression="execution(* cn.hfbin.crud.service..*(..))" id="txPoint"/>
        <!-- 配置事务增强 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>
    </aop:config>

    <!--配置事务增强,事务如何切入  -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!-- 所有方法都是事务方法 -->
            <tx:method name="*"/>
            <!--以get开始的所有方法  -->
            <tx:method name="get*" read-only="true"/>
        </tx:attributes>
    </tx:advice>

6.拦截器(和过滤器功能都差不多)

<!-- 拦截器配置 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- 拦截所有的请求url -->
			<mvc:mapping path="/**"/>
			<!-- 拦截器具体位置 -->
			<bean class="com.HandlerInterceptor.HandlerInterceptor1"></bean>
		</mvc:interceptor>
	</mvc:interceptors>
	

二、spring-mvc配置文件

主要是自动扫描控制器,视图模式,注解的启动这三个
添加约束条件

<?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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

1.扫描controller 因为springmvc作用于的都是表现层,而与表现层相联系的
就是controller,这样比较好记一点(个人理解)

<!-- SpringMVC 的配置文件 ,包含网站跳转的逻辑控制器 -->
    <context:component-scan base-package="controller包的路径" use-default-filters="false">
    <!-- 只扫描控制器 -->
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

2.注解驱动

<!-- 能支持springmvc更高级的一些功能:JSR303校验  ,快捷的ajax ,映射动态请求-->
   <mvc:annotation-driven/>

3.视图解析器

  <!-- 配置ViewResolver 。可用多个ViewResolver 。使用order属性排序。   InternalResourceViewResolver 放在最后-->
    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="order" value="1"></property>
        <property name="mediaTypes">
            <map>
                <!-- 告诉视图解析器,返回的类型为json格式 -->
                <entry key="json" value="application/json" />
                <entry key="xml" value="application/xml" />
                <entry key="htm" value="text/htm" />
            </map>
        </property>
        <property name="defaultViews">
            <list>
                <!-- ModelAndView里的数据变成JSON -->
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
            </list>
        </property>
        <property name="ignoreAcceptHeader" value="true"></property>
    </bean>

     <!-- 定义跳转的文件的前后缀 ,视图模式配置-->  
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
        <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->  
        <property name="prefix" value="/WEB-INF/jsp/" />  
        <property name="suffix" value=".jsp" />  
    </bean>  

还有一种简单明了的,适用于菜鸟,比如像我这样的0.0

<!-- 视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	    <!--使用jstl的的view,默认为自动加载-->
	    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>	
	    <!--下面两个都是为了以后视图解析上面的使用不用写前缀和后缀-->
	    <!-- 配置jsp路径的前缀 -->
	 <!--   <property name="prefix" value="/jsp/"/> --> 
	    <!-- 配置jsp路径的后缀 -->
	    <property name="suffix" value=".jsp"/>
	</bean>

4.有时候一些项目需要上传文件这种的,这里还有一个配置上传文件

   <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->  
    <bean id="multipartResolver"    
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
        <!-- 默认编码 -->  
        <property name="defaultEncoding" value="utf-8" />    
        <!-- 文件大小最大值 -->  
        <property name="maxUploadSize" value="10485760000" />    
        <!-- 内存中的最大值 -->  
        <property name="maxInMemorySize" value="40960" />    
        <!-- 启用是为了推迟文件解析,以便捕获文件大小异常 -->
        <property name="resolveLazily" value="true"/>
    </bean>   

三、sqlMapConfig.xml (mybats的配置文件,整合后 几乎只剩下 (别名)了)
添加约束条件

<?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">

1.别名设置的方法(扫描的是pojo也叫做javaBean
(一般有些老师会叫pojo为javaBean)的类

单个配置:
  <typeAliases> 
   <typeAlias type="cn.edu.hpu.ssm.po.User(路径com.bean.User)"
    alias="user"/>     
  </typeAliases>
  
  批量设置(推荐)
  <typeAliases>  
               <package name="cn.edu.hpu.ssm.po(如上,路径)"/>              
  </typeAliases> 

2.扫描mapper.xml文件

<mappers>  
         <mapper resource="sqlmap/User.xml"/>  
    <mapper resource="mapper/UserMapper.xml"/>  
</mappers>

但是一般来说这里我们不需要,我们一般都是在applicationContext.xml里面配置的
所以我们这里不需要配置mapper.xml的扫描文件
上面applicationContext.xml配置的那里第四点
4.配置sqlSessionFactory(Spring和Mybatis整合)
配置sqlSessionFactory会话工厂,SqlSessionFactoryBean是用来产生sqlSessionFactory的 -->

   <!-- sqlsession的作用是用来执行sql语句,创建sqlsession执行sql语句 -->
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
   <!-- 加载mybatis的全局配置文件,放在classpath下的mybatis文件夹中 -->
  <property name="configLocation" value="classpath:mybatis-configuration.xml" />
   <!-- 加载数据源,使用上面配置好的数据源 -->
  <property name="dataSource" ref="dataSource1" />
   <!-- 映射mapper文件 -->
  <property name="mapperLocations" value="classpath:com.mapper.*Mapper.xml" />
    </bean>

直接扫描的,所以一般来说sqlMapConfig.xml都不用配置的
在配置sqlSessionFactory时,配置mapperLocations属性,用来加载mapper.xml文件,mapper扫描器配置则如上所示
mapper扫描器中的两个property的顺序不能交换,即SQLSessionFactoryBeanName
必须在前

四、web.xml的配置,这个大家推荐的都差不多

1.启动spring容器

 <!-- needed for ContextLoaderListener -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    
<!--applicationContext.xml上面配置的,这个有的也叫spring-mybatis.xml
各有各的命名方法,反正这个就差不多是spring和mybatis整合在一起的配置文件-->

    <!-- Bootstraps the root web application context before servlet initialization -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
  1. 启动springmvc的前端控制器 ,Spring MVC Servlet-
<servlet>  
        <servlet-name>SpringMVC</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath:spring-mvc.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
        <async-supported>true</async-supported>  
    </servlet>  
    <!--spring-mvc.xml配置文件-->
    <servlet-mapping>  
        <servlet-name>SpringMVC</servlet-name>  
        <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>  
    <welcome-file-list>  
        <welcome-file>/index.jsp</welcome-file>  
    </welcome-file-list>  

3.过滤器

  <!-- 编码过滤器 -->  
    <filter>  
        <filter-name>encodingFilter</filter-name>  
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
        <async-supported>true</async-supported>  
        <init-param>  
            <param-name>encoding</param-name>  
            <param-value>UTF-8</param-value>  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>encodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
        <!--/*就是所有的请求都要过滤一次-->
    </filter-mapping>  

4.监听器

   <!--  <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>   -->
    <!-- 防止Spring内存溢出监听器 -->  
    <!-- <listener>  
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
    </listener>  --> 

关于ssm整理的依赖,以及一部分包的作用

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>ssmZHKJ</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <properties>
    <junit.version>4.12</junit.version>
    <spring.version>4.1.3.RELEASE</spring.version>
    <mybatis.version>3.2.8</mybatis.version>
    <mybatis.spring.version>1.2.2</mybatis.spring.version>
    <mysql.version>5.1.32</mysql.version>
    <druid.version>1.0.9</druid.version>
    <jstl.verison>1.2</jstl.verison>
    <servlet.version>2.5</servlet.version>
    <jsp.verison>2.0</jsp.verison>
    <tomact.version>2.2</tomact.version>

  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>${mybatis.spring.version}</version>
    </dependency>

    <!--mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>

    <!--阿里巴巴数据库连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>${druid.version}</version>
    </dependency>

    <!--spring-->

    <!-- Spring提供在基础IoC功能上的扩展服务,
    此外还提供许多企业级服务的支持,如邮件服务、
    任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--REST Web服务和Web应用的视图控制器的实现-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--spring核心组件包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--SpringIoC(依赖注入)的基础实现-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>


    <!--JDBC支持包,包括数据源设置和JDBC访问支持-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <!-- SpringMVC支持WEB端应用部署架构-->
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!-- Spring提供对AspectJ框架的整合-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.4</version>
    </dependency>

    <!--JSP&servlet-->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>${jstl.verison}</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>${servlet.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>${jsp.verison}</version>
    </dependency>

  </dependencies>

  <build>

    <!--配置资源拷贝插件-->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>

    </resources>


    <!--配置tomact插件-->
    <plugins>
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.2</version>
      <configuration>
        <path>/</path>
        <port>8080</port>
      </configuration>
    </plugin>
    </plugins>
  </build>
</project>

这些差不多就是我的总结了,现在理解不是很深,等后面慢慢熟悉了过后再回来慢慢改第一次做笔记很多都做得不够好,这次的这个ssm框架的配置总结有在网上找的资料,也有一些自己的理解,总的来说的话,我觉得还是可以的,我感觉初学者也还是可以看懂的,以后还有时间,自己变强了,还是会回来改一下自己的笔记的。
第一次做笔记,累的够呛。。。。。。哈哈哈哈

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页