第一篇:獲取本科文憑有幾種途徑
獲取本科文憑有幾種途徑
相信很多人員在步入社會(huì)后,往往會(huì)遇到學(xué)歷達(dá)不到企業(yè)要求門檻的情況,這類人員往往需要獲取成人本科的學(xué)歷以滿足未來的發(fā)展,以下是小編為大家整理獲取本科文憑有幾種途徑相關(guān)內(nèi)容,僅供參考,希望能夠幫助大家!
獲取本科文憑有幾種途徑
1、統(tǒng)招學(xué)歷:統(tǒng)招學(xué)歷是學(xué)生通過參加高考錄取的學(xué)歷,這種學(xué)歷是目前國內(nèi)含金量最高的學(xué)歷,因?yàn)檫@種學(xué)歷是通過高考,通過教育部錄取,在學(xué)信網(wǎng)注冊學(xué)籍的,所以這種學(xué)歷不能直接辦理的,對于在職人員來說也是無法取得的'。
2、自考學(xué)歷:是指學(xué)員通過自己學(xué)習(xí),參加國家組織的統(tǒng)考,通過專業(yè)安排的所有課程及院校的論文答辯就可以申請畢業(yè),獲得學(xué)歷。
3、網(wǎng)教:是指學(xué)員每年按照春季秋季兩次報(bào)名時(shí)間報(bào)名,參加學(xué)校組織的入學(xué)考試,通過考試后,學(xué)籍也是直接注冊到學(xué)信網(wǎng)的,參加每年學(xué)校組織的期末考試,在規(guī)定的兩年半的時(shí)間里修滿學(xué)分即可畢業(yè)。
4、成教:是指學(xué)員每年的八月份報(bào)名,參加十月份國家組織的承認(rèn)高考,通過以后,發(fā)放錄取通知書,學(xué)籍在學(xué)信網(wǎng)注冊,在規(guī)定的兩年半時(shí)間內(nèi)通過所有課程考試修滿學(xué)分即可畢業(yè)。
5、民辦學(xué)歷:這種學(xué)歷主要是用于找工作等用途的,由于這種學(xué)歷只能在學(xué)校網(wǎng)站上查詢,不能再學(xué)信網(wǎng)上查詢,所以稱之為非國民教育系列的學(xué)歷,不能用于考研,如果你只是工作上用的話足夠了。
6、黨校文憑:黨校學(xué)歷是具有針對性的,是黨政機(jī)關(guān),事業(yè)單位需要的一種學(xué)歷,社會(huì)需求面比較窄。
獲得成人本科學(xué)歷的幾種方式各有哪些優(yōu)勢
首先我們來看成人自考本科,畢業(yè)證含金量在四種方式中是最高的,在社會(huì)上成人自考本科是最接近統(tǒng)招學(xué)歷的,而且學(xué)費(fèi)低廉性價(jià)比很高。
成考本科,考生需要自行準(zhǔn)備報(bào)考,參加并通過成人高考,獲得入學(xué)資格在各高校的成人教育學(xué)院進(jìn)行就讀,學(xué)習(xí)的方式比較多,更為適合在職人員報(bào)考,而且畢業(yè)難度不大。
網(wǎng)教本科和電大本科,網(wǎng)教和電大其實(shí)是有些相似的,可以獲得的學(xué)習(xí)資源是非常多的,受到環(huán)境的限制非常小,而且獲取畢業(yè)證的難度都不大。
第二篇:獲取本科文憑的幾種渠道分析
獲取本科文憑的幾種渠道分析
為了幫助對學(xué)歷需求非常迫切的朋友,讓他們更準(zhǔn)確地找到一條最適合自己的快速、容易的取得文憑的渠道,現(xiàn)在我們可以分析一下能夠取得本科文憑和學(xué)士學(xué)位的幾種途徑:
途徑一:專升本考試。無論是報(bào)考獨(dú)立高職院校還是報(bào)考普通高校的高職學(xué)院,學(xué)生在畢業(yè)合格取得專科學(xué)歷后,都可以通過專升本考試?yán)^續(xù)本科學(xué)業(yè),取得學(xué)士學(xué)位。專升本考試設(shè)在每年春季,一年一考。
由于專升本考試以省為單位,限于應(yīng)屆專科畢業(yè)生,而且各校有一定的名額限制。所以此方法適合應(yīng)屆專科畢業(yè)生報(bào)考本校本科,對于其他省市或其他學(xué)校專科生機(jī)會(huì)很小,對于自考生、往屆專科生、在職者、中專生則完全沒有機(jī)會(huì)。
途徑二:成人高考。成人高等教育是終身教育體系的重要組成部分。成人高校的辦學(xué)層次有高中起點(diǎn)專科、高中起點(diǎn)本科、專科起點(diǎn)本科;學(xué)習(xí)形式有函授、夜大、業(yè)余、脫產(chǎn)和網(wǎng)絡(luò)視聽學(xué)習(xí)等。
成人高考對于很多想獲得本科學(xué)歷,而又有充足時(shí)間的人來說是個(gè)不錯(cuò)的選擇,入學(xué)門檻低,學(xué)習(xí)任務(wù)相對較低。但成人高考也有一些如時(shí)間長,學(xué)習(xí)過程繁瑣等弊端,對很多對文憑需求迫切,想輕松、容
易,盡早獲得本科文憑的人不是很合適。一般成人高考高起本脫產(chǎn)是四年,業(yè)余是五年,專升本脫產(chǎn)兩年,業(yè)余是三年。所以對于已經(jīng)參加過多年自考的自考生來說年齡地增長、就業(yè)的壓力已經(jīng)使他們經(jīng)不起礦日持久的成人教育學(xué)習(xí)了。對于在職人員來說,選擇成人脫產(chǎn)就意味著要耽誤工作,得不償失。選擇業(yè)余則時(shí)間太長,消耗不起。對于很多還沒有專科學(xué)歷的人來說更希望不要經(jīng)過專科階段,能在最短時(shí)間內(nèi)取得本科學(xué)歷和學(xué)士學(xué)位。
途徑三:高等教育自學(xué)考試。高自考以其高度的開放,靈活的教育,權(quán)威的國家考試,已成為我國高等教育的重要組成部分.高自考的開考專業(yè)多為社會(huì)急需的專業(yè),通過自學(xué)考試,不僅可獲得專科學(xué)歷,也可獲得本科學(xué)歷。現(xiàn)在,已經(jīng)開考了經(jīng)濟(jì)學(xué)、管理學(xué)、法學(xué)、教育學(xué)、文學(xué)、理學(xué)、工學(xué)、農(nóng)學(xué)等多個(gè)學(xué)科的百余個(gè)專科和本科專業(yè),其中本科專業(yè)達(dá)到100個(gè)。
自學(xué)考試為很多無緣進(jìn)入大學(xué)的人提供了接受大學(xué)教育的機(jī)會(huì),因而現(xiàn)在全國的自考培訓(xùn)機(jī)構(gòu)也以各種方式和名目粉墨登場,自考形成了一個(gè)龐大的產(chǎn)業(yè)。然而我們只要細(xì)心關(guān)注一下就不難發(fā)現(xiàn),通過自考取本科學(xué)歷是非常難的。據(jù)北京招生辦內(nèi)部統(tǒng)計(jì)數(shù)據(jù),北京市自20006年至2005年6月,五年內(nèi)通過自考取得各專業(yè)專科畢業(yè)證的考生僅占所有報(bào)名參加自學(xué)考試考生總?cè)藬?shù)的1.7%,專科取證率尚且如此,可想而知本科取證率之低。所以在北京有眾多的自考生曠日持久參加自考,意志消磨殆盡而進(jìn)退兩難,被迫漂在北京的各個(gè)角落。他
們深受自考之累,欲罷不能,最后大多放棄自考,或求職打工、或另謀他路、或黯然回鄉(xiāng),嘗盡人間辛酸。
途徑四:遠(yuǎn)程教育。現(xiàn)在許多高校都開設(shè)有遠(yuǎn)程網(wǎng)絡(luò)教學(xué)課程,學(xué)生可上網(wǎng)注冊入學(xué).網(wǎng)絡(luò)大學(xué)通常實(shí)行彈性學(xué)制,允許學(xué)生自由選擇學(xué)習(xí)期限,如一些網(wǎng)校規(guī)定高中起點(diǎn)專科、專科起點(diǎn)本科,學(xué)制三年,學(xué)習(xí)期限2至5年;高中起點(diǎn)本科學(xué)制五年,學(xué)習(xí)期限4至7年。遠(yuǎn)程教育作為新生的教育模式近年來被廣泛關(guān)注,各大院校相繼紛紛開設(shè)。其最大的優(yōu)勢在于入學(xué)要求奇低,幾乎報(bào)名就可以上,但它的缺點(diǎn)也是致命的,那就是經(jīng)過了漫長的學(xué)習(xí)期后,取得的本科畢業(yè)證是國家不承認(rèn)的學(xué)歷,不能參加國家公務(wù)員考試、研究生入學(xué)考試等國家要求具有國家承認(rèn)學(xué)歷的考試。
途徑五:參加哈爾濱理工大學(xué)成人教育學(xué)院北京教學(xué)點(diǎn)學(xué)習(xí)并取得本科畢業(yè)證和學(xué)士學(xué)位證。哈理工北京教學(xué)點(diǎn),隸屬哈爾濱理工大學(xué)江西函授站。負(fù)責(zé)哈爾濱理工大學(xué)的計(jì)算機(jī)科學(xué)與技術(shù)、工商管理、會(huì)計(jì)學(xué)、法學(xué)、土木工程與建筑等專業(yè)在北京的成考、教育系列工作。此類專業(yè)在北京就讀,取得由哈爾濱理工大學(xué)成教學(xué)院頒發(fā)的全國承認(rèn)的相關(guān)專業(yè)本科學(xué)歷證書和學(xué)士學(xué)位證書(網(wǎng)上可查,可考研)。哈理工北京教學(xué)點(diǎn)的宗旨是方便北京地區(qū)學(xué)生的求學(xué),幫助在職人員深造,解決學(xué)歷瓶頸,創(chuàng)造輕松、悠心的學(xué)習(xí)機(jī)會(huì)與環(huán)境。本校為大批的在職人員與自考人員解決了學(xué)歷需求的燃眉之急!學(xué)生入學(xué)后,學(xué)校組織學(xué)生參加全國統(tǒng)一成人高考考試,成績合格者,兩年即可獲得頒發(fā)國家統(tǒng)一印制的成人教育畢業(yè)證書。本科畢業(yè)生,參加英語學(xué)位考試(成教英語三級(jí)),成績合格者,并且通過畢業(yè)論文答辯,授予學(xué)士學(xué)位。
哈理工北京教學(xué)點(diǎn)的優(yōu)勢是十分明顯的:
1、頒發(fā)的證書是國家承認(rèn)學(xué)歷的哈爾濱理工大學(xué)成人教育本科畢業(yè)證和學(xué)士學(xué)位證。可以參加國家統(tǒng)一研究生考試和公務(wù)員考試。
2、學(xué)習(xí)取證時(shí)間短,速度最快,無論是否已經(jīng)擁有專科畢業(yè)證,都能在兩年時(shí)間內(nèi)取得本科畢業(yè)證和學(xué)士學(xué)位證。
3、方便省心,容易通過。無論是前期的成人高考,還是最后的學(xué)位英語和論文答辯,學(xué)校都會(huì)提供放心的服務(wù),讓學(xué)生順利通過考試。最后拿到本科文憑和學(xué)士學(xué)位。
4、不耽誤工作和其他學(xué)習(xí)。哈理工北京教學(xué)點(diǎn)教學(xué)以自學(xué)為主,面授為輔的學(xué)習(xí)方式進(jìn)行的。一般每學(xué)期集中節(jié)假日面授一周左右。如果的確工作忙,面授時(shí)間不能來,也可以請假。特別方便在職者工作,自考生參加就業(yè)培訓(xùn)以及直接準(zhǔn)備考研復(fù)習(xí)。
你可以去看看他們的網(wǎng)站: 祝愿您早日畢業(yè)!
第三篇:獲取教學(xué)資源的途徑
獲取教學(xué)資源的途徑
主要是通過以下幾個(gè)途徑去收集和積累教學(xué)資源的:
1、從報(bào)紙、雜志等刊物和書籍中獲取。作為政治老師,其實(shí)我更喜歡報(bào)紙、《中學(xué)政治教學(xué)參考》、《時(shí)事》、《半月談》等雜志。
2、通過購買一些書籍,光盤等商品獲取資源。
3、通過與同事討論、交流、學(xué)習(xí)獲取信息資源。
4、從“遠(yuǎn)程教育資源”中獲取。
5、從互聯(lián)網(wǎng)上獲取教育資源,網(wǎng)絡(luò)是快速獲取資源的途徑。
6、利用農(nóng)村的有利條件,讓學(xué)生教師動(dòng)手收集教學(xué)資源。
7、有意識(shí)的剪輯、摘抄刊物資源。
8、充分利用和挖掘好教材資源。
9、其實(shí)有一項(xiàng)資源是我們?nèi)菀捉佑|但也容易忽視的:電視。
第四篇:主題五:探討資源獲取途徑
主題五:探討資源獲取途徑
資源獲取是需要我們時(shí)時(shí)刻刻關(guān)注的。特別是作為一個(gè)語文老師,雜糅百家,需要多方位不同角度的資源。
1、網(wǎng)絡(luò)是快速獲取資源的途徑。中國知網(wǎng)、百度文庫等信息平臺(tái),可以讓我們獲取更深層的文學(xué)資源;無憂無慮教育網(wǎng)、中學(xué)語文教學(xué)資源網(wǎng)是參考他人教學(xué)方法的重要平臺(tái);論壇是我比較喜歡的地方,比如三槐居、人民教育論壇,經(jīng)常會(huì)在其中發(fā)現(xiàn)一些被忽視的教學(xué)問題。而豆瓣網(wǎng)中推薦的書目,電影包括他人的評(píng)論,促使自己去接觸更多與語文有關(guān)的資源和信息。
2、其實(shí)有一項(xiàng)資源是我們?nèi)菀捉佑|但也容易忽視的:電視。電視的新聞報(bào)道、廣告、紀(jì)錄片,其實(shí)都是生活的一個(gè)片段。而語文恰恰是與生活緊密聯(lián)系的,所以我經(jīng)常會(huì)把電視中看到的片段搬入課堂中,比如《觀潮》一課中的錢塘江大潮就是1818黃金眼新聞的片段。而這些“過時(shí)不候”的資源,又要充分聯(lián)系網(wǎng)絡(luò)。
3、作為語文老師,其實(shí)我更喜歡紙質(zhì)資源,這是可以捧在手里的世界。學(xué)科有關(guān)的報(bào)刊比如《中學(xué)語文教學(xué)參考》《中學(xué)語文教與學(xué)》《語文天地》《中國語言文字報(bào)》《教育學(xué)文摘》,打開了自己與外面語文教育世界的窗戶。同時(shí),作為一名教齡很短的教師,教材、《語文課程標(biāo)準(zhǔn)》是語文教學(xué)最重要也最本質(zhì)的基礎(chǔ),多參考,多探討,是站穩(wěn)講臺(tái)、走向語文的重要路程。而教育名家比如錢夢龍、李鎮(zhèn)西、于漪他們的書籍,讓自己對語文和教育有了不一樣的認(rèn)識(shí)和反思。
4、其實(shí)獲取資源還可以采取“他山之石,可以攻玉”的方法。每個(gè)人都有自己的思考方式和獲取資源的方式。因而借鑒相同學(xué)科老師的學(xué)習(xí)方法,可以讓我們站在巨人的肩膀上看的更高,也更遠(yuǎn)。
第五篇:總結(jié)一下java獲取路徑幾種途徑
總結(jié)一下java獲取路徑幾種途徑--
在寫java程序時(shí)不可避免要獲取文件的路徑...總結(jié)一下,遺漏的隨時(shí)補(bǔ)上
1.可以在servlet的init方法里
String path = getServletContext().getRealPath(“/”);這將獲取web項(xiàng)目的全路徑
例如 :E:eclipseM9workspacetree tree是我web項(xiàng)目的根目錄
2.你也可以隨時(shí)在任意的class里調(diào)用
this.getClass().getClassLoader().getResource(“/”).getPath();這將獲取 到classes目錄的全路徑
例如 : E:eclipseM9/workspace/tree/WEB-INF/classes/
這個(gè)方法也可以不在web環(huán)境里確定路徑,比較好用
3.request.getContextPath();獲得web根的上下文環(huán)境 如 /tree tree是我的web項(xiàng)目的root context
獲取web項(xiàng)目的全路徑
Java路徑問題最終解決方案
—可定位所有資源的相對路徑尋址
前言
Java的路徑問題,非常難搞。最近的工作涉及到創(chuàng)建和讀取文件的工作,這里我就給大家徹底得解決Java路徑問題。
我編寫了一個(gè)方法,比ClassLoader.getResource(String 相對路徑)方法的能力更強(qiáng)。它可以接受“../”這樣的參數(shù),允許我們用相對路徑來定位classpath外面的資源。這樣,我們就可以使用相對于classpath的路徑,定位所有位置的資源!
Java路徑
Java中使用的路徑,分為兩種:絕對路徑和相對路徑。具體而言,又分為四種:
一、URI形式的絕對資源路徑
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b URL是URI的特例。URL的前綴/協(xié)議,必須是Java認(rèn)識(shí)的。URL可以打開資源,而URI則不行。URL和URI對象可以互相轉(zhuǎn)換,使用各自的toURI(),toURL()方法即可!
二、本地系統(tǒng)的絕對路徑
D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b Java.io包中的類,需要使用這種形式的參數(shù)。
但是,它們一般也提供了URI類型的參數(shù),而URI類型的參數(shù),接受的是URI樣式的String。因此,通過URI轉(zhuǎn)換,還是可以把URI樣式的絕對路徑用在java.io包中的類中。
三、相對于classpath的相對路徑
如:相對于
file:/D:/java/eclipse32/workspace/jbpmtest3/bin/這個(gè)路徑的相對路徑。其中,bin是本項(xiàng)目的classpath。所有的Java源文件編譯后的.class文件復(fù)制到這個(gè)目錄中。
四、相對于當(dāng)前用戶目錄的相對路徑
就是相對于System.getProperty(“user.dir”)返回的路徑。
對于一般項(xiàng)目,這是項(xiàng)目的根路徑。對于JavaEE服務(wù)器,這可能是服務(wù)器的某個(gè)路徑。這個(gè)并沒有統(tǒng)一的規(guī)范!
所以,絕對不要使用“相對于當(dāng)前用戶目錄的相對路徑”。然而:
默認(rèn)情況下,java.io 包中的類總是根據(jù)當(dāng)前用戶目錄來分析相對路徑名。此目錄由系統(tǒng)屬性 user.dir 指定,通常是 Java 虛擬機(jī)的調(diào)用目錄。
這就是說,在使用java.io包中的類時(shí),最好不要使用相對路徑。否則,雖然在J2SE應(yīng)用程序中可能還算正常,但是到了J2EE程序中,一定會(huì)出問題!而且這個(gè)路徑,在不同的服務(wù)器中都是不同的!
相對路徑最佳實(shí)踐
推薦使用相對于當(dāng)前classpath的相對路徑
因此,我們在使用相對路徑時(shí),應(yīng)當(dāng)使用相對于當(dāng)前classpath的相對路徑。
ClassLoader類的getResource(String name),getResourceAsStream(String name)等方法,使用相對于當(dāng)前項(xiàng)目的classpath的相對路徑來查找資源。
讀取屬性文件常用到的ResourceBundle類的getBundle(String path)也是如此。
通過查看ClassLoader類及其相關(guān)類的源代碼,我發(fā)現(xiàn),它實(shí)際上還是使用了URI形式的絕對路徑。通過得到當(dāng)前classpath的URI形式的絕對路徑,構(gòu)建了相對路徑的URI形式的絕對路徑。(這個(gè)實(shí)際上是猜想,因?yàn)镴DK內(nèi)部調(diào)用了SUN的源代碼,而這些代碼不屬于JDK,不是開源的。)
相對路徑本質(zhì)上還是絕對路徑
因此,歸根結(jié)底,Java本質(zhì)上只能使用絕對路徑來尋找資源。所有的相對路徑尋找資源的方法,都不過是一些便利方法。不過是API在底層幫助我們構(gòu)建了絕對路徑,從而找到資源的!
得到classpath和當(dāng)前類的絕對路徑的一些方法
下面是一些得到classpath和當(dāng)前類的絕對路徑的一些方法。你可能需要使用其中的一些方法來得到你需要的資源的絕對路徑。
1,F(xiàn)ileTest.class.getResource(“")
得到的是當(dāng)前類FileTest.class文件的URI目錄。不包括自己!如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/ 2,F(xiàn)ileTest.class.getResource(”/“)
得到的是當(dāng)前的classpath的絕對URI路徑。
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
3,Thread.currentThread().getContextClassLoader().getResource(”“)
得到的也是當(dāng)前ClassPath的絕對URI路徑。
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
4,F(xiàn)ileTest.class.getClassLoader().getResource(”“)
得到的也是當(dāng)前ClassPath的絕對URI路徑。
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/ 5,ClassLoader.getSystemResource(”“)
得到的也是當(dāng)前ClassPath的絕對URI路徑。
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
我推薦使用Thread.currentThread().getContextClassLoader().getResource(”“)來得到當(dāng)前的classpath的絕對路徑的URI表示法。
Web應(yīng)用程序中資源的尋址
上文中說過,當(dāng)前用戶目錄,即相對于System.getProperty(”user.dir“)返回的路徑。
對于JavaEE服務(wù)器,這可能是服務(wù)器的某個(gè)路徑,這個(gè)并沒有統(tǒng)一的規(guī)范!而不是我們發(fā)布的Web應(yīng)用程序的根目錄!
這樣,在Web應(yīng)用程序中,我們絕對不能使用相對于當(dāng)前用戶目錄的相對路徑。
在Web應(yīng)用程序中,我們一般通過ServletContext.getRealPath(”/“)方法得到Web應(yīng)用程序的根目錄的絕對路徑。這樣,我們只需要提供相對于Web應(yīng)用程序根目錄的路徑,就可以構(gòu)建出定位資源的絕對路徑。這是我們開發(fā)Web應(yīng)用程序時(shí)一般所采取的策略。
通用的相對路徑解決辦法容易的解決相對路徑問題。
Java中各種相對路徑非常多,不容易使用,非常容易出錯(cuò)。因此,我編寫了一個(gè)便利方法,幫助更Web應(yīng)用程序中使用JavaSE運(yùn)行的資源尋址問題
在JavaSE程序中,我們一般使用classpath來作為存放資源的目的地。但是,在Web應(yīng)用程序中,我們一般使用classpath外面的WEB-INF及其子目錄作為資源文件的存放地。
在Web應(yīng)用程序中,我們一般通過ServletContext.getRealPath(”/“)方法得到Web應(yīng)用程序的根目錄的絕對路徑。這樣,我們只需要提供相對于Web應(yīng)用程序根目錄的路徑,就可以構(gòu)建出定位資源的絕對路徑。
Web應(yīng)用程序,可以作為Web應(yīng)用程序進(jìn)行發(fā)布和運(yùn)行。但是,我們也常常會(huì)以JavaSE的方式來運(yùn)行Web應(yīng)用程序的某個(gè)類的main方法。或者,使用JUnit測試。這都需要使用JavaSE的方式來運(yùn)行。
這樣,我們就無法使用ServletContext.getRealPath(”/“)方法得到Web應(yīng)用程序的根目錄的絕對路徑。而JDK提供的ClassLoader類,它的getResource(String name),getResourceAsStream(String name)等方法,使用相對于當(dāng)前項(xiàng)目的classpath的相對路徑來查找資源。
讀取屬性文件常用到的ResourceBundle類的getBundle(String path)也是如此。
它們都只能使用相對路徑來讀取classpath下的資源,無法定位到classpath外面的資源。
Classpath外配置文件讀取問題
如,我們使用測試驅(qū)動(dòng)開發(fā)的方法,開發(fā)Spring、Hibernate、iBatis等使用配置文件的Web應(yīng)用程序,就會(huì)遇到問題。
盡管Spring自己提供了FileSystem(也就是相對于user,dir目錄)來讀取Web配置文件的方法,但是終究不是很方便。而且與Web程序中的代碼使用方式不一致!
至于Hibernate,iBatis就更麻煩了!只有把配置文件移到classpath下,否則根本不可能使用測試驅(qū)動(dòng)開發(fā)!
這怎么辦?
通用的相對路徑解決辦法”)方法來定位資源。
面對這個(gè)問題,我決定編寫一個(gè)助手類ClassLoaderUtil,提供一個(gè)便利方法[public static URL getExtendResource(String relativePath)]。在Web應(yīng)用程序等一切Java程序中,需要定位classpath外的資源時(shí),都使用這個(gè)助手類的便利方法,而不使用Web應(yīng)用程序特有的ServletContext.getRealPath(“/利用classpath的絕對路徑,定位所有資源 這個(gè)便利方法的實(shí)現(xiàn)原理,就是“利用classpath的絕對路徑,定位所有資源”。
ClassLoader類的getResource(”“)方法能夠得到當(dāng)前classpath的絕對路徑,這是所有Java程序都擁有的能力,具有最大的適應(yīng)性!
而目前的JDK提供的ClassLoader類的getResource(String 相對路徑)方法,只能接受一般的相對路徑。這樣,使用ClassLoader類的getResource(String 相對路徑)方法就只能定位到classpath下的資源。
如果,它能夠接受“../”這樣的參數(shù),允許我們用相對路徑來定位classpath外面的資源,那么我們就可以定位位置的資源!
當(dāng)然,我無法修改ClassLoader類的這個(gè)方法,于是,我編寫了一個(gè)助手類ClassLoaderUtil類,提供了[public static URL getExtendResource(String relativePath)]這個(gè)方法。它能夠接受帶有“../”符號(hào)的相對路徑,實(shí)現(xiàn)了自由尋找資源的功能。
通過相對classpath路徑實(shí)現(xiàn)自由尋找資源的助手類的源代碼:
import java.io.IOException;import java.io.InputStream;
import java.net.MalformedURLException;import java.net.URL;import java.util.Properties;
import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;
/**
*@author沈東良shendl_s@hotmail.com
*Nov29,2006 10:34:34AM
*用來加載類,classpath下的資源文件,屬性文件等。
*getExtendResource(StringrelativePath)方法,可以使用../符號(hào)來加載classpath外部的資源。
*/
publicclass ClassLoaderUtil {
privatestatic Log log=LogFactory.getLog(ClassLoaderUtil.class);
/**
*Thread.currentThread().getContextClassLoader().getResource(”“)
*/
/**
*加載Java類。使用全限定類名
*@paramclassName
*@return
*/
publicstatic Class loadClass(String className){
try {
return getClassLoader().loadClass(className);
} catch(ClassNotFoundException e){
thrownew RuntimeException(”class not found '“+className+”'“, e);
}
}
/**
*得到類加載器
*@return
*/
publicstatic ClassLoader getClassLoader(){
return ClassLoaderUtil.class.getClassLoader();
}
/**
*提供相對于classpath的資源路徑,返回文件的輸入流
*@paramrelativePath必須傳遞資源的相對路徑。是相對于classpath的路徑。如果需要查找classpath外部的資源,需要使用../來查找
*@return 文件輸入流
*@throwsIOException
*@throwsMalformedURLException
*/
publicstatic InputStream getStream(String relativePath)throws MalformedURLException, IOException {
if(!relativePath.contains(”../“)){
return getClassLoader().getResourceAsStream(relativePath);
}else{
return ClassLoaderUtil.getStreamByExtendResource(relativePath);
}
}
/**
*
*@paramurl
*@return
*@throwsIOException
*/
publicstatic InputStream getStream(URL url)throws IOException{
if(url!=null){
return url.openStream();
}else{
returnnull;
}
}
/**
*
*@paramrelativePath必須傳遞資源的相對路徑。是相對于classpath的路徑。如果需要查找classpath外部的資源,需要使用../來查找
*@return
*@throwsMalformedURLException
*@throwsIOException
*/
publicstatic InputStream getStreamByExtendResource(String relativePath)throws MalformedURLException, IOException{
return ClassLoaderUtil.getStream(ClassLoaderUtil.getExtendResource(relativePath));
}
/**
*提供相對于classpath的資源路徑,返回屬性對象,它是一個(gè)散列表
*@paramresource
*@return
*/
publicstatic Properties getProperties(String resource){
Properties properties = new Properties();
try {
properties.load(getStream(resource));
} catch(IOException e){
thrownew RuntimeException(”couldn't load properties file '“+resource+”'“, e);
}
return properties;
}
/**
*得到本Class所在的ClassLoader的Classpat的絕對路徑。
*URL形式的 *@return
*/
publicstatic String getAbsolutePathOfClassLoaderClassPath(){
ClassLoaderUtil.log.info(ClassLoaderUtil.getClassLoader().getResource(”“).toString());
return ClassLoaderUtil.getClassLoader().getResource(”“).toString();
}
/**
*
*@paramrelativePath 必須傳遞資源的相對路徑。是相對于classpath的路徑。如果需要查找classpath外部的資源,需要使用../來查找
*@return資源的絕對URL
*@throwsMalformedURLException
*/
publicstatic URL getExtendResource(String relativePath)throws MalformedURLException{
ClassLoaderUtil.log.info(”傳入的相對路徑:“+relativePath);
//ClassLoaderUtil.log.info(Integer.valueOf(relativePath.indexOf(”../“)));
if(!relativePath.contains(”../“)){
return ClassLoaderUtil.getResource(relativePath);
}
String classPathAbsolutePath=ClassLoaderUtil.getAbsolutePathOfClassLoaderClassPath();
if(relativePath.substring(0, 1).equals(”/“)){
relativePath=relativePath.substring(1);
}
ClassLoaderUtil.log.info(Integer.valueOf(relativePath.lastIndexOf(”../“)));
String wildcardString=relativePath.substring(0,relativePath.lastIndexOf(”../“)+3);
relativePath=relativePath.substring(relativePath.lastIndexOf(”../“)+3);
int containSum=ClassLoaderUtil.containSum(wildcardString, ”../“);
classPathAbsolutePath= ClassLoaderUtil.cutLastString(classPathAbsolutePath, ”/“, containSum);
String resourceAbsolutePath=classPathAbsolutePath+relativePath;
ClassLoaderUtil.log.info(”絕對路徑:“+resourceAbsolutePath);
URL resourceAbsoluteURL=new URL(resourceAbsolutePath);
return resourceAbsoluteURL;
}
/**
*
*@paramsource
*@paramdest
*@return
*/
privatestaticint containSum(String source,String dest){
int containSum=0;
int destLength=dest.length();
while(source.contains(dest)){
containSum=containSum+1;
source=source.substring(destLength);
}
return containSum;
}
/**
*
*@paramsource
*@paramdest
*@paramnum
*@return
*/
privatestatic String cutLastString(String source,String dest,int num){
// String cutSource=null;
for(int i=0;i
source=source.substring(0, source.lastIndexOf(dest, source.length()-2)+1);
}
return source;
}
/**
*
*@paramresource
*@return
*/
publicstatic URL getResource(String resource){
ClassLoaderUtil.log.info(”傳入的相對于classpath的路徑:“+resource);
return ClassLoaderUtil.getClassLoader().getResource(resource);
}
/**
*@paramargs
*@throwsMalformedURLException
*/
publicstaticvoid main(String[] args)throws MalformedURLException {
//ClassLoaderUtil.getExtendResource(”../spring/dao.xml“);
//ClassLoaderUtil.getExtendResource(”../../../src/log4j.properties“);
ClassLoaderUtil.getExtendResource(”log4j.properties“);
System.out.println(ClassLoaderUtil.getClassLoader().getResource(”log4j.properties").toString());
}
}