(笔记)SSM框架搭建一些配置

1、Spring+SpringMVC+MyBatis,基本概念

1.1、Spring

​ Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

1.2、SpringMVC

​ Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

1.3、MyBatis

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

2、SSM整合

下面主要记录大致三大框架整合的配置文件,

一、创建一个web项目

并且导入相应的jar包(spring\spring-core\spring-jdbc\spring-aop\spring-context\spring-webmvc\junit\commons-lang\mybatis\mybatis-spring等等)

二、配置web.xml文件

我们在web.xml中加载Spring配置,并且将所有的请求都过滤给Spring MVC来处理,同时设置编码过滤器解决编码问题(最后一项可以不配置)。其中Spring MVC的请求过滤就是一个简单的Servlet配置。

  1. 配置监听器listener(类型为ContextLoaderListener),用于初始化容器加载的配置文件路径,启动web容器时,自动装配applicationContext配置信息,因为它实现了servletContextListener接口
<!--  加载Spring容器配置 -->
          <!-- 配置ContextLoaderListener 监听器 -->
              <!--作用:ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息.因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法 -->
         <listener>
             <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
         </listener>
         <!-- 防止Spring内存溢出监听器 -->
        <listener>
            <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
        </listener>
<!--  设置Spring容器加载所有的配置文件的路径 -->
          <context-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:config/spring/applicationContext.xml</param-value>
         </context-param>
  1. 声明与注册一个servlet(类型为DispatcherServlet作为前端控制器,并且初始化路径)
<!-- 配置SpringMVC核心控制器,将所有的请求(除了刚刚Spring MVC中的静态资源请求)都交给Spring MVC -->
         <servlet>
             <!--配置SpringMVC的前端控制器 -->
    
             <servlet-name>springmvc</servlet-name>
             <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
             <!-- 配置前端控制器的路径 -->
             <init-param>
                 <param-name>contextConfigLocation</param-name>
                 <param-value>classpath:config/springmvc/springmvc.xml</param-value>
             </init-param>
              <!--启动加载一次 -->    
             <load-on-startup>1</load-on-startup>
         </servlet>
<!--  为DispatcherServlet建立映射  -->
         <servlet-mapping>
             <servlet-name>springmvc</servlet-name>
             <!--  2.4.1此处可以可以配置成*.do   -->
             <url-pattern>*.do</url-pattern>
              <!--  可配置拦截所有   -->
              <!-- 拦截所有请求,千万注意是(/)而不是(/*) -->
             <!--<url-pattern>/</url-pattern>-->
         </servlet-mapping>
  1. 注册一个过滤器filter(编码过滤器)
<!-- 解决工程编码过滤器  -->
         <filter>
             <filter-name>encodingFilter</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>forceEncoding</param-name>
                 <param-value>true</param-value>
             </init-param>
         </filter>
         <filter-mapping>
             <filter-name>encodingFilter</filter-name>
             <url-pattern>/*</url-pattern>
         </filter-mapping>

三、配置db.properties文件(数据源)

数据源:
	jdbc.driver=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql:///bookmanage?useSSL=false&serverTimezone=GMT%2B8
    jdbc.username=root
    jdbc.password=sasa
    dbcp.initialSize=3
    dbcp.minIdle=3
    dbcp.maxIdle=5
    dbcp.maxTotal=15

四、applicationContext.xml文件。

这个配置文件中我们主要启用Sping注解驱动,进行静态资源的配置,注解扫描配置和视图解析器配置.

配置信息:
1、自动扫描配置注解的包
<context:component-scan base-package="com.*****"/>

2、注解配置
<context:annotation-config/>

3、引入数据源配置文件 
<context:property-placeholder location="classpath*:properties/*.properties"/>

<!--spring-mybatis配置:--> 
1、配置一个数据源DruidDataSource
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <!-- 数据库连接池配置 -->
        <property name="initialSize" value="20" /><!-- 初始化连接数量 -->
        <property name="minIdle" value="5" />   <!-- 最小空闲连接数量 -->
        <property name="maxActive" value="1500" /> <!-- 最大连接数量 -->
        <property name="validationQuery" value="SELECT 'x'" />
        <property name="testWhileIdle" value="true" />  <!--空闲时是否进行验证,检查对象是否有效 -->
    </bean>

2、配置SqlSessionFactoryBean类型的bean,用于注册并扫描mapper中的sql语句

 <!--配置生产SqlSession工厂-->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!--配置pojo包,给包下所有包起别名-->
        <property name="typeAliasesPackage" value="com.zuka.pojo"></property>
         <!-- 可以暂时不配置 -->
        <property name="configLocation" value="classpath:sqlMapConfig.xml" />
    </bean>

3、配置MapperScannerConfigurer,自动扫描DAO接口;

  <!--扫描接口包路径,生成包下所有接口的代理对象,并放入spring容器中-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.zuka.dao"/>
    </bean>

4、配置注解式方式事务;未使用

5、spring-aop配置
    <!--配置spring框架声明式事物管理-->

        <!--配置事物管理器-->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
        <!--事物的通知-->
        <tx:advice id="interceptor" transaction-manager="transactionManager">
           <!-- 传播行为 -->
            <tx:attributes>
                <tx:method name="find*" read-only="true"/>
                 <!-- 设置所有方法为默认 -->
                <tx:method name="*" isolation="DEFAULT"/>
                <tx:method name="update*" propagation="REQUIRED" />
                <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
            </tx:attributes>

        </tx:advice>
        <!--事物的aop增强,切面-->
        <aop:config>
            <aop:advisor advice-ref="interceptor" pointcut="execution(* com.itheima.service.impl.*ServiceImpl.*(..))"/>
        </aop:config>

六、配置spring-mvc.xml

   1、springmvc前端控制器扫描包
       <!--组件扫描-->
       <context:component-scan base-package="com.zuka.controller"/>

   2、启用springMVC注解模式
       !--开启springmvc注解的支持-->
       <mvc:annotation-driven conversion-service="conversionServiceFactoryBean"/>

   3、静态资源配置
       <!--过滤静态资源-->
       <mvc:resources location="/assets/css/" mapping="/js/**"/>
       <mvc:resources location="/assets/css/" mapping="/css/**"/>
       <mvc:resources location="/assets/img/" mapping="/img/**"/>
       <mvc:resources location="/assets/fonts/" mapping="/fonts/**"/>

   4、配置json转换器,未配置
   <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
   <bean id="mappingJacksonHttpMessageConverter"   class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
       <property name="supportedMediaTypes">
           <list>
           		<value>text/html;charset=UTF-8</value>
           </list>
       </property>
   </bean>
   <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
   <bean
   class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
       <property name="messageConverters">
           <list>
           		<ref bean="mappingJacksonHttpMessageConverter" />	<!-- JSON转换器 -->
           </list>
       </property>
   </bean>
   
   5、配置对模型试图名的解析
       <!--配置的视图解析器对象-->
       <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/pages/"/>
       <property name="suffix" value=".jsp"/>
       </bean>

   6、配置拦截器

七:配置mybatis-config.xml

<configuration>
    <!-- 全局配置 -->
    <settings>
        <!--允许 JDBC 支持自动生成主键-->
        <setting name="useGeneratedKeys" value="false"/>
        <!--是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典
 Java 属性名 aColumn 的类似映射。 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值