




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、摘 要2關(guān)鍵詞: struts2、spring、hibernate、頂崗實(shí)習(xí)2引言3第一章41 關(guān)鍵技術(shù)41.1軟件環(huán)境41.2硬件環(huán)境51.3 spring簡介51.4 hibernate簡介71.5 struts2簡介8第二章92 基于ssh框架的頂崗信息處理平臺管理系統(tǒng)的實(shí)現(xiàn)92.1 spring的應(yīng)用112.2 struts 的應(yīng)用11總結(jié)16參考文獻(xiàn)17摘 要近些年來,隨著計(jì)算機(jī)的普及與發(fā)展,“internet”一詞已經(jīng)讓我們不再感到陌生,隨著e時代的到來,新的理念和結(jié)構(gòu)也在不斷的形成和完善,計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展對人類技術(shù)史的發(fā)展產(chǎn)生了不可磨滅的深遠(yuǎn)影響。計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展推動了人
2、類的科學(xué)技術(shù)的發(fā)展,同時給人們的學(xué)習(xí),工作和生活帶來了諸多的好處,特點(diǎn)主要體現(xiàn)在以下幾個方面: 快捷性、自由性、開放性、互動性、創(chuàng)新性。伴隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展和廣泛應(yīng)用,人類進(jìn)入了全新的網(wǎng)絡(luò)經(jīng)濟(jì)時代。信息化、數(shù)字化、全球化、網(wǎng)絡(luò)化應(yīng)是21新世紀(jì)人類社會的重要特征,其中,以計(jì)算機(jī)網(wǎng)絡(luò)迅猛發(fā)展而形成的網(wǎng)絡(luò)化則是推動信息化、數(shù)字化和全球化的基礎(chǔ)和核心。計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展將以其融合一切現(xiàn)代先進(jìn)信息技術(shù)的特殊優(yōu)勢而在21世紀(jì)形成一場嶄新的信息技術(shù)革命,并進(jìn)一步推動社會信息化和知識經(jīng)濟(jì)的發(fā)展。而計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)和相關(guān)技術(shù)也必將在21世紀(jì)社會信息化和知識經(jīng)濟(jì)浪潮中更快更大的發(fā)展。本文采用了當(dāng)今比較流
3、行的框架struts2+spring+ hibernate的系統(tǒng)結(jié)構(gòu),結(jié)合高職高專人才培養(yǎng)模式,依托第三方軟件平臺,成功開發(fā)融學(xué)習(xí)、資源共享、交流為一體的頂崗實(shí)習(xí)信息處理平臺學(xué)生管理系統(tǒng)。系統(tǒng)完成從功能測試和管理實(shí)踐的經(jīng)驗(yàn)積累,運(yùn)行穩(wěn)定,達(dá)到預(yù)期效果,為下一階段學(xué)生管理工作提供有益的思路,有很好的現(xiàn)實(shí)意義。關(guān)鍵詞: struts2、spring、hibernate、頂崗實(shí)習(xí)引言隨著大學(xué)學(xué)生畢業(yè)人數(shù)的增加及學(xué)校對頂崗實(shí)習(xí)生要求的提高,社會越來越重視將構(gòu)建學(xué)生各類信息化管理軟件,集成到一個適應(yīng)的軟件集成平臺中,這也是該處理平臺開發(fā)的目的。軟件行業(yè)的工業(yè)化趨勢導(dǎo)致了構(gòu)件的產(chǎn)生,讓部分軟件能夠像硬件系
4、統(tǒng)那樣組合起來構(gòu)建軟件系統(tǒng),就實(shí)現(xiàn)了軟件的復(fù)用。若能結(jié)合系統(tǒng)的實(shí)際情況,充分利用已有的軟件構(gòu)件,將會大大提高生產(chǎn)效率,減少大量的重復(fù)勞動。因此,為了方便構(gòu)件的管理和復(fù)用,解決傳統(tǒng)的軟件開發(fā)模式中通用性差、柔性低、開發(fā)效率低等一系列問題,采用“高內(nèi)聚,低耦合”的成熟框架stmts+s研ng+hibemate(簡稱ssh框架)來進(jìn)行構(gòu)件庫管理系統(tǒng)的開發(fā),以達(dá)到軟件復(fù)用的目的。第一章1 關(guān)鍵技術(shù)struts、spring、hibernate是三個既相互獨(dú)立又彼此關(guān)聯(lián)的框架,它們可以無縫地整合起來構(gòu)建靈活、易于擴(kuò)展的多層web應(yīng)用程序,struts用來實(shí)現(xiàn)表示層,spring實(shí)現(xiàn)業(yè)務(wù)層,hibemat
5、e實(shí)現(xiàn)持久層。圖1. struts、spring、hibernate關(guān)系圖1.1軟件環(huán)境操作系統(tǒng)要求:windows98、2000、xp瀏覽器版本要求:ie6以上。開發(fā)平臺:myeclipse 6.6 數(shù)據(jù)庫:mysqlweb服務(wù):tomcat6.0主要技術(shù):spring、hibernate、struts2.0、jfreechart1.2硬件環(huán)境處理器:1.5ghz主頻以上硬盤:40g以上內(nèi)存:512mb以上。1.3 spring簡介spring是一個開源框架,它由rod johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。spring使用基本的javabean來完成以前只可能由ej
6、b完成的事情。然而,spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何java應(yīng)用都可以從spring中受益。目的:解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性功能:使用基本的javabean代替ejb,并提供了更多的企業(yè)應(yīng)用功能范圍:任何java應(yīng)用簡單來說,spring是一個輕量級的控制反轉(zhuǎn)(ioc)和面向切面(aop)的容器框架。輕量從大小與開銷兩方面而言spring都是輕量的。完整的spring框架可以在一個大小只有1mb多的jar文件里發(fā)布。并且spring所需的處理開銷也是微不足道的。此外,spring是非侵入式的:典型地,spring應(yīng)用中的對象不依賴于spring
7、的特定類。 控制反轉(zhuǎn)spring通過一種稱作控制反轉(zhuǎn)(ioc)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了ioc,一個對象依賴的其它對象會通過被動的方式傳遞進(jìn)來,而不是這個對象自己創(chuàng)建或者查找依賴對象。你可以認(rèn)為ioc與jndi相反不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。面向切面spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(例如審計(jì)(auditing)和事務(wù)(transaction)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對象只實(shí)現(xiàn)它們應(yīng)該做的完成業(yè)務(wù)邏輯僅此而已。它們并不負(fù)責(zé)(甚至是意識)其它的系統(tǒng)級關(guān)注點(diǎn),例如日志或事務(wù)支持。 容器spri
8、ng包含并管理應(yīng)用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創(chuàng)建基于一個可配置原型(prototype),你的bean可以創(chuàng)建一個單獨(dú)的實(shí)例或者每次需要時都生成一個新的實(shí)例以及它們是如何相互關(guān)聯(lián)的。然而,spring不應(yīng)該被混同于傳統(tǒng)的重量級的ejb容器,它們經(jīng)常是龐大與笨重的,難以使用。 框架spring可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在spring中,應(yīng)用對象被聲明式地組合,典型地是在一個xml文件里。spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。 所有spring的這些特征使你能夠編寫更干凈、更
9、可管理、并且更易于測試的代碼。它們也為spring中的各種模塊提供了基礎(chǔ)支持。spring可以給一個工程帶來的一些好處:spring能有效地組織你的中間層對象,無論你是否選擇使用了ejb。如果你僅僅使用了struts或其他的包含了j2ee特有apis的framework,你會發(fā)現(xiàn)spring關(guān)注了遺留下的問題。 spring能消除在許多工程上對singleton的過多使用。根據(jù)我的經(jīng)驗(yàn),這是一個主要的問題,它減少了系統(tǒng)的可測試性和面向?qū)ο筇匦浴?spring能消除使用各種各樣格式的屬性定制文件的需要,在整個應(yīng)用和工程中,可通過一種一致的方法來進(jìn)行配置。曾經(jīng)感到迷惑,一個特定類要查找迷幻般的屬性
10、關(guān)鍵字或系統(tǒng)屬性,為此不得不讀javadoc乃至源編碼嗎?有了spring,你可很簡單地看到類的javabean屬性。倒置控制的使用(在下面討論)幫助完成這種簡化。 spring能通過接口而不是類促進(jìn)好的編程習(xí)慣,減少編程代價到幾乎為零。 spring被設(shè)計(jì)為讓使用它創(chuàng)建的應(yīng)用盡可能少的依賴于他的apis。在spring應(yīng)用中的大多數(shù)業(yè)務(wù)對象沒有依賴于spring。 使用spring構(gòu)建的應(yīng)用程序易于單元測試。 spring能使ejb的使用成為一個實(shí)現(xiàn)選擇,而不是應(yīng)用架構(gòu)的必然選擇。你能選擇用pojos或local ejbs來實(shí)現(xiàn)業(yè)務(wù)接口,卻不會影響調(diào)用代碼。 spring幫助你解決許多問題而
11、無需使用ejb。spring能提供一種ejb的替換物,它們適于許多web應(yīng)用。例如,spring能使用aop提供聲明性事務(wù)而不通過使用ejb容器,如果你僅僅需要與單個的數(shù)據(jù)庫打交道,甚至不需要jta實(shí)現(xiàn)。 spring為數(shù)據(jù)存取提供了一致的框架,不論是使用jdbc或o/r mapping產(chǎn)品(如hibernate)。 spring確實(shí)使你能通過最簡單可行的解決辦法解決你的問題。這些特性是有很大價值的。 總結(jié)起來,spring有如下優(yōu)點(diǎn):低侵入式設(shè)計(jì),代碼污染極低獨(dú)立于各種應(yīng)用服務(wù)器,可以真正實(shí)現(xiàn)write once,run anywhere的承諾spring的di機(jī)制降低了業(yè)務(wù)對象替換的復(fù)雜性
12、spring并不完全依賴于spring,開發(fā)者可自由選用spring框架的部分或全部1.4 hibernate簡介hibernate是一個開放源代碼的對象關(guān)系映射框架,它對jdbc進(jìn)行了非常輕量級的對象封裝,使得java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 hibernate可以應(yīng)用在任何使用jdbc的場合,既可以在java的客戶端程序使用,也可以在servlet/jsp的web應(yīng)用中使用,最具革命意義的是,hibernate可以在應(yīng)用ejb的j2ee架構(gòu)中取代cmp,完成數(shù)據(jù)持久化的重任。hibernate的核心接口一共有5個,分別為:session、sessionfactor
13、y、transaction、query和configuration。這5個核心接口在任何開發(fā)中都會用到。通過這些接口,不僅可以對持久化對象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。hibernate 中提供了兩級cache,第一級別的緩存是session級別的緩存,它是屬于事務(wù)范圍的緩存。這一級別的緩存由hibernate管理的,一般情況下無需進(jìn)行干預(yù);第二級別的緩存是sessionfactory級別的緩存,它是屬于進(jìn)程范圍或群集范圍的緩存。這一級別的緩存可以進(jìn)行配置和更改,并且可以動態(tài)加載和卸載。 hibernate還為查詢結(jié)果提供了一個查詢緩存,它依賴于第二級緩存。hibernate對象關(guān)系映射提供延
14、遲的與非延遲的對象初始化。非延遲加載在讀取一個對象的時候會將與這個對象所有相關(guān)的其他對象一起讀取出來。這有時會導(dǎo)致成百的(如果不是成千的話)select語句在讀取對象的時候執(zhí)行。這個問題有時出現(xiàn)在使用雙向關(guān)系的時候,經(jīng)常會導(dǎo)致整個數(shù)據(jù)庫都在初始化的階段被讀出來了。當(dāng)然,你可以不厭其煩地檢查每一個對象與其他對象的關(guān)系,并把那些最昂貴的刪除,但是到最后,我們可能會因此失去了本想在orm工具中獲得的便利。一個明顯的解決方法是使用hibernate提供的延遲加載機(jī)制。這種初始化策略只在一個對象調(diào)用它的一對多或多對多關(guān)系時才將關(guān)系對象讀取出來。這個過程對開發(fā)者來說是透明的,而且只進(jìn)行了很少的數(shù)據(jù)庫操作請
15、求,因此會得到比較明顯的性能提升。這項(xiàng)技術(shù)的一個缺陷是延遲加載技術(shù)要求一個hibernate會話要在對象使用的時候一直開著。這會成為通過使用dao模式將持久層抽象出來時的一個主要問題。為了將持久化機(jī)制完全地抽象出來,所有的數(shù)據(jù)庫邏輯,包括打開或關(guān)閉會話,都不能在應(yīng)用層出現(xiàn)。最常見的是,一些實(shí)現(xiàn)了簡單接口的dao實(shí)現(xiàn)類將數(shù)據(jù)庫邏輯完全封裝起來了。一種快速但是笨拙的解決方法是放棄dao模式,將數(shù)據(jù)庫連接邏輯加到應(yīng)用層中來。這可能對一些小的應(yīng)用程序有效,但是在大的系統(tǒng)中,這是一個嚴(yán)重的設(shè)計(jì)缺陷,妨礙了系統(tǒng)的可擴(kuò)展性。1.5 struts2簡介雖然struts2號稱是一個全新的框架,但這僅僅是相對st
16、ruts1而言。struts2 與struts1相比,確實(shí)有很多革命性的改進(jìn),但它并不是新發(fā)布的新框架,而是在另一個赫赫有名的框架:webwork基礎(chǔ)上發(fā)展起來的。從某種程度上來講,struts2沒有繼承struts1的血統(tǒng),而是繼承webwork的血統(tǒng)?;蛘哒f,webwork衍生出了struts2,而不是struts1衍生了struts2。因?yàn)閟truts2是webwork的升級,而不是一個全新的框架,因此穩(wěn)定性、性能等各方面都有很好的保證:而且吸收了struts1和webwork兩者的優(yōu)勢,因此,是一個非常值得期待的框架。第二章2 基于ssh框架的頂崗信息處理平臺管理系統(tǒng)的實(shí)現(xiàn)領(lǐng)域模型其實(shí)
17、就是實(shí)體類,符合javabean編程的標(biāo)準(zhǔn),只包含屬性及其setter和getter方法。實(shí)體類suppier對應(yīng)的映射文件supplier.hbm.xml的配置如下: 配置好實(shí)體類的映射文件后,還必須在applicationcontext.xml文件中添加此映射文件的配置,并且還要在applicationcontext.xml中配置連接數(shù)據(jù)庫的信息,內(nèi)容如下:org.hibernate.dialect.mysqldialecttruecom/pojo/supplier.hbm.xml 2.1 spring的應(yīng)用添加學(xué)生信息的的方法封裝在supplier管理接口supplierdao中,方法的
18、具體是現(xiàn)在supplierdaoiml中,其中supplierdaoiml類繼承hibernatedaosupport類。利用spring的控制反轉(zhuǎn)機(jī)制來管理supplierdaoiml類,依賴注入sessionfactory來初始化hibernatedaosupport類中的sessionfactory,spring對supplierdaoiml類管理的配置文件applicationcontext.xml中,添加如下配置:還要在web.xml文件中添加對spring的listener配置,通過上述配置以后,在web服務(wù)啟動后,在spring容器中就自動創(chuàng)建supplierdaoimpl類的對
19、象,就可以通過該對象進(jìn)行調(diào)用添加學(xué)生信息的方法。web.xml配置如下: org.springframework.web.context.contextloaderlistener2.2 struts 的應(yīng)用(1)控制器的配置在呈現(xiàn)和控制器中使用struts,在web.xml文件中配置struts,以*.do的請求都經(jīng)過actionservlet,通過actionservlet來實(shí)現(xiàn)struts的工作流程,配置如下:strutsorg.apache.struts2.dispatcher.filterdispatcherstruts/*(2) 其他組件的應(yīng)用和配置1)jsp頁面 在jsp頁面su
20、pplier.jsp中,結(jié)合el表達(dá)式取之方式和通過supplier來收集表單的數(shù)據(jù),如$supp.age。采用javascript腳本語言對表單的數(shù)據(jù)進(jìn)行客戶端驗(yàn)證,并以“supplier.do?command=add”提交請求給actionservlet處理。2)struts應(yīng)用和配置通過struts的配置文件可以找到supplier類和supplieraction類,從而調(diào)用addsuppliser方法。在struts.xml文件,添加配置文件如下: /people/supplier.jsp/people/supplier.jsp/people/supplier.jsp/people/s
21、upplier.jsp/people/supplier.jsp /people/supplier.jsp(3)開源組件的應(yīng)用本系統(tǒng)還是用了一些開源組件,如圖表組件jfreechart。在action中應(yīng)用,首先將他們相關(guān)的jar包加入到本系統(tǒng)的web-inflib下,然后編寫相應(yīng)的類:public static string generatepiechart(string aa,string infostr, string titles,httpsession session, printwriter pw) string filename = null;font font;try / 建立p
22、iedatasetdefaultpiedataset data = new defaultpiedataset();string ss = infostr.split(,);for (int n = 0; n ss.length; n+) string sspart = ssn.split(#);int tt = integer.parseint(sspart1);string mm = sspart0;data.setvalue(mm, tt);/ 生成chart物件pieplot plot = new pieplot(data);plot.setbackgroundpaint(color.
23、pink);/plot.setbackgroundpaint(color.white);plot.settooltipgenerator(new standardpietooltipgenerator();font = new font(黑體, font.center_baseline, 20);/ 這個地方是設(shè)置統(tǒng)計(jì)圖標(biāo)題的字體和大小jfreechart chart = new jfreechart(,jfreechart.default_title_font, plot, true);texttitle tt = new texttitle(titles);tt.setfont(font)
24、;chart.setbackgroundpaint(java.awt.color.white);/ 統(tǒng)計(jì)圖片的底色chart.settitle(tt);/ 把生成的文件寫入到臨時的目錄中chartrenderinginfo info = new chartrenderinginfo(new standardentitycollection();filename = servletutilities.savechartaspng(chart, 500, 300, info,session);/ 選擇存儲成png格式的文件,當(dāng)然你也可以使用savechartasjpeg的方法生成jpg圖片/ 把i
25、mage map 寫入到 printwriterchartutilities.writeimagemap(pw, filename, info, null, null);pw.flush(); catch (exception ex) system.out.println(error: + ex.getmessage();return filename;總結(jié)在這次畢業(yè)設(shè)計(jì)中,綜合軟件工程、數(shù)據(jù)庫原理、計(jì)算機(jī)網(wǎng)絡(luò)、面向?qū)ο蟪绦蛟O(shè)計(jì)、web程序設(shè)計(jì)這些大學(xué)期間的課程知識,將這些課程的理論知識都融于本系統(tǒng)的設(shè)計(jì)當(dāng)中,使理論與實(shí)踐相結(jié)合。在之前的計(jì)算機(jī)綜合設(shè)計(jì)中我使用jsp+javabean技術(shù)來實(shí)現(xiàn)本系統(tǒng),這次通過學(xué)習(xí)ssh這個流行的開發(fā)框架,更深入的對本系統(tǒng)進(jìn)行重構(gòu)和設(shè)計(jì),是本系統(tǒng)的重用性、可維護(hù)性和靈活性都得到很大的提高。通過這次畢業(yè)設(shè)計(jì),更加熟練的應(yīng)用完整的軟件工程流程對塑料進(jìn)銷系統(tǒng)進(jìn)行了設(shè)計(jì),即需求分析、系統(tǒng)設(shè)計(jì)、詳細(xì)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn)、測試這些階段、并應(yīng)用面向?qū)ο蠓椒▽W(xué)來完成本畢業(yè)設(shè)計(jì);懂得如何配合使用uml工具對本系統(tǒng)進(jìn)行面向?qū)ο蠛头治龊驮O(shè)計(jì),學(xué)會采用java web的流行架構(gòu)struts-spring-hibernate來實(shí)現(xiàn)本系統(tǒng);熟悉使用黑盒測試法來測試系統(tǒng),檢查出系統(tǒng)的錯誤;深刻體會到如何更好的進(jìn)行數(shù)據(jù)庫的設(shè)計(jì),設(shè)計(jì)系統(tǒng)的實(shí)體聯(lián)系圖,即er模
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 變電站設(shè)備文檔管理辦法
- 2025屆福建省永春一中、培元、季延、石光中學(xué)四校高一物理第二學(xué)期期末達(dá)標(biāo)檢測試題含解析
- 2025屆廣西桂林市十八中學(xué)高二物理第二學(xué)期期末聯(lián)考試題含解析
- 囚綠記 教案教學(xué)設(shè)計(jì)
- 2025屆湖北省武漢市黃陂區(qū)漢口北高中高一物理第二學(xué)期期末檢測模擬試題含解析
- 2025屆新疆兵團(tuán)第二師華山中學(xué)高一物理第二學(xué)期期末統(tǒng)考試題含解析
- 湖北省恩施州巴東一中2025屆高二物理第二學(xué)期期末調(diào)研試題含解析
- 公路客運(yùn)一體化管理辦法
- 安順市房屋租賃管理辦法
- 銀行網(wǎng)點(diǎn)安全管理辦法
- 某律師事務(wù)所內(nèi)部規(guī)章管理制度大全
- GB 29743.2-2025機(jī)動車?yán)鋮s液第2部分:電動汽車?yán)鋮s液
- 六西格瑪試題及答案
- 急性右心衰的治療與護(hù)理
- 制約理論(TOC)驅(qū)動制造業(yè)突破性增長
- 社交媒體情感分析方法-全面剖析
- 2024年遼寧省文體旅集團(tuán)所屬企業(yè)招聘筆試真題
- 湖南省2024年普通高等學(xué)校對口升學(xué)旅游專業(yè)
- 氨甲環(huán)酸用藥護(hù)理
- 《教育心理學(xué)》教材
- 特殊兒童融合教育培訓(xùn)
評論
0/150
提交評論