SSM框架整合

SSM框架整合

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內(nèi)容)膏执。

Spring

Spring就像是整個項目中裝配bean的大工廠驻售,在配置文件中可以指定使用特定的參數(shù)去調(diào)用實體類的構造方法來實例化對象。也可以稱之為項目中的粘合劑更米。

Spring的核心思想是IoC(控制反轉)欺栗,即不再需要程序員去顯式地`new`一個對象,而是讓Spring框架幫你來完成這一切。

SpringMVC

SpringMVC在項目中攔截用戶請求迟几,它的核心Servlet即DispatcherServlet承擔中介或是前臺這樣的職責消请,將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應請求所執(zhí)行的操作类腮。SpringMVC相當于SSH框架中struts臊泰。

Mybatis

Mybatis是對jdbc的封裝,它讓數(shù)據(jù)庫底層操作變的透明蚜枢。Mybatis的操作都是圍繞一個sqlSessionFactory實例展開的因宇。Mybatis通過配置文件關聯(lián)到各實體類的Mapper文件,Mapper文件中配置了每個類對數(shù)據(jù)庫所需進行的sql語句映射祟偷。在每次與數(shù)據(jù)庫交互時察滑,通過sqlSessionFactory拿到一個sqlSession,再執(zhí)行sql命令修肠。

頁面發(fā)送請求給控制器贺辰,控制器調(diào)用業(yè)務層處理邏輯,邏輯層向持久層發(fā)送請求嵌施,持久層與數(shù)據(jù)庫交互饲化,后將結果返回給業(yè)務層,業(yè)務層將處理邏輯發(fā)送給控制器吗伤,控制器再調(diào)用視圖展現(xiàn)數(shù)據(jù)吃靠。

(摘自百度)


現(xiàn)在使用eclipse作為開發(fā)工具;maven作為項目管理工具足淆;使用逆向工程連接數(shù)據(jù)庫巢块,生成表對應的實體類、mapper接口以及接口映射的sql文件巧号,搭建一個SSM純凈版的web項目族奢,供大家學習交流。

步驟如下:

1.???導入逆向工程丹鸿,更改相關配置越走,運行逆向工程項目,生成項目實體類靠欢、mapper接口以及接口映射的sql文件廊敌;

2.???創(chuàng)建maven工程的web項目,通過pom文件導入和管理相應的jar包门怪;

3.???編寫web.xml骡澈,在web.xml中加載Spring配置文件(非必須,可整合在spring整合mybatis的配置文件中)薪缆、spring整合mybatis的配置文件秧廉、Mybatis的配置文件(非必須,可整合在spring整合mybatis的配置文件中)拣帽、SpringMVC配置文件疼电,以及數(shù)據(jù)源文件和日志文件的配置;

4.???編寫jsp頁面代碼减拭;

5.???編寫后端java代碼蔽豺,如controller、service層(dao層逆向工程生成)拧粪;

6.???項目運行并訪問修陡。

現(xiàn)在按以上步驟進行項目搭建

一、導入逆向工程可霎,更改相關配置魄鸦,運行逆向工程項目,生成項目實體類癣朗、mapper接口以及接口映射的sql文件拾因;

逆向工程可在mybatis官網(wǎng)下載,如下


相關配置的修改


運行后的目錄結構


二旷余、創(chuàng)建maven工程的web項目绢记,通過pom文件導入和管理相應的jar包;

創(chuàng)建項目后的目錄結構


pom文件依賴的管理正卧,以及tomcat插件蠢熄、編譯插件的配置

pom.xml配置,相關jar的導入和管理炉旷,tomcat插件和編譯插件

? ? <build>

? ? ? ?<finalName>maven01</finalName>

? ? ? ?<plugins>

? ? ? ? ?? <plugin>

? ? ? ? ?? ? ? <groupId>org.apache.tomcat.maven</groupId>

????????????????????? <artifactId>tomcat7-maven-plugin</artifactId>

????????????????????? <version>2.2</version>

????????????????????? <configuration>

??????????????????????????? <port>8080</port>

??????????????????????????? <path>/ssmtest001</path>

????????????????????? </configuration>

? ? ? ? ?? </plugin>

? ? ? ? ?? <plugin>

????????????????????? <groupId>org.apache.maven.plugins</groupId>

????????????????????? <artifactId>maven-compiler-plugin</artifactId>

????????????????????? <version>3.2</version>

???????????????? ?? <configuration>

???????????????? ?? ? ? <source>1.7</source>

???????????????? ?? ? ? <target>1.7</target>

???????????????? ?? </configuration>

???????????????? </plugin>

? ? ? ?</plugins>

? ? </build>

</project>

三签孔、編寫web.xml,在web.xml中加載Spring配置文件(非必須窘行,可整合在spring整合mybatis的配置文件中)骏啰、spring整合mybatis的配置文件、Mybatis的配置文件(非必須抽高,可整合在spring整合mybatis的配置文件中)判耕、SpringMVC配置文件,以及數(shù)據(jù)源文件和日志文件的配置翘骂;

web.xml的配置壁熄,注意加載配置文件時classpath的配置??

? <!-- Spring和mybatis的配置文件 -->

? <context-param>

????? <param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/spring-mybatis.xml,classpath:spring/applicationContext.xml</param-value>

? </context-param>


? <!-- Spring裝配xml文件監(jiān)聽器 -->

? <listener>

????? <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

? </listener>



? <context-param>

? ? ?<param-name>log4jConfigLocation</param-name>

? ? ?<param-value>classpath:log4j.properties</param-value>

? </context-param>



? <context-param>

? ? ?<param-name>log4jRefreshInterval</param-name>

? ? ?<param-value>10000</param-value>

? </context-param>



? <listener>

? ? ?<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>

? </listener>



? <filter>

????? <filter-name>encoding</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>encoding</filter-name>

????? <url-pattern>/*</url-pattern>

? </filter-mapping>




? <servlet>

????? <servlet-name>springmvc</servlet-name>

??<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>


????? <init-param>

?????????? <param-name>contextConfigLocation</param-name>

?????????? <param-value>classpath:springmvc/springmvc.xml</param-value>

????? </init-param>


????? <load-on-startup>1</load-on-startup>

? </servlet>


? <servlet-mapping>

????? <servlet-name>springmvc</servlet-name>

????? <url-pattern>/</url-pattern>

? </servlet-mapping>

spring配置文件applicationContent.xml

????? <!--掃描包Service實現(xiàn)類 -->

? ? <context:component-scanbase-package="com.it.service"></context:component-scan>


</beans>

spring整合mybatis的配置文件spring-mybatis.xml

????? <!--加載數(shù)據(jù)庫配置文件 -->

????? <context:property-placeholderlocation="classpath:db.properties"/>


????? <!--引入配置文件,方式二 -->??

? ? <!-- <beanid="propertyConfigurer"??

? ? ? ?class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">??

? ? ? ? <propertyname="location" value="classpath:db.properties"/>??

? ? </bean>? -->


????? <!--配置連接池 -->

????? <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"

?????????? destroy-method="close">

?????????? <propertyname="driverClassName" value="${jdbc.driver}" />

?????????? <propertyname="url" value="${jdbc.url}" />

?????????? <propertyname="username" value="${jdbc.username}" />

?????????? <propertyname="password" value="${jdbc.password}" />

?????????? <!--初始化連接大小 -->??

? ? ? ? <propertyname="initialSize"value="${initialSize}"></property>??


? ? ? ? <propertyname="maxActive"value="${maxActive}"></property>??


? ? ? ? <propertyname="maxIdle"value="${maxIdle}"></property>??


? ? ? ? <propertyname="minIdle"value="${minIdle}"></property>??


? ? ? ? <propertyname="maxWait"value="${maxWait}"></property>?

????? </bean>


????? <!--配置SqlSessionFactory mybatis工廠對象 -->

????? <beanid="sqlSessionFactoryBean"class="org.mybatis.spring.SqlSessionFactoryBean">

?????????? <propertyname="dataSource" ref="dataSource"/>

?????????? <propertyname="configLocation"value="classpath:mybatis/sqlMapConfig.xml"/>

?????????? <!--自動掃描mapping.xml文件 -->??

? ? ? ? <propertyname="mapperLocations"value="classpath:com/it/mapper/*.xml"></property>?

????? </bean>



????? <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">

?????????? <propertyname="basePackage" value="com.it.mapper"/>

????? </bean>


????? <!--配置事務 -->

????? <beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

?????????? <propertyname="dataSource" ref="dataSource" />

????? </bean>


????? <!--開啟注解事務 -->

????? <tx:annotation-driventransaction-manager="transactionManager"/>


mybatis的配置文件SqlMapConfig.xml??

????? <!--打印SQL語句 -->

? ? <settings>

? ? ? ? <settingname="logImpl" value="STDOUT_LOGGING"/>

? ? </settings>

????? <typeAliases>

?????????? <!--指定掃描包,會把包內(nèi)所有的類都設置別名碳竟,別名的名稱就是類名草丧,大小寫不敏感 -->

?????????? <packagename="com.it.pojo"/>

????? </typeAliases>


? ? <!-- <plugins>

? ? ? ? <plugininterceptor="com.github.pagehelper.PageInterceptor">

?分頁參數(shù)合理化

? ? ? ? ?? <property name="reasonable" value="true"/>

? ? ? ?</plugin>

? ? </plugins> -->


springmvc的配置文件,springmvc.xml? ?? ??


? ? ? ?<context:component-scan base-package="com.it.controller"/>



<!--? ? ? ??<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>-->


<!--? ? ? ??<beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>-->


? ? ? ?<mvc:annotation-driven />





? ? ? ? <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">


? ? ? ??<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" />? ??


????? ?? ? ? <property name="maxInMemorySize"value="40960" />? ??


????? ?? ? ? <property name="resolveLazily"value="true"/>

????? ?? </bean>? ?



db.properties數(shù)據(jù)源的配置

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/xxxpassword=root

#定義初始連接數(shù) ?

initialSize=0 ?#定義最大連接數(shù) ?

maxActive=20 ?#定義最大空閑 ?

maxIdle=20 ?#定義最小空閑 ?

minIdle=1 ?#定義最長等待時間 ?

maxWait=60000?

log4j.properties日志文件的配置

log4j.rootLogger=INFO,Console,File?

#定義日志輸出目的地為控制臺 ?

log4j.appender.Console=org.apache.log4j.ConsoleAppender?

log4j.appender.Console.Target=System.out?

#可以靈活地指定日志輸出格式莹桅,下面一行是指定具體的格式 ?

log4j.appender.Console.layout= org.apache.log4j.PatternLayout ?

log4j.appender.Console.layout.ConversionPattern=[%c]- %m%n ?

#文件大小到達指定尺寸的時候產(chǎn)生一個新的文件 ?

log4j.appender.File =org.apache.log4j.RollingFileAppender ?

#指定輸出目錄 ?

log4j.appender.File.File= logs/ssm.log ?

#定義文件最大大小 ?

log4j.appender.File.MaxFileSize= 10MB ?

#?輸出所以日志昌执,如果換成DEBUG表示輸出DEBUG以上級別日志 ?

log4j.appender.File.Threshold= ALL ?

log4j.appender.File.layout= org.apache.log4j.PatternLayout ?

log4j.appender.File.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

四、編寫后端代碼

編寫controller


項目結構

五、項目啟動懂拾,訪問

啟動采用maven中配置的tomcat插件啟動

項目右鍵煤禽,執(zhí)行,run as,maven configuration...

輸入命令岖赋,tomcat:run


控制臺日志輸出

訪問


項目下載鏈接

鏈接:https://pan.baidu.com/s/1PMW_b7TszulnTTD0dR_afw?

提取碼:x6n0?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末檬果,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子唐断,更是在濱河造成了極大的恐慌选脊,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脸甘,死亡現(xiàn)場離奇詭異恳啥,居然都是意外死亡,警方通過查閱死者的電腦和手機丹诀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門角寸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人忿墅,你說我怎么就攤上這事扁藕。” “怎么了疚脐?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵亿柑,是天一觀的道長。 經(jīng)常有香客問我棍弄,道長望薄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任呼畸,我火速辦了婚禮痕支,結果婚禮上,老公的妹妹穿的比我還像新娘蛮原。我一直安慰自己卧须,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布儒陨。 她就那樣靜靜地躺著花嘶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蹦漠。 梳的紋絲不亂的頭發(fā)上椭员,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音笛园,去河邊找鬼隘击。 笑死侍芝,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的埋同。 我是一名探鬼主播州叠,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼莺禁!你這毒婦竟也來了留量?” 一聲冷哼從身側響起窄赋,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤哟冬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后忆绰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浩峡,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年错敢,在試婚紗的時候發(fā)現(xiàn)自己被綠了翰灾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡稚茅,死狀恐怖纸淮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亚享,我是刑警寧澤咽块,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站欺税,受9級特大地震影響侈沪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晚凿,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一亭罪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歼秽,春花似錦应役、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荆责,卻和暖如春滥比,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背做院。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工盲泛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留濒持,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓寺滚,卻偏偏與公主長得像柑营,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子村视,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

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