版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
..持久層:DAO層(mapper)DAO層:DAO層主要是做數(shù)據(jù)持久層的工作,負(fù)責(zé)與數(shù)據(jù)庫(kù)進(jìn)行聯(lián)絡(luò)的一些任務(wù)都封裝在此,
DAO層的設(shè)計(jì)首先是設(shè)計(jì)DAO的接口,然后在Spring的配置文件中定義此接口的實(shí)現(xiàn)類(lèi),然后就可在模塊中調(diào)用此接口來(lái)進(jìn)行數(shù)據(jù)業(yè)務(wù)的處理,而不用關(guān)心此接口的具體實(shí)現(xiàn)類(lèi)是哪個(gè)類(lèi),顯得結(jié)構(gòu)非常清晰,DAO層的數(shù)據(jù)源配置,以及有關(guān)數(shù)據(jù)庫(kù)連接的參數(shù)都在Spring的配置文件中進(jìn)行配置。業(yè)務(wù)層:Service層Service層:Service層主要負(fù)責(zé)業(yè)務(wù)模塊的邏輯應(yīng)用設(shè)計(jì)。
首先設(shè)計(jì)接口,再設(shè)計(jì)其實(shí)現(xiàn)的類(lèi)接著再在Spring的配置文件中配置其實(shí)現(xiàn)的關(guān)聯(lián)。這樣我們就可以在應(yīng)用中調(diào)用Service接口來(lái)進(jìn)行業(yè)務(wù)處理。Service層的業(yè)務(wù)實(shí)現(xiàn),具體要調(diào)用到已定義的DAO層的接口,封裝Service層的業(yè)務(wù)邏輯有利于通用的業(yè)務(wù)邏輯的獨(dú)立性和重復(fù)利用性,程序顯得非常簡(jiǎn)潔。表現(xiàn)層:Controller層(Handler層)Controller層:Controller層負(fù)責(zé)具體的業(yè)務(wù)模塊流程的控制,
在此層里面要調(diào)用Service層的接口來(lái)控制業(yè)務(wù)流程,控制的配置也同樣是在Spring的配置文件里面進(jìn)行,針對(duì)具體的業(yè)務(wù)流程,會(huì)有不同的控制器,我們具體的設(shè)計(jì)過(guò)程中可以將流程進(jìn)行抽象歸納,設(shè)計(jì)出可以重復(fù)利用的子單元流程模塊,這樣不僅使程序結(jié)構(gòu)變得清晰,也大大減少了代碼量。View層View層此層與控制層結(jié)合比較緊密,需要二者結(jié)合起來(lái)協(xié)同工發(fā)。View層主要負(fù)責(zé)前臺(tái)jsp頁(yè)面的表示.各層聯(lián)系DAO層,Service層這兩個(gè)層次都可以單獨(dú)開(kāi)發(fā),互相的耦合度很低,完全可以獨(dú)立進(jìn)行,這樣的一種模式在開(kāi)發(fā)大項(xiàng)目的過(guò)程中尤其有優(yōu)勢(shì)Controller,View層因?yàn)轳詈隙缺容^高,因而要結(jié)合在一起開(kāi)發(fā),但是也可以看作一個(gè)整體獨(dú)立于前兩個(gè)層進(jìn)行開(kāi)發(fā)。這樣,在層與層之前我們只需要知道接口的定義,調(diào)用接口即可完成所需要的邏輯單元應(yīng)用,一切顯得非常清晰簡(jiǎn)單。Service邏輯層設(shè)計(jì)Service層是建立在DAO層之上的,建立了DAO層后才可以建立Service層,而Service層又是在Controller層之下的,因而Service層應(yīng)該既調(diào)用DAO層的接口,又要提供接口給Controller層的類(lèi)來(lái)進(jìn)行調(diào)用,它剛好處于一個(gè)中間層的位置。每個(gè)模型都有一個(gè)Service接口,每個(gè)接口分別封裝各自的業(yè)務(wù)處理方法。SSM框架整合說(shuō)明整合Dao層MyBatis配置文件
sqlMapConfig.xml配置別名:用于批量掃描Pojo包不需要配置mappers標(biāo)簽,但一定要保證mapper.java文件與mapper.xml文件同名。<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-////DTDConfig3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><!--配置別名--><typeAliases><!--批量掃描別名--><packagename="cn.itcast.ssm.po"/></typeAliases></configuration>123456789Spring配置文件
applicationContext-dao.xml主要配置容
數(shù)據(jù)源SqlSessionFactorymapper掃描器
這里使用sqlSessionFactoryBeanName屬性是因?yàn)槿绻渲玫氖莝qlSessionFactory屬性,將不會(huì)先加載數(shù)據(jù)庫(kù)配置文件及數(shù)據(jù)源配置<beansxmlns="./schema/beans"xmlns:xsi="./2001/XMLSchema-instance"xmlns:mvc="./schema/mvc"xmlns:context="./schema/context"xmlns:aop="./schema/aop"xmlns:tx="./schema/tx"xsi:schemaLocation="./schema/beans./schema/beans/spring-beans-3.2.xsd./schema/mvc./schema/mvc/spring-mvc-3.2.xsd./schema/context./schema/context/spring-context-3.2.xsd./schema/aop./schema/aop/spring-aop-3.2.xsd./schema/tx./schema/tx/spring-tx-3.2.xsd"><!--加載perties文件中的容,perties文件中key命名要有一定的特殊規(guī)則--><context:property-placeholderlocation="classpath:perties"/><!--配置數(shù)據(jù)源,dbcp--><beanid="dataSource"class="mons.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="maxActive"value="30"/><propertyname="maxIdle"value="5"/></bean><!--sqlSessionFactory--><beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><!--數(shù)據(jù)庫(kù)連接池--><propertyname="dataSource"ref="dataSource"/><!--加載mybatis的全局配置文件--><propertyname="configLocation"value="classpath:mybatis/sqlMapConfig.xml"/></bean><!--mapper掃描器--><beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"><!--掃描包路徑,如果需要掃描多個(gè)包,中間使用半角逗號(hào)隔開(kāi)--><propertyname="basePackage"value="cn.itcast.ssm.mapper"></property><propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactory"/></bean></beans>1234567891011121314151617181920212223242526272829303132333435363738394041424344創(chuàng)建所需的Mapper.java一般不動(dòng)原始生成的po類(lèi),而是將原始類(lèi)進(jìn)行集成vo類(lèi)publicinterfaceItemsMappperCustom{publicList<ItemsCustom>findItemsList(ItemsQueryVoitemsQueryVo)throwsException;}123創(chuàng)建POJO類(lèi)對(duì)應(yīng)的mapper.xml<mappernamespace="test.ssm.mapper.ItemsMappperCustom"><selectid="findItemsList"parameterTyep="test.ssm.po.ItemsQueryVo"resultType="test.ssm.po.ItemsCustom">selectitems.*fromitemswherelike'%${itemsC}%'1234整合service層目標(biāo):讓spring管理service接口。定義service接口一般在ssm.service包下定義接口eg:ItemsServicepublicinterfaeItemsService{publicList<ItemsCustom>findItemsList(ItemsQueryVoitemsQueryVo)throwsException;}123定義ServiceImpl實(shí)現(xiàn)類(lèi)因?yàn)樵赼pplicationContext-dao.xml中已經(jīng)使用了mapper掃描器,這里可以直接通過(guò)注解的方式將itemsMapperCustom自動(dòng)注入。publicclassItemsServiceImplimplementsItemsService{AutowiredprivateItemsMapperCustomitemsMapperCustom;OverridepublicList<ItemsCustom>findItemsList(ItemsQueryVoitemsQueryVo)throwsException{returnitemsMapperCustom.findItemsList(itemsQueryVo);}}12345678910在spring容器配置serviceapplicationContext-service.xml在此文件中配置service。<beanid="itemsService"class="test.ssm.service.impl.ItemsSrviceImpl"/>1事物控制(不夠熟悉)在applicationContext-transaction.xml中使用spring聲明式事務(wù)控制方法對(duì)mybatis操作數(shù)據(jù)庫(kù)事物控制,spring使用jdbc的事物控制類(lèi)是DataSourceTransactionManager因?yàn)椴僮髁藬?shù)據(jù)庫(kù)需要事物控制,所以需要配置數(shù)據(jù)源定義了切面<beansxmlns="./schema/beans"xmlns:xsi="./2001/XMLSchema-instance"xmlns:mvc="./schema/mvc"xmlns:context="./schema/context"xmlns:aop="./schema/aop"xmlns:tx="./schema/tx"xsi:schemaLocation="./schema/beans./schema/beans/spring-beans-3.2.xsd./schema/mvc./schema/mvc/spring-mvc-3.2.xsd./schema/context./schema/context/spring-context-3.2.xsd./schema/aop./schema/aop/spring-aop-3.2.xsd./schema/tx./schema/tx/spring-tx-3.2.xsd"><!--事務(wù)管理器對(duì)mybatis操作數(shù)據(jù)庫(kù)事務(wù)控制,spring使用jdbc的事務(wù)控制類(lèi)--><beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!--數(shù)據(jù)源在dataSource在applicationContext-dao.xml中已經(jīng)配置--><propertyname="dataSource"ref="dataSource"/></bean><!--通知--><tx:adviceid="txAdvice"transaction-manager="transactionManager"><tx:attributes><!--傳播行為--><tx:methodname="save*"propagation="REQUIRED"/><tx:methodname="delete*"propagation="REQUIRED"/><tx:methodname="insert*"propagation="REQUIRED"/><tx:methodname="update*"propagation="REQUIRED"/><tx:methodname="find*"propagation="SUPPORTS"read-only="true"/><tx:methodname="get*"propagation="SUPPORTS"read-only="true"/><tx:methodname="select*"propagation="SUPPORTS"read-only="true"/></tx:attributes></tx:advice><!--aop--><aop:config><aop:advisoradvice-ref="txAdvice"pointcut="execution(*.itcast.ssm.service.impl.*.*(..))"/></aop:config></beans>12345678910111213141516171819202122232425262728293031323334353637383940整合springmvc創(chuàng)建springmvc.xml文件,配置處理器映射器、適配器、視圖解析器<context:component-scanbase-package="cn.itcast.ssm.controller"></context:component-scan><!--使用mvc:annotation-driven加載注解映射器和注解適配器配置--><mvc:annotation-driven></mvc:annotation-driven><!--視圖解析器解析jsp解析,默認(rèn)使用jstl標(biāo)簽,classpath下的得有jstl的包--><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置jsp路徑的前綴--><propertyname="prefix"value="/WEB-INF/jsp/"/><!--配置jsp路徑的后綴--><propertyname="suffix"value=".jsp"/></bean>12345678910111213配置前端控制器在web.xml中加入如下容contextConfigLocation配置springmvc加載的配置文件(配置處理器映射器、適配器等等)
如果不配置contextConfigLocation,默認(rèn)加載的是/WEB-INF/servlet名稱(chēng)-serlvet.xml(springmvc-servlet.xml)在url-pattern中
填入*.action,表示訪(fǎng)問(wèn)以.action結(jié)尾由DispatcherServlet進(jìn)行解析填入/,所有訪(fǎng)問(wèn)的地址都由DispatcherServlet進(jìn)行解析,對(duì)于靜態(tài)文件的解析需要配置不讓DispatcherServlet進(jìn)行解析,使用此種方式可以實(shí)現(xiàn)RESTful風(fēng)格的url<!--springmvc前端控制器--><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:spring/springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping>123456789101112131415編寫(xiě)Controller(Handler)CongtrollerRequestMapping("/items")//窄化路徑publicclassItemsController{AutowiredprivateItemsServiceitemsSer
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度消防工程安全技術(shù)評(píng)估與咨詢(xún)合同范本3篇
- 2024年財(cái)產(chǎn)分割離婚協(xié)議6篇
- 福建信息職業(yè)技術(shù)學(xué)院《資源與環(huán)境領(lǐng)域前沿進(jìn)展》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年林業(yè)生態(tài)保護(hù)與恢復(fù)承包合同3篇
- 2024年復(fù)合材料原材料采購(gòu)與物流解決方案合同3篇
- 2025搬家合同協(xié)議模板:搬家服務(wù)與家具組裝驗(yàn)收合同3篇
- 2024年度共有產(chǎn)權(quán)住房轉(zhuǎn)讓協(xié)議書(shū)3篇
- 2024深圳建筑抗震加固工程合同范本
- 二零二五年度企業(yè)資源管理平臺(tái)續(xù)約協(xié)議
- 2025年度二手房交易合同正副本3篇
- 2024年寧波永耀供電服務(wù)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 山西師范大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)期末沖刺卷及答案
- 工程圖學(xué)(吉林聯(lián)盟)智慧樹(shù)知到期末考試答案2024年
- 天津市部分區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期末語(yǔ)文試題(含答案)
- 壓縮空氣氣體管道吹掃試壓專(zhuān)項(xiàng)方案
- 2021年海南省公務(wù)員考試《行測(cè)》真題和答案解析
- 餐廳創(chuàng)新改革方案課件
- 《社會(huì)歷史的決定性基礎(chǔ)》共171張高中語(yǔ)文選擇性必修中冊(cè)
- 鐵嶺衛(wèi)生職業(yè)學(xué)院招聘考試題庫(kù)2024
- 鐵路信號(hào)基礎(chǔ)信號(hào)機(jī)課件
- 廣東省珠海市斗門(mén)區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末英語(yǔ)試卷+
評(píng)論
0/150
提交評(píng)論