13.SSM集成

原因分析

對於咱們如今的中大型項目於來講,用得最多的,應該就數咱們的SSM,記Spring、SpringMvc、Mybatis,那麼咱們今天,就會來完成他們的集成。須要說明一下,本次集成我沒有使用maven項目,若是須要maven項目的,能夠直接講jar包刪除,在pom.xml中引入依賴便可,其餘的內容都沒有任何變化。前端

前期準備

1.jar包

這裏的jar包有點多,我就直接截圖出來,也會放一個某雲的連接,有須要能夠直接提取
image.png
若有須要,請點擊,提取碼4fy8java

2.數據庫

數據庫的話,能夠在裏面建立一個user表,裏面添加幾條數據,目的是爲了在部署到tomcat上面的時候測試連接數據庫提取數據成功與否mysql

3.開發工具

我所用的是idea1903版本的,像eclipse也同理web

具體步驟

1.新建一個java web項目

image.png
image.png

2.開始導入jar包

2.1在你的web/WEB-INF文件夾下面建一個名叫lib的文件夾,而後將全部的jar包複製進這個文件夾裏面
2.2右鍵該文件夾,而後點擊Add as Library,即完成導包操做

image.png

3.在src下面建立所需的包及類

下圖是我建立好以後的樣子
image.pngspring

4.xml配置

4.1 Spring配置文件

這裏的每一項都寫了註釋,就很少作解釋,只是有一點須要注意的是,寡慾配置的事務即tx命名空間,若是咱們直接在下面寫而不先寫上面的命名空間的話,會將tx前面的schema自動寫爲cache,從而咱們後續在運行的時候,就會報一個No bean named 'cacheManager' is defined的錯誤,須要注意一下,因此特別提一下sql

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

<!--引入數據庫鏈接配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>

<!--數據庫鏈接池-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${driverClassName}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!--配置加載數據庫路徑-->
    <property name="dataSource" ref="dataSource"/>
    <!--配置加載mapper資源文件路徑-->
    <property name="mapperLocations" value="classpath:com/arvin/ssm/mapper/*Mapper.xml"/>
<!--給對應包下面的domain或者類配置別名,配置完了默認爲類名,通常建議類名首字母小寫-->
    <property name="typeAliasesPackage">
        <value>
            com.arvin.ssm.domain
            com.arvin.ssm.query
        </value>
    </property>
</bean>

<!--配置掃描mapper的路徑-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.arvin.ssm.mapper"></property>
</bean>

<!--事務配置-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<!--配置事務對註解的支持-->
<tx:annotation-driven/>

<!--掃描service包-->
<context:component-scan base-package="com.arvin.ssm.service"/>

</beans>數據庫

4.2 SpringMvc配置文件

這個配置文件相對簡單,只是須要注意的是mvc命名空間前面的schema也存在上述的問題,須要你們注意一下,這個是idea自動代碼提示生成的,目前我尚未更好的解決辦法,只有看到了以後本身手動改成schemaapache

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


<!--Controller包掃描-->
<context:component-scan base-package="com.arvin.ssm.controller"/>
<!--靜態資源放行-->
<mvc:default-servlet-handler/>
<!--開啓註解支持-->
<mvc:annotation-driven/>
<!--視圖解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views"/>
    <property name="suffix" value=".jsp"/>
</bean>

</beans>spring-mvc

4.3 數據庫鏈接池配置文件

這個很簡單就很少作說明了tomcat

driverClassName=com.mysql.jdbc.Driver
    username=root
    password=123456
    url=jdbc:mysql:///mybatis
4.4 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">

    <!--前端控制器-->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!--加載mvc的配置文件-->
            <param-value>classpath:applicationContext-mvc.xml</param-value>
        </init-param>
        <!--在web應用程序啓動的時候就加載這個servlet-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--配置加載spring的配置文件-->
    <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>

    <!--字符編碼集過濾-->
    <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.5 關於mapper的配置

這裏有須要注意的點了

4.5.1 建的位置必需要和對應mapper所在類的文件夾名相同

舉例說明:我這裏的UserMapper.xml所在位置爲\com\arvin\ssm\mapper,那麼咱們寫的配置文件也必需要和這個對應起來
image.png
image.png
即作成以下圖
image.png
image.png

4.5.2 別名的配置,都有寫註釋,能夠參考
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--這裏的namesprace對應的爲咱們UserMapper接口的全限定名-->
<mapper namespace="com.arvin.ssm.mapper.UserMapper">
    <!--這裏是我預先抽取的公共sql語句-->
    <sql id="showAll">
        select * from user
    </sql>
    <!--這裏的id,對應的是UserMapper中的方法名-->
    <!--resultTpye能夠寫對應domain的全限定名,我這裏寫了類名首字母小寫是由於我在前面配置了別名,
    具體能夠看application.xml中的配置-->
    <select id="getAll" resultType="user">
        <!--這裏是在引用上面抽取的公共sql語句,refid對應上面sql標籤中的id-->
        <include refid="showAll"/>
    </select>
</mapper>

到這裏,咱們的配置就算完成了,能夠在Controller裏面先寫一個請求測試!!

相關文章
相關標籤/搜索