(筆記)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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章