SSM框架搭建整合

基於IDEA整合Spring,SpringMVC,Mybatis。

這是一段···(不可描述)的路程

首先附上文件結構圖:
SSM

主要是三層,Dao層,Service層,Controller層。
由於都是面向接口編程,耦合性更低。
Dao層只有Ixxdao 接口,他的實現是通過Mybatis的map配置文件代理注入的,查看Mybatis配置文件就可以知道。

而Service接口只負責聲明服務,serviceImpl則用來實現具體的業務操作。當然注入Dao接口是在serviceImpl中注入的。

然後再在Controller中注入Service接口,注意 這裏是注入接口,然後用註解聲明具體的實現類

下面附上這幾層的代碼截圖:
Dao接口

Service接口

Service實現類,通過註解標記了Service名稱

Controller類

整體結構大概就是這樣子,下面對配置文件進行說明。

Web.xml

最基礎的配置:

1.在web.xml配置監聽器ContextLoaderListener
ContextLoaderListener的作用就是啓動Web容器時,自動裝配ApplicationContext的配置信息。因爲它實現了 ServletContextListener這個接口,在web.xml配置這個監聽器,啓動容器時,就會默認執行它實現的方法。

2.部署applicationContext的xml文件
如何部署applicationContext的xml文件,如果在web.xml中不寫任何參數配置信息,默認的路徑是”/WEB-INF /applicationContext.xml,在WEB-INF目錄下創建的xml文件的名稱必須是applicationContext.xml。 如果是要自定義文件名可以在web.xml里加入contextConfigLocation這個context參數:
定義WebAppliactionContext上下文中的bean

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/classes/applicationContext-*.xml
    </param-value>
</context-param>

3.定義DispatcherServlet 前段處理器,用於控制

<servlet>
    <servlet-name>court</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet 
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/springmvc.xml</param-value>
        <!---不配置的話 默認是court-servlet.xml -->
     </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>court</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

這裏的contextConfigLocation (即springMVC的配置文件中)用於配置控制器的參數,比如設置映射頁面的前綴後綴等

最基本的web.xml中配置完這三個就算完成了

Springmvc.xml

<mvc:annotation-driven /> 

首先需要介入這個註解用於自動啓動註解功能。
同時會自動註冊DefaultAnnotationHandlerMapping與AnnotationMethodHandlerAdapter 兩個bean,是spring MVC爲@Controllers分發請求所必須的。
並提供了:數據綁定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,讀寫XML的支持(JAXB),讀寫JSON的支持(Jackson)。

然後就是添加自動掃描Controller包
(這裏主要配置攔截器,applicationContext中掃描所有包)
以及解析器的前後綴

web.xml

springmvc.xml

applicationContext.xml

application

MyBatisConfig.xml

MyBatis

MyBatis需要配置的內容可以去官網上看例子。

總結:

爲什麼 pom中

        <!-- Spring MVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.6.RELEASE</version>
            <!--<scope>provided</scope>-->
        </dependency>

加了 provided 運行就有問題,當然有問題tomcat本身不提供web包,只有tomcat已包含的包,可以使用provide

    要學會根據錯誤提示自己尋找問題所在,並解決。
    錯誤棧:最下面的是引起錯誤的起源。
    根據錯誤 Debug 找起不來的原因,如果是ClassNotFind就在pom中導入相應的包

很重要的一點:經常訪問資源文件,訪問不到 很頭疼!!!

target、Maven打包

路徑訪問:maven 打包時,默認只會把resource文件夾下的資源文件打進去的,classes是編譯後的文件,所以我們可以把配置文件都放在resource下, 到時候用classpath 就能訪問到。能不能訪問,看target/classes中有沒有 就知道了

Test 是用來測試已編譯的代碼的,就是classes裏面所有的資源

target中, classes是你的工程編譯後的類,裏面沒有第三方包
spring是 spring.war 的解壓縮後的包,裏面含有第三方包,當然也有個classes

當然如果需要把其他位置的資源放到classes中,需要另外配置。最好就是 WEN-INF下就放 web.xml 其餘的都放resource中

整個工程代碼:github

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