SSM(一)框架的整合

前言

最近這幾年JetBrains公司開發(fā)的IDEA是越來越流行了,甚至Google的官方IDE都是IDEA來定制的葛圃,可見IDEA的發(fā)展趨勢是越來越好桶唐,由于博主接觸IDEA的時間也不長缰儿,所以有關(guān)IDEAEclipse的區(qū)別和優(yōu)劣勢請自行百度了元镀。
借此機會我就使用IDEA來整合一下SSM,針對于初學者(初次使用IDEA和JAVAEE初學者)還是有幫助的掌测。


新建SSM項目

哦對了内贮,關(guān)于IDEA的版本問題強烈建議使用旗艦版,有條件的就購買汞斧,沒條件的嘛夜郁。。天朝你懂的粘勒。
在歡迎界面點擊Create New Project竞端。


之后選擇Maven(新建JAVAEE項目是需要安裝JDK的,這個就不在這里講解了庙睡。)選好之后點擊下一步事富。

之后填入GroupIDArtifactID這里盡量按照Maven的命名規(guī)范來即可技俐。

之后點擊下一步,填入項目名稱统台,這里我建議和之前填寫的ArtifactID名稱一樣即可雕擂。

點擊Finish完成項目的創(chuàng)建。
之后盡量不要做其他操作贱勃,讓IDEA完成索引創(chuàng)建井赌。

完善目錄結(jié)構(gòu)

首先觀察一下IDEA給我們生成的目錄結(jié)構(gòu),這是一個標準的Maven目錄贵扰。但是其中少了一個webapp目錄用于存放jsp仇穗、cssjs戚绕、圖片之類的文件纹坐。之后還需要完善我們的目錄結(jié)構(gòu),如下圖:


以上的命名都是我們開發(fā)過程中常用的命名規(guī)則舞丛,不一定按照我這樣來恰画,但是最好是有一定的規(guī)范。


POM.xml

pom.xml是整個maven的核心配置文件瓷马,里面有對項目的描述和項目所需要的依賴。哦對了跨晴,在修改pom.xml文件之前我們最好先設(shè)置一下該項目的Maven設(shè)置(IDEA對每個項目的maven設(shè)置和Eclipse不一樣欧聘,不是設(shè)置一次就可了,如果今后還要新建項目那就還需要設(shè)置端盆,同時按住ctrl,alt,s是打開設(shè)置的快捷鍵怀骤,更多有關(guān)IDEA的操作今后會更新相關(guān)博文。)

IDEA的Maven設(shè)置

Eclipse中用過Maven的都應該知道焕妙,這里是將項目的Maven換成我們自己安裝的Maven蒋伦,下面兩個目錄是選擇Maven配置文件,不知道是什么原因在Eclipse中選擇了配置文件之后會自動的將Maven本地廠庫的路徑更改為你settings.xml中配置的路徑焚鹊。既然這里沒有自動選中那我們就手動修改即可痕届,盡量不要放在C盤,一是用久之后本地廠庫占用的空間會比較大末患,二是萬一系統(tǒng)崩潰的話還有可能找回來研叫。

修改pom.xml

以下是我的pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!--suppress MavenModelInspection -->
<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.crossoverJie</groupId>
    <artifactId>SSM</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>4.1.4.RELEASE</spring.version>
        <jackson.version>2.5.0</jackson.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <!-- spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- 使用SpringMVC需配置 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- 關(guān)系型數(shù)據(jù)庫整合時需配置 如hibernate jpa等 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.4</version>
        </dependency>

        <!-- log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- mysql連接 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.34</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.1</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.18</version>
        </dependency>

        <!-- json -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.3</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson.version}</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>

        <!-- aop -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.4</version>
        </dependency>

        <!-- servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>3.0-alpha-1</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <!-- 上傳文件 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

    </dependencies>
</project>

關(guān)于maven的知識點我就不細講了,畢竟這是一個整合教程璧针。


spring-mvc.xml

這個配置文件是springMVC的配置文件:
里面的我都寫有注釋嚷炉,應該都能看懂。

<?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:p="http://www.springframework.org/schema/p"
       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-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    <!-- 自動掃描該包探橱,使SpringMVC認為包下用了@controller注解的類是控制器 -->
    <context:component-scan base-package="com.crossoverJie.controller" />
    <!--避免IE執(zhí)行AJAX時申屹,返回JSON出現(xiàn)下載文件 -->
    <!--<bean id="mappingJacksonHttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>-->
    <mvc:annotation-driven/>
    <!-- 啟動SpringMVC的注解功能绘证,完成請求和注解POJO的映射
    -->

    <!-- 定義跳轉(zhuǎn)的文件的前后綴 ,視圖模式配置-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 這里的配置我的理解是自動給后面action的方法return的字符串加上前綴和后綴哗讥,變成一個 可用的url地址 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- 配置文件上傳嚷那,如果沒有使用文件上傳可以不用配置,當然如果不配忌栅,那么配置文件中也不必引入上傳組件包 -->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 默認編碼 -->
        <property name="defaultEncoding" value="utf-8" />
        <!-- 文件大小最大值 -->
        <property name="maxUploadSize" value="10485760000" />
        <!-- 內(nèi)存中的最大值 -->
        <property name="maxInMemorySize" value="40960" />
    </bean>

    <!-- 配置攔截器 -->
    <!--<mvc:interceptors>
        <mvc:interceptor>
            <!– <mvc:mapping path="/**"/>攔截所有 –>
            <mvc:mapping path="/user/**"/>
            <mvc:mapping path="/role/**"/>
            <mvc:mapping path="/function/**"/>
            <mvc:mapping path="/news/**"/>
            <mvc:mapping path="/img/**"/>
            <bean class="com.crossoverJie.intercept.Intercept"></bean>
        </mvc:interceptor>
    </mvc:interceptors>-->

</beans>

關(guān)于上面攔截器注釋掉的那里车酣,配置是沒有問題的,因為這是一個整合項目索绪,所以里邊也沒有用到攔截器湖员,為了防止運行報錯所以就先注釋掉了。如果后續(xù)需要增加攔截器瑞驱,可以參考這里的配置娘摔。


spring-mybatis.xml

這個是spring和mybatis的整合配置文件,其中還有Druid連接池的配置唤反。

<?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
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    <!-- 自動掃描 -->
    <context:component-scan base-package="com.crossoverJie" />
    <!-- 引入配置文件 -->
    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties" />
    </bean>

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          init-method="init" destroy-method="close">
        <!-- 指定連接數(shù)據(jù)庫的驅(qū)動 -->
        <property name="driverClassName" value="${jdbc.driverClass}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.user}" />
        <property name="password" value="${jdbc.password}" />

        <!-- 配置初始化大小凳寺、最小、最大 -->
        <property name="initialSize" value="3" />
        <property name="minIdle" value="3" />
        <property name="maxActive" value="20" />

        <!-- 配置獲取連接等待超時的時間 -->
        <property name="maxWait" value="60000" />

        <!-- 配置間隔多久才進行一次檢測彤侍,檢測需要關(guān)閉的空閑連接肠缨,單位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />

        <!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000" />

        <property name="validationQuery" value="SELECT 'x'" />
        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />

        <!-- 打開PSCache盏阶,并且指定每個連接上PSCache的大小 -->
        <property name="poolPreparedStatements" value="true" />
        <property name="maxPoolPreparedStatementPerConnectionSize"
                  value="20" />

        <!-- 配置監(jiān)控統(tǒng)計攔截的filters绑谣,去掉后監(jiān)控界面sql無法統(tǒng)計 -->
        <property name="filters" value="stat" />
    </bean>

    <!-- spring和MyBatis完美整合负甸,不需要mybatis的配置映射文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自動掃描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:mapping/*.xml"></property>
    </bean>

    <!-- DAO接口所在包名兄裂,Spring會自動查找其下的類 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.crossoverJie.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

    <!-- (事務(wù)管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

</beans>

以上兩個就是最重要的配置文件了枣察,只要其中的包名和配置文件中的名字一樣就不會出問題。
關(guān)于xxMpper.xml以及實體類的生成砰盐,我們可以借助mybatis-generator自動生成工具來生成闷袒,方便快捷。


IDEA配置Tomcat

關(guān)于Tomcat的下載與安裝我這里就不多介紹了岩梳。


按照下圖選擇:

name中為這個Tomcat輸入一個名字囊骤。之后選擇你本地Tomcat的目錄點擊Ok即可。



點擊apply和保存之后就返回首頁即可看到Tomcat的標識蒋腮。

根據(jù)需要點擊RunDebug即可運行淘捡。

運行結(jié)果如下:




點擊上圖的2,3,4可看到不同用戶的結(jié)果,如果你走到這一步池摧,那么恭喜你整合成功焦除。


總結(jié)

以上源碼都在我的Github上。
項目地址:SSM
其中有問題或者不對的地方歡迎交流作彤。

個人博客地址:http://crossoverjie.top膘魄。
GitHub地址:https://github.com/crossoverJie乌逐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市创葡,隨后出現(xiàn)的幾起案子浙踢,更是在濱河造成了極大的恐慌,老刑警劉巖灿渴,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洛波,死亡現(xiàn)場離奇詭異,居然都是意外死亡骚露,警方通過查閱死者的電腦和手機蹬挤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棘幸,“玉大人焰扳,你說我怎么就攤上這事∥笮” “怎么了吨悍?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蹋嵌。 經(jīng)常有香客問我育瓜,道長,這世上最難降的妖魔是什么栽烂? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任爆雹,我火速辦了婚禮,結(jié)果婚禮上愕鼓,老公的妹妹穿的比我還像新娘。我一直安慰自己慧起,他們只是感情好菇晃,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚓挤,像睡著了一般磺送。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灿意,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天估灿,我揣著相機與錄音,去河邊找鬼缤剧。 笑死馅袁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的荒辕。 我是一名探鬼主播汗销,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼犹褒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弛针?” 一聲冷哼從身側(cè)響起叠骑,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎削茁,沒想到半個月后宙枷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡茧跋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年慰丛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厌衔。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡璧帝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出富寿,到底是詐尸還是另有隱情睬隶,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布页徐,位于F島的核電站苏潜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏变勇。R本人自食惡果不足惜恤左,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搀绣。 院中可真熱鬧飞袋,春花似錦、人聲如沸链患。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽麻捻。三九已至纲仍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贸毕,已是汗流浹背郑叠。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留明棍,地道東北人乡革。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親署拟。 傳聞我的和親對象是個殘疾皇子婉宰,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,810評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)推穷,斷路器心包,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • Maven編譯代碼的相關(guān)命令 第一、main目錄下的主代碼編寫完畢后馒铃,使用Maven進行編譯蟹腾,在項目根目錄下運行命...
    加油小杜閱讀 1,190評論 0 2
  • SSM框架詳細整合 介紹 Spring + SpringMVC + Mybatis是現(xiàn)在輕量級J2EE框架方案中,...
    2MuchT閱讀 5,229評論 3 14
  • top1,對待已經(jīng)分手的戀人:苦苦糾纏或者暗暗惦記区宇,看似癡情娃殖,其實你只是習慣找一個依賴。若有果议谷,苦(分手畢竟不是沒...
    盒子菌閱讀 177評論 0 0