1. 程式人生 > 其它 >Tomcat與Servlet

Tomcat與Servlet

具體程式碼放在gitee上,可直接下載參考 ssmdemo https://gitee.com/liqiju/ssmdemo ;本文章只對配置檔案進行簡單介紹;

1. 整合思路

​ Spring MVC是Spring框架中的一個模組,所以Spring MVC與Spring之間不需要整合,只需要引入相應jar包就可以直接使用。SSM框架的整合只需要在Spring與MyBatis之間和Spring MVC與MyBatis之間進行整合。

​ 通過Spring例項化Bean,然後呼叫例項物件中的查詢方法來執行MyBatis對映檔案中的SQL語句,如果能夠正確查詢出資料庫中的資料,就可以認為Spring與MyBatis框架整合成功。

​ 如果可以通過前臺頁面來執行查詢方法,並且查詢出的資料能夠在頁面中正確顯示,那麼可以認為SSM三大框架整合成功。

2. SSM程式碼結構

3. 配置檔案介紹

3.1 pom.xml

<?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>com.xxx</groupId>
    <artifactId>ssmdemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>ssmdemo Maven Webapp</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <!--  spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.19</version>
        </dependency>
        <!--  spring jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.19</version>
        </dependency>
        <!--  spring webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.15</version>
        </dependency>
        <!--  mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!--  druid連線池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>
        <!--  mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <!--  mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
        <!--  jackson 必須匯入,否則使用@RestController或@ResponseBody會報錯  -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.13.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.13.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.2.2</version>
        </dependency>
    </dependencies>

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

3.2 db.properties

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/你的資料庫?useSSL=false
jdbc.username=你的使用者名稱
jdbc.password=你的資料庫密碼
jdbc.maxActive=30
jdbc.maxWait=10
jdbc.initialSize=5

3.3 applicationContext.xml

​ 在實際開發時,為了避免Spring配置檔案中的資訊過於臃腫,通常會將Spring配置檔案中的資訊按照不同的功能分散在多個配置檔案中。

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 1. 讀取db.properties -->
    <context:property-placeholder location="classpath:db.properties"/>

    <!-- 2. 配置資料來源(druid) -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClass}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="initialSize" value="${jdbc.initialSize}"/>
        <property name="maxActive" value="${jdbc.maxActive}"/>
        <property name="maxWait" value="${jdbc.maxWait}"/>
    </bean>

    <!-- 3. 配置mybatis工廠(mybatis-spring提供) -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--  注入資料來源 -->
        <property name="dataSource" ref="dataSource"/>
        <!--  指定mybatis配置檔案位置 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

    <!--  4. 配置mapper掃描器(mybatis-spring提供) -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xxx.mapper"/>
    </bean>
</beans>

3.4 mybatis-config.xml

​ 由於在Spring配置檔案中已經配置了資料來源資訊以及mapper介面檔案掃描器,因此在MyBatis的配置檔案中只需要根據POJO類路徑進行別名配置即可。

<?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>的子元素必須按照由上到下的順序進行配置,否則MyBatis在解析XML配置檔案的時候會報錯-->
<configuration>
    <!-- 配置別名 -->
    <typeAliases>
        <package name="com.xxx.entity"/>
    </typeAliases>
</configuration>

3.5 springmvc-config.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"
       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.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 1. 配置會自動向上下文中註冊RequestMappingHandlerMapping和RequestMappingHandlerAdapter兩個Bean,
    並提供對讀寫XML和讀寫JSON等功能的支援 -->
    <mvc:annotation-driven/>

    <!-- 2. 讓Spring MVC不處理靜態資源 -->
    <mvc:default-servlet-handler/>

    <!-- 3. 掃描controller, service包 -->
    <context:component-scan base-package="com.xxx.controller,com.xxx.service"/>

    <!-- 4. 檢視解析器(jsp)-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--設定字首-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--設定字尾-->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

3.6 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">
    <!-- 1. 使用監聽器載入applicationContext.xml配置檔案 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 2. 配置Springmvc前端控制器 -->
    <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:springmvc-config.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>

    <!-- 編碼過濾器 -->
    <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>
</web-app>

4. 我的部落格

歡迎訪問我的部落格 https://www.cnblogs.com/liqiju/