1. 程式人生 > 實用技巧 >ssm框架整合搭建流程

ssm框架整合搭建流程

剛學完Mybatis,Spring,SpringMVC

嘗試進行一個整合開發,記錄一下搭建流程

1.環境與開發工具

IDEA

MySQL8.0.16

Tomcat 9.0.21

Maven 3.6.1

2.專案準備

1.建立一個maven工程

2.依賴注入

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version
>4.12</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency> <dependency> <
groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId
> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.8.RELEASE</version> </dependency> </dependencies>

3.配置靜態資源匯出

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

4.連線資料庫

這裡可能連線失敗報錯[08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.

是因為系統預設的時區與IDEA連線資料庫的時區 (MySQL預設時區為UTC) 不一致

按照格林威治的時間,我們屬於東八區時間,領先UTC八個小時,所以說存在8小時的時差,需要修改

MySQL 8.0以上才存在此問題,如使用的是MySQL 5.7可以忽略

3.編寫配置檔案

1.applicationContext.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="classpath:spring-dao.xml"/>
    <import resource="classpath:spring-service.xml"/>
    <import resource="classpath:spring-mvc.xml"/>

</beans>

2.mybatis-config.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>

    <typeAliases>
        <package name="xxx.pojo"/>
    </typeAliases>

    <mappers>
        <mapper class="xxx.dao.xxxMapper"/>
    </mappers>

</configuration>

3.database.properties

4.編寫Mybatis層

1.與資料表對應的簡單實體類(pojo)

2.與各實體類對應的Mapper介面(dao)

3.各介面的實現類(service)

5.Spring整合dao層

1.關聯資料庫配置檔案(database.properties)

    <context:property-placeholder location="classpath:database.properties"/>

2.連線池

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driver" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

這裡使用的是Druid,也可以使用c3p0、dbcp等

3.sqlSessionFactory

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

4.配置dao介面掃描包,動態實現dao介面注入到Spring容器

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.initial.dao"/>
    </bean>

6.Spring整合Service層

1.掃描service下的包

    <context:component-scan base-package="com.initial.service"/>

2.將業務類注入Spring(可註解實現)

3.宣告式事務配置

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

7.整合SpringMVC

1.給maven專案增加web支援

2.在web.xml配置DispathcherServlet

    <servlet>
        <servlet-name>spring-mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring-mvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

3.配置亂碼過濾

    <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>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

注意:/和/*的區別,前者不會掃描.jsp檔案,後者會。所以過濾器這裡需要寫/*,而DispathcherServlet核心分發器是/。

4.設定session過期時間

    <session-config>
        <session-timeout>15</session-timeout>
    </session-config>

5.配置spring-mvc.xml(處理器對映器、處理器介面卡、檢視解析器)

其中,處理器對映器和處理器介面卡在使用了註解驅動的情況下可以省略

    <!--註解驅動-->
    <mvc:annotation-driven/>
    <!--靜態資源過濾-->
    <mvc:default-servlet-handler/>
    <!--掃描controller-->
    <context:component-scan base-package="com.initial.controller"/>
    <!--檢視解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>