国产精品色无码视频,国产av毛片影院精品资源,亚洲人成网站77777·c0m,囯产av无码片毛片一级,夜夜操www99视频,美女白嫩胸交在线观看,亚洲a毛片性生活

薈聚奇文、博采眾長、見賢思齊
當(dāng)前位置:公文素材庫 > 計(jì)劃總結(jié) > 工作總結(jié) > 北煤機(jī)實(shí)習(xí)總結(jié)

北煤機(jī)實(shí)習(xí)總結(jié)

網(wǎng)站:公文素材庫 | 時(shí)間:2019-05-28 06:40:53 | 移動端:北煤機(jī)實(shí)習(xí)總結(jié)

北煤機(jī)實(shí)習(xí)總結(jié)

北煤機(jī)實(shí)習(xí)總結(jié)

結(jié)束了緊張而充實(shí)的張煤機(jī)實(shí)習(xí)生活,我們5人實(shí)習(xí)小組趕赴中煤北京煤礦機(jī)械有限公司,開始了為期三個(gè)月的北煤機(jī)實(shí)習(xí)生活。

中煤北京煤礦機(jī)械有限責(zé)任公司是裝備公司旗下的另一個(gè)煤機(jī)生產(chǎn)骨干企業(yè),是國內(nèi)設(shè)計(jì)、制造綜采液壓支架最大的專業(yè)廠家之一。近年來,北煤機(jī)的液壓支架設(shè)計(jì)能力、工藝保證、制造水平始終是國內(nèi)同行業(yè)的翹楚,率先通過了ISO9001質(zhì)量管理體系認(rèn)證,實(shí)現(xiàn)了生產(chǎn)規(guī);⒓夹g(shù)裝備現(xiàn)代化、職工隊(duì)伍專業(yè)化、管理手段信息化、售后服務(wù)網(wǎng)絡(luò)化,以雄厚的科技資源為依托,始終占領(lǐng)國內(nèi)外市場制高點(diǎn)。截止目前,公司已設(shè)計(jì)、制造液壓支架支護(hù)高度從最低0.55米到最高7.5米,工作阻力從1800KN到18000KN,中心距從1.25到2.05米等不同類型680多種架型8萬多架,產(chǎn)品遍布在全國100多個(gè)煤炭生產(chǎn)企業(yè),先后出口美國、俄羅斯、印度、孟加拉、越南等國,是國內(nèi)出口液壓支架最多的廠家。

一、現(xiàn)場參觀學(xué)習(xí)

初到北煤機(jī),公司人力資源部安排我們實(shí)習(xí)小組參觀了各個(gè)分廠車間,一天的參觀使我大體了解了北煤機(jī)各分廠的主要生產(chǎn)職能(如圖1)和主要產(chǎn)品的實(shí)現(xiàn)過程(如圖2)。

生產(chǎn)分廠主要生產(chǎn)職能液壓元件分廠金屬結(jié)構(gòu)分廠下料中心鍛造分廠綜合產(chǎn)品分廠鑄造分廠總裝分廠液壓控制閥分廠立柱千斤頂?shù)纳a(chǎn)、加工液壓支架主體結(jié)構(gòu)件的焊接鋼板下料管材下料、鍛件的生產(chǎn)各種連接件和非標(biāo)準(zhǔn)化配件的生產(chǎn)鑄造各類所需產(chǎn)品各類產(chǎn)成品的總體裝配生產(chǎn)各類閥體和電液控系統(tǒng)

圖1北煤機(jī)各分廠主要生產(chǎn)職能客戶需求分析外購件產(chǎn)品總確定產(chǎn)品設(shè)計(jì)開發(fā)評審采購原材料機(jī)械零件加工鍛造鑄造機(jī)加工熱處理電鍍機(jī)械部件組裝調(diào)試裝調(diào)試用戶驗(yàn)收用戶服務(wù)鋼板下料結(jié)構(gòu)件組焊結(jié)構(gòu)件焊接注:圖中黑點(diǎn)代表監(jiān)測、測量或檢驗(yàn)、試驗(yàn)活動

圖2.北煤機(jī)產(chǎn)品實(shí)現(xiàn)過程流程

二、管理規(guī)劃部實(shí)習(xí)

現(xiàn)場參觀學(xué)習(xí)后,我被安排在了管理規(guī)劃部實(shí)習(xí)。管理規(guī)劃部的主要職能包括:制定企業(yè)發(fā)展規(guī)劃、日常經(jīng)營管理、綜合統(tǒng)計(jì)、土建工程、技改措施管理以及重大項(xiàng)目管理等。

第一周(11.02-11.04)關(guān)鍵詞:企業(yè)年報(bào)

來規(guī)劃部的第一周,通過對《201*年煤機(jī)企業(yè)年報(bào)》的仔細(xì)閱讀和分析,我全面了解了國內(nèi)液壓支架企業(yè)的基本情況,大體了解了國內(nèi)主要的支架企業(yè)工業(yè)總產(chǎn)值、產(chǎn)品結(jié)構(gòu)、銷售收入、產(chǎn)量、財(cái)務(wù)和管理費(fèi)用、營業(yè)利潤等生產(chǎn)經(jīng)營數(shù)據(jù)。

通過對現(xiàn)有企業(yè)的基本經(jīng)營數(shù)據(jù)的分析和比較,不難看出,北煤機(jī)公司面臨著較為嚴(yán)峻的市場競爭環(huán)境。從目前來看,挑戰(zhàn)除了來自鄭煤機(jī)、平頂山煤機(jī)、平陽重工等傳統(tǒng)大型支架企業(yè)外,各礦區(qū)也陸續(xù)大力投資組建液壓支架廠,積極爭奪市場份額。面對競爭慘烈的市場競爭環(huán)境,公司積極完善生產(chǎn)流程、嚴(yán)抓質(zhì)量管理、轉(zhuǎn)變營銷思路推進(jìn)管理創(chuàng)新已經(jīng)刻不容緩、迫在眉睫。

第二、三周(11.07-11.18)關(guān)鍵詞:“十二五”規(guī)劃

第二、第三周主要學(xué)習(xí)了《中煤北煤機(jī)“十二五”發(fā)展規(guī)劃》,通過本階段的學(xué)習(xí)使我對北煤機(jī)企業(yè)的發(fā)展現(xiàn)狀、企業(yè)發(fā)展的外部環(huán)境、企業(yè)的總體生產(chǎn)綱領(lǐng)、經(jīng)營目標(biāo)規(guī)劃、市場開發(fā)、科技研發(fā)、技術(shù)改造等產(chǎn)學(xué)研戰(zhàn)略有了深刻的認(rèn)識和全面的把握。具體內(nèi)容如下:

在了解了企業(yè)發(fā)展現(xiàn)狀并結(jié)合第一周學(xué)習(xí)的《201*年煤機(jī)企業(yè)年報(bào)》的相關(guān)內(nèi)容不難看出:雖然公司基本完成了“十一五”規(guī)劃目標(biāo),生產(chǎn)經(jīng)營能力實(shí)現(xiàn)了跨越式增長,經(jīng)濟(jì)效益得到了顯著提高,但從近年市場的發(fā)展?fàn)顩r來看,本企業(yè)對市場的預(yù)測、對競爭對手的全面掌握、高端產(chǎn)品的比重、產(chǎn)品質(zhì)量的控制、對市場的反應(yīng)靈敏度等方面還有待加強(qiáng)。

在企業(yè)發(fā)展外部環(huán)境的學(xué)習(xí)研究中,我了解了應(yīng)當(dāng)就宏觀經(jīng)濟(jì)環(huán)境、行業(yè)經(jīng)濟(jì)環(huán)境、競爭對手企業(yè)三個(gè)層面的展開分析,并結(jié)合企業(yè)自身存在的實(shí)際問題提出有針對性的解決方案。

企業(yè)總體生產(chǎn)綱領(lǐng)和經(jīng)營目標(biāo)應(yīng)結(jié)合集團(tuán)公司的總體戰(zhàn)略規(guī)劃予以制定,應(yīng)綜合考慮企業(yè)的產(chǎn)能、市場需求、客戶分布等因素,制定的目標(biāo)既要具有挑戰(zhàn)性又要具備現(xiàn)實(shí)性。

市場開發(fā)不僅要?jiǎng)?chuàng)新營銷方法、更要樹立以客戶為本的營銷理念,持續(xù)不斷地培育忠誠客戶;產(chǎn)學(xué)研戰(zhàn)略不僅要加強(qiáng)對技術(shù)研發(fā)的大力投入,更要構(gòu)建和完善教育培訓(xùn)體系、人才激勵(lì)機(jī)制和實(shí)施職工素質(zhì)工程實(shí)現(xiàn)企業(yè)和員工的共同發(fā)展進(jìn)步。

第四、五周(11.21-12.02)關(guān)鍵詞:全面預(yù)算

本階段主要學(xué)習(xí)了裝備公司和北煤機(jī)公司《201*年全面預(yù)算報(bào)告》。通過學(xué)習(xí),對主要指標(biāo)安排的依據(jù)和原則有了總體的把握。如:產(chǎn)品的銷售價(jià)格是根據(jù)產(chǎn)品的成本和市場價(jià)格來預(yù)計(jì);產(chǎn)品的生產(chǎn)成本按照預(yù)計(jì)的原材料、燃料及動力價(jià)格走勢及用量編制等。

此外,還對裝備公司和北煤機(jī)公司主要生產(chǎn)經(jīng)營指標(biāo)的安排、主要產(chǎn)品銷售價(jià)格的預(yù)算、主要產(chǎn)品生產(chǎn)成本的預(yù)算、財(cái)務(wù)預(yù)算、職工薪酬預(yù)算等情況也有了大體的了解,為下一步開展經(jīng)營方面的相關(guān)工作奠定了基礎(chǔ)。

第六、七周(12.05-12.09)關(guān)鍵詞:考核

第六、七兩周主要學(xué)習(xí)了《201*年北煤機(jī)經(jīng)濟(jì)責(zé)任制承包考核辦法》和《201*年10月份北煤機(jī)經(jīng)濟(jì)責(zé)任考核表》。對生產(chǎn)單位和個(gè)人的考核范圍、內(nèi)容、兌現(xiàn)方法、考核信息傳遞體系有了全面的了解,基本掌握了各單項(xiàng)考核和承包責(zé)任人考核的基本方法。

考核的對象分為對產(chǎn)生成本的分廠的考核和對市場營銷部、煤機(jī)技術(shù)研究院、工藝技術(shù)研究院、招待所的考核。這其中有包括對不同考核單位考核指標(biāo)選取、考核工資的提取辦法和對承包責(zé)任者的考核辦法等。

考核兌現(xiàn)明確了承包分廠、承包部室各業(yè)績考核指標(biāo)兌現(xiàn)工資的比例;考核信息的傳遞體系中,明確了各職能部門需要提交的報(bào)表名稱、提交進(jìn)度和責(zé)任人等。

第八、九、十周(12.12-12.27)關(guān)鍵詞:經(jīng)營計(jì)劃、經(jīng)濟(jì)運(yùn)行分析

第七、八兩周我重點(diǎn)學(xué)習(xí)北煤機(jī)公司《編制企業(yè)經(jīng)營計(jì)劃的具體要求》以及《企業(yè)經(jīng)濟(jì)運(yùn)行分析報(bào)告》的寫法。

通過本階段的學(xué)習(xí),我大體了解了北煤機(jī)企業(yè)經(jīng)營計(jì)劃的編制要求、企業(yè)生產(chǎn)經(jīng)營中存在的問題、企業(yè)經(jīng)營計(jì)劃的指標(biāo)安排和企業(yè)經(jīng)營管理工作的主要措施和工作重心。對北煤機(jī)經(jīng)營計(jì)劃的各項(xiàng)數(shù)據(jù)指標(biāo)有了大體的了解。

在就《北煤機(jī)201*年10月經(jīng)濟(jì)運(yùn)行分析報(bào)告》的學(xué)習(xí)中,我初步了解了企業(yè)生產(chǎn)經(jīng)營方面的基本現(xiàn)狀,生產(chǎn)合同的簽訂及鋼材供應(yīng)情況。大體的了解了下一階段企業(yè)工作的重點(diǎn)。第十一、十二、十三周(01.0201.19)關(guān)鍵詞:寫實(shí)習(xí)總結(jié)

本階段,我全面梳理在北煤機(jī)三個(gè)月來研讀、分析的學(xué)習(xí)資料,將所學(xué)內(nèi)容按照周進(jìn)度生成《北煤機(jī)實(shí)習(xí)報(bào)告》。

結(jié)語

為期半年的煤機(jī)廠實(shí)習(xí)生活讓我對煤機(jī)企業(yè)的生產(chǎn)、經(jīng)營狀況有了全面的了解。每一件做工精細(xì)、外觀精美、質(zhì)量精益的煤機(jī)產(chǎn)品都匯集著全體裝備人的勤勞、智慧和汗水。親眼目睹了企業(yè)一線生產(chǎn)、經(jīng)營的繁忙工作現(xiàn)場后,我不禁對以往在校期間好高騖遠(yuǎn),做事浮躁的學(xué)習(xí)、生活習(xí)慣感到自慚形愧;鶎庸ぷ饔肋h(yuǎn)是那么的實(shí)際具體,可就是這些每一件看似實(shí)際具體的工作高效、完美的落實(shí)才成就了產(chǎn)品的完美無瑕、成就了客戶對企業(yè)的忠實(shí)、成就了企業(yè)的輝煌成就和永續(xù)發(fā)展。作為職場新人,我們應(yīng)時(shí)刻保持謙虛謹(jǐn)慎、務(wù)實(shí)求真的工作態(tài)度和生活作風(fēng),為企業(yè)的長久發(fā)展盡個(gè)人最大的努力。

擴(kuò)展閱讀:計(jì)機(jī)081-曾銳-實(shí)習(xí)總結(jié)報(bào)告

仲愷農(nóng)業(yè)工程學(xué)院

實(shí)習(xí)總結(jié)報(bào)告

實(shí)習(xí)環(huán)節(jié)畢業(yè)實(shí)習(xí)

院系計(jì)算機(jī)科學(xué)與工程學(xué)院班級計(jì)算機(jī)科學(xué)與技術(shù)081班學(xué)生姓名曾銳

學(xué)號201*10214124指導(dǎo)教師陳勇

實(shí)習(xí)單位廣州思普計(jì)算機(jī)科技有限公司實(shí)習(xí)時(shí)間201*-2-20201*-3-23

二○一二年三月三十日目錄

一、實(shí)習(xí)目的...........................................................................................................................................................1二、單位介紹...........................................................................................................................................................1

2.1實(shí)習(xí)單位介紹.............................................................................................................................................12.2實(shí)習(xí)時(shí)間.....................................................................................................................................................2三、實(shí)習(xí)內(nèi)容...........................................................................................................................................................2

3.1java環(huán)境的配置..........................................................................................................................................2

3.1.1windowsxp下配置JDK環(huán)境變量.................................................................................................23.1.2Linux下配置JDK環(huán)境變量...........................................................................................................33.2HTML基礎(chǔ).................................................................................................................................................4

3.2.1HTML簡述......................................................................................................................................43.2.2HTML示例......................................................................................................................................53.3CSS基礎(chǔ).....................................................................................................................................................6

3.3.1CSS簡述..........................................................................................................................................63.3.2CSS語法..........................................................................................................................................73.3.2.1CSS定義....................................................................................................................................73.3.2.2選擇符組....................................................................................................................................73.3.2.3類選擇符....................................................................................................................................73.3.2.4ID選擇符..................................................................................................................................83.3.2.5包含選擇符...............................................................................................................................83.3.2.6樣式表的層疊性.......................................................................................................................93.3.2.7注釋:/*...*/.......................................................................................................................93.3.3將樣式表加入到網(wǎng)頁....................................................................................................................103.3.3.1定義內(nèi)部樣式塊對象..............................................................................................................103.3.3.2內(nèi)聯(lián)定義(InlineStyles)...................................................................................................113.3.3.3定義鏈接樣式...........................................................................................................................113.3.4幾種方式的優(yōu)先級.......................................................................................................................123.4JavaScript基礎(chǔ)..........................................................................................................................................13

3.4.1JavaScript基本概念.......................................................................................................................133.4.2運(yùn)算符...........................................................................................................................................133.4.3表達(dá)式...........................................................................................................................................143.4.4語句...............................................................................................................................................143.4.5函數(shù)...............................................................................................................................................143.4.6對象...............................................................................................................................................153.4.7事件...............................................................................................................................................153.4.8變量...............................................................................................................................................163.5JSP(JavaServerPages)..............................................................................................................................16

3.5.1JSP簡述.........................................................................................................................................163.5.2JSP技術(shù)的優(yōu)勢.............................................................................................................................173.5.3JSP九大內(nèi)置對象.........................................................................................................................173.5.3.1request對象..........................................................................................................................173.5.3.2response對象........................................................................................................................173.5.3.3session對象..........................................................................................................................183.5.3.4application對象..................................................................................................................193.5.3.5out對象..................................................................................................................................3.5.3.6page對象................................................................................................................................193.5.3.7config對象............................................................................................................................203.5.3.8exception對象......................................................................................................................213.5.3.9pageContext對象..................................................................................................................213.5.4JSP四種屬性范圍.........................................................................................................................213.5.5JSP兩種跳轉(zhuǎn)方式的區(qū)別.............................................................................................................223.5.6JSP執(zhí)行過程.................................................................................................................................233.6Servlet........................................................................................................................................................24

3.6.1Servlet簡述....................................................................................................................................243.6.2Servlet生命周期............................................................................................................................243.6.3HttpServlet應(yīng)用編程接口.............................................................................................................253.7MVC設(shè)計(jì)模式入門.................................................................................................................................273.8可擴(kuò)展標(biāo)記語言(XML)...........................................................................................................................28

3.8.1XML簡介......................................................................................................................................283.8.2XML簡明語法..............................................................................................................................293.8.3Java中四種操作XML方式的比較..............................................................................................303.8.3.1介紹.........................................................................................................................................303.8.3.2比較.........................................................................................................................................323.8.3.3四種xml操作方式的基本使用方法.......................................................................................323.9Ajax............................................................................................................................................................35

3.9.1Ajax簡介........................................................................................................................................353.9.2Ajax實(shí)現(xiàn)........................................................................................................................................363.9.2.1.創(chuàng)建XMLHttpRequest方法:...............................................................................................363.9.2.2發(fā)送請求.................................................................................................................................373.9.2.3服務(wù)器的響應(yīng).........................................................................................................................373.9.2.4處理從服務(wù)器得到的數(shù)據(jù).....................................................................................................383.9.3Ajax的優(yōu)勢與劣勢........................................................................................................................383.10JSTL.........................................................................................................................................................40

3.10.1JSTL介紹.....................................................................................................................................403.10.2JSTL隱式對象.............................................................................................................................413.10.3常用函數(shù).....................................................................................................................................42

四、實(shí)習(xí)總結(jié).........................................................................................................................................................

一、實(shí)習(xí)目的

Java程序設(shè)計(jì)是一門應(yīng)用性很強(qiáng)的專業(yè)課,在學(xué)習(xí)時(shí)必須注意理論與實(shí)踐相結(jié)合,為此開設(shè)了本次實(shí)習(xí),其目的是通過本次實(shí)習(xí)使學(xué)生能夠較全面的掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)概念和開發(fā)方法,以便能較全面地理解、掌握和綜合運(yùn)用所學(xué)的知識,提高自身的編程能力。

通過這次實(shí)習(xí)進(jìn)一步了解java開發(fā)的相關(guān)知識,掌握java開發(fā)的基本技術(shù),豐富java開發(fā)的實(shí)戰(zhàn)經(jīng)驗(yàn)。學(xué)習(xí)SQL的基礎(chǔ)知識及正確的運(yùn)用方法,和有用的相關(guān)技術(shù),提高自己的工作效率。通過實(shí)習(xí),鞏固大學(xué)所學(xué)專業(yè)的基本知識,提高分析、判斷和處理實(shí)際問題的能力,鍛煉自己的實(shí)際動手能力,增強(qiáng)自己的團(tuán)隊(duì)協(xié)作意識,了解軟件開發(fā)的思考角度和主要流程。為畢業(yè)之后能夠更快地進(jìn)入工作狀態(tài)并且能夠更好的工作,打好一定的基礎(chǔ)。

二、單位介紹

2.1實(shí)習(xí)單位介紹

思普公司成立于201*年,位于華景新城和科韻路兩大軟件園區(qū),主要從事計(jì)算機(jī)軟件研發(fā)、顧問咨詢、人力資源服務(wù),公司主要核心團(tuán)隊(duì)具備十五年以上的信息服務(wù)行業(yè)的從業(yè)經(jīng)驗(yàn),對信息服務(wù)行業(yè)的業(yè)務(wù)、過程管理、開發(fā)、服務(wù)、標(biāo)準(zhǔn)等方面,具備深入的研究。行業(yè)經(jīng)驗(yàn):成長中的思普公司,從成立至今,逐步在許多重要的領(lǐng)域,充當(dāng)起重要的角色,先后參與了廣電、電信、金融、電力、交通等五大行業(yè)的項(xiàng)目,積累了豐富的行業(yè)經(jīng)驗(yàn)和技術(shù)經(jīng)驗(yàn)。公司宗旨:完善的流程制度、不斷進(jìn)取的決心,追求創(chuàng)新以適應(yīng)變化的市場,使公司能為客戶帶來優(yōu)質(zhì)的服務(wù),為社會創(chuàng)造更多的價(jià)值。廣州谷度計(jì)算機(jī)科技有限公司是專門從事以軟件業(yè)務(wù)、教育培訓(xùn)為核心,集軟件開發(fā)、系統(tǒng)集成、軟件離岸外包、信用服務(wù)等業(yè)務(wù)為一體的綜合性軟件服務(wù)企業(yè)。目前全面開展以面向外企、電信、金融等行業(yè)為主的中高級IT定制化職業(yè)培訓(xùn)及人才外包業(yè)務(wù)。主要向廣州、深圳等各大軟件企業(yè)及珠江三角洲地區(qū)的大型外資企業(yè)推薦中高端軟件開發(fā)工程師。已先后為IBM、Oracle、惠普(HP)、花旗軟件(CSTS)、上海貝爾、阿爾卡特、亞信科技等軟件公司輸送了近千名開發(fā)人員。

公司核心成員由海外留學(xué)人員和來自甲骨文(Oracle)、亞信科技(AsiaInfo)、Sun等國際大公司資深技術(shù)人員組成。公司網(wǎng)址:-sipu.com。

2.2實(shí)習(xí)時(shí)間

本次實(shí)習(xí)時(shí)間段為:201*年02月20日至201*年03月23日。

三、實(shí)習(xí)內(nèi)容

3.1java環(huán)境的配置

通常,我們需要設(shè)置三個(gè)環(huán)境變量:JAVA_HOME、PATH和CLASSPATH。

JAVA_HOME:該環(huán)境變量的值就是Java所在的目錄,一些Java版的軟件和一些Java的工具需要用到該變量,設(shè)置PATH和CLASSPATH的時(shí)候,也可以使用該變量以方便設(shè)置。

PATH:指定一個(gè)路徑列表,用于搜索可執(zhí)行文件的。執(zhí)行一個(gè)可執(zhí)行文件時(shí),如果該文件不能在當(dāng)前路徑下找到,則依次尋找PATH中的每一個(gè)路徑,直至找到。或者找完P(guān)ATH中的路徑也不能找到,則報(bào)錯(cuò)。Java的編譯命令(javac),執(zhí)行命令(java)和一些工具命令(javadoc,jdb等)都在其安裝路徑下的bin目錄中。因此我們應(yīng)該將該路徑添加到PATH變量中。

CLASSPATH:也指定一個(gè)路徑列表,是用于搜索Java編譯或者運(yùn)行時(shí)需要用到的類。在CLASSPATH列表中除了可以包含路徑外,還可以包含.jar文件。Java查找類時(shí)會把這個(gè).jar文件當(dāng)作一個(gè)目錄來進(jìn)行查找。通常,我們需要把JDK安裝路徑下的jre/lib/rt.jar(Linux:jre/lib/rt.jar)包含在CLASSPATH中。

PATH和CLASSPATH都指定路徑列表,列表中的各項(xiàng)(即各個(gè)路徑)之間使用分隔符分隔。在Windows下,分隔符是分號(;),而在Linux下,分隔符是冒號(:)。

3.1.1windowsxp下配置JDK環(huán)境變量

1.安裝JDK,安裝過程中可以自定義安裝目錄等信息,例如我們選擇安裝目錄為

D:/java/jdk1.5.0_08;

2.安裝完成后,右擊“我的電腦”,點(diǎn)擊“屬性”;3.選擇“高級”選項(xiàng)卡,點(diǎn)擊“環(huán)境變量”;

4.在“系統(tǒng)變量”中,設(shè)置3項(xiàng)屬性,JAVA_HOME,PATH,CLASSPATH(大小寫無所謂),若已存在則點(diǎn)擊“編輯”,不存在則點(diǎn)擊“新建”;

5.JAVA_HOME指明JDK安裝路徑,就是剛才安裝時(shí)所選擇的路徑D:/java/jdk1.5.0_08,此路徑下包括lib,bin,jre等文件夾(此變量最好設(shè)置,因?yàn)橐院筮\(yùn)行tomcat,eclipse等都需要設(shè)置此變量);

Path使得系統(tǒng)可以在任何路徑下識別java命令,設(shè)為:%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin

CLASSPATH為java加載類(classorlib)路徑,只有類在classpath中,java命令才能識別,設(shè)為:

.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar(要加.表示當(dāng)前路徑)6.“開始”->;“運(yùn)行”,鍵入“cmd”;

7.鍵入命令“java-version”,“java”,“javac”幾個(gè)命令,出現(xiàn)畫面,說明環(huán)境變量配置成功;8.好了,打完收工。下面開始你的第一個(gè)java程序吧。

3.1.2Linux下配置JDK環(huán)境變量

假設(shè)JDK在Linux下的安裝路徑是/usr/local/jdk/。那么,安裝后的JDK至少會包括如下內(nèi)容:

Linux下使用“變量名=變量值”設(shè)置變量,并使用export命令將其導(dǎo)出為環(huán)境變量。為了使每一次登錄都自動設(shè)置好這些變量,你需要在~/.bash_profile里或者~./bashrc里進(jìn)行設(shè)置,如

exportJAVA_HOME=/usr/local/jdkexportPATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=$JAVA_HOME/jre/lib/rt.jar:.

設(shè)置PATH時(shí)用的$JAVA_HOME是指替換變量JAVA_HOME的值到$JAVA_HOME所在位置。如上句實(shí)際就是exportPATH=/usr/local/jdk/bin:$PATH。這句中$PATH也是同樣的作用,不過這里的PATH是指以前設(shè)置的PATH變量的值,而非本次設(shè)置PATH變量的值。

注意,在CLASSPATH中包含了一個(gè)“當(dāng)前目錄(.)”。包含了該目錄后,就可以到任意目錄下去執(zhí)行需要用到該目錄下某個(gè)類的Java程序,即使該路徑并未包含在CLASSPATH中也可以。原因很簡單:雖然沒有明確的把該路徑包含在CLASSPATH中,但CLASSPATH中的“.”在此時(shí)就代表了該路徑,例如

假設(shè)在/home/fancy/java目錄下有可運(yùn)行的類HelloJava.class,那么

[fancy@matrixfancy]$exportCLASSPATH=/usr/local/jdk/jre/lib/rt.jar:.//設(shè)置CLASSPATH,注意最后的“.”

[fancy@matrixfancy]$cd~/java//轉(zhuǎn)到/home/fancy/java[fancy@matrixjava]$pwd//顯示當(dāng)前目錄/home/fancy/java//當(dāng)前目錄是/home/fancy/java[fancy@matrixjava]$javaHelloJava//運(yùn)行HelloJavaHello,Java//運(yùn)行結(jié)果[fancy@matrixjava]$_

3.2HTML基礎(chǔ)

3.2.1HTML簡述

文本標(biāo)記語言,即HTML(HypertextMarkupLanguage),是用于描述網(wǎng)頁文檔的一種標(biāo)記語言。

在WWW上的一個(gè)超媒體文檔稱之為一個(gè)頁面(page)。作為一個(gè)組織或個(gè)人在萬維網(wǎng)上開始點(diǎn)的頁面稱為主頁Homepage,或首頁,主頁中通常包括有指向其他相關(guān)頁面或其他節(jié)點(diǎn)的指針(超級鏈接)。在邏輯上將視為一個(gè)整體的一系列頁面的有機(jī)集合稱為網(wǎng)站(Website或Site)。

HTML是一種規(guī)范,一種標(biāo)準(zhǔn),它通過標(biāo)記符號來標(biāo)記要顯示的網(wǎng)頁中的各個(gè)部分。網(wǎng)頁文件本身是一種文本文件,通過在文本文件中添加標(biāo)記符,可以告訴瀏覽器如何顯示其中的內(nèi)容(如:文字如何處理,畫面如何安排,圖片如何顯示等)。瀏覽器按順序閱讀網(wǎng)頁文件,然后根據(jù)標(biāo)記符解釋和顯示其標(biāo)記的內(nèi)容,對書寫出錯(cuò)的標(biāo)記將不指出其錯(cuò)誤,且不停止其解釋執(zhí)行過程,編制者只能通過顯示效果來分析出錯(cuò)原因和出錯(cuò)部位。但需要注意的是,對于不同的瀏覽器,對同一標(biāo)記符可能會有不完全相同的解釋,因而可能會有不同的顯示效果。

HTML之所以稱為超文本標(biāo)記語言,是因?yàn)槲谋局邪怂^“超級鏈接”點(diǎn)。所謂超級鏈接,就是一種URL指針,通過激活(點(diǎn)擊)它,可使瀏覽器方便地獲取新的網(wǎng)頁。這也是HTML獲得廣泛應(yīng)用的最重要的原因之一。

一個(gè)網(wǎng)頁對應(yīng)于一個(gè)HTML文件,HTML文件以.htm或.html為擴(kuò)展名?梢允褂萌魏文軌蛏蒚XT類型源文件的文本編輯來產(chǎn)生HTML文件。

標(biāo)準(zhǔn)的HTML文件都具有一個(gè)基本的整體結(jié)構(gòu),即HTML文件的開頭與結(jié)尾標(biāo)志和HTML的頭部與實(shí)體2大部分。有3個(gè)雙標(biāo)記符用于頁面整體結(jié)構(gòu)的確認(rèn)。

3.2.2HTML示例

打開你的Notepad,新建一個(gè)文件,然后拷貝以下代碼到這個(gè)新文件,然后將這個(gè)文件存成first.html。

Titleofpage

Thisismyfirsthomepage.Thistextisbold示例解釋:

這個(gè)文件的第一個(gè)Tag是,這個(gè)Tag告訴你的瀏覽器這是HTML文件的頭。文件的最后一個(gè)Tag是,表示HTML文件到此結(jié)束。

在和之間的內(nèi)容,是Head信息。Head信息是不顯示出來的,你在瀏覽器里看不到。但是這并不表示這些信息沒有用處。比如你可以在Head信息里加上一些關(guān)鍵詞,有助于搜索引擎能夠搜索到你的網(wǎng)頁。

在和之間的內(nèi)容,是這個(gè)文件的標(biāo)題。你可以在瀏覽器最頂端的標(biāo)題欄看到這個(gè)標(biāo)題。

在和之間的信息,是正文。

在和之間的文字,用粗體表示。顧名思義,就是bold的意思。

HTML文件看上去和一般文本類似,但是它比一般文本多了Tag,比如,等,通過這些Tag,可以告訴瀏覽器如何顯示這個(gè)文件。

其它的HTML標(biāo)簽可以通過獲取標(biāo)簽的使用教程,這里不再敘述。

3.3CSS基礎(chǔ)

3.3.1CSS簡述

CSS(CascadingStyleSheet)可譯為“層疊樣式表”或“級聯(lián)樣式表”,它定義如何顯示HTML元素,用于控制Web頁面的外觀。通過使用CSS實(shí)現(xiàn)頁面的內(nèi)容與表現(xiàn)形式分離,極大提高了工作效率。樣式存儲在樣式表中,通常放在部分或存儲在外部CSS文件中。作為網(wǎng)頁標(biāo)準(zhǔn)化設(shè)計(jì)的趨勢,CSS取得了瀏覽器廠商的廣泛支持,正越來越多的被應(yīng)用到網(wǎng)頁設(shè)計(jì)中去。

層疊式表的特點(diǎn):1、便于頁面的修改。2、便于頁面風(fēng)格的統(tǒng)一。3、減少網(wǎng)頁的體積。

為什么叫層疊?

在頁面顯示的過程中,有很多的樣式作用在頁面元素上,這些樣式來自不同的地方。瀏覽器自己有默認(rèn)的樣式,網(wǎng)頁作者有自己寫的樣式,用戶也可能有自己的樣式,但是最終顯示的樣式是其中之一,它們之間產(chǎn)生了沖突,CSS通過一個(gè)稱為層疊(cascade)的過程處理這種沖突。層疊給每個(gè)規(guī)則分配一個(gè)重要度:作者的樣式表被認(rèn)為是最重要的,其次是用戶的樣式表,最后是瀏覽器或用戶代理使用的默認(rèn)樣式表。為了讓用戶有更多的控制能力,可以通過將任何規(guī)則指定為!important來提高它的重要度,讓它優(yōu)先于任何規(guī)則,甚至優(yōu)先于作者加上!important標(biāo)志的規(guī)則。因此,層疊采用以下重要度次序:標(biāo)為!important的用戶樣式>標(biāo)為!important的作者樣式>作者樣式>用戶樣式>瀏覽器/用戶代理應(yīng)用的樣式。然后,根據(jù)選擇器的特殊性決定規(guī)則的次序。具有更特殊選擇器的規(guī)則優(yōu)先于具有比較一般的選擇器的規(guī)則。如果兩個(gè)規(guī)則的特殊性相同,那么后定義的規(guī)則優(yōu)先。

由此可見,層疊是指不同的優(yōu)先級的構(gòu)成的層的疊加。

3.3.2CSS語法

3.3.2.1CSS定義

CSS的定義是由三個(gè)部分構(gòu)成:選擇符(selector),屬性(properties)和屬性的取值(value)。語法:selector{property:value}(選擇符{屬性:值})

例子:body{color:black},此例的效果是使頁面中的文字為黑色。

如果屬性的值是多個(gè)單詞組成,必須在值上加引號,比如字體的名稱經(jīng)常是幾個(gè)單詞的組合:

例子:p{font-family:"sansserif"}(定義段落字體為sansserif)

如果需要對一個(gè)選擇符指定多個(gè)屬性時(shí),我們使用分號將所有的屬性和值分開:例子:p{text-align:center;color:red}(段落居中排列;并且段落中的文字為紅色)

3.3.2.2選擇符組

可以把相同屬性和值的選擇符組合起來書寫,用逗號將選擇符分開,這樣可以減少樣式重復(fù)定義:

h1,h2,h3,h4,h5,h6{color:green}(這個(gè)組里包括所有的標(biāo)題元素,每個(gè)標(biāo)題元素的文字都為綠色)

p,table{font-size:9pt}(段落和表格里的文字尺寸為9號字)效果完全等效于:p{font-size:9pt}table{font-size:9pt}

3.3.2.3類選擇符

用類選擇符你能夠把相同的元素分類定義不同的樣式,定義類選擇符時(shí),在自定類的名稱前面加一個(gè)點(diǎn)號。假如你想要兩個(gè)不同的段落,一個(gè)段落向右對齊,一個(gè)段落居中,你可以先定義兩個(gè)類:

p.right{text-align:right}p.center{text-align:center}

然后用不在不同的段落里,只要在HTML標(biāo)記里加入你定義的class參數(shù):這個(gè)段落向右對齊的這個(gè)段落是居中排列的

3.3.2.4ID選擇符

在HTML頁面中ID參數(shù)指定了某個(gè)單一元素,ID選擇符是用來對這個(gè)單一元素定義單獨(dú)的樣式。

ID選擇符的應(yīng)用和類選擇符類似,只要把CLASS換成ID即可。將上例中類用ID替代,ID只能在一個(gè)頁面中出現(xiàn)一次,而class可以多次運(yùn)用.

定義ID選擇符要在ID名稱前加上一個(gè)“#”號。和類選擇符相同,定義ID選擇符的屬性也有兩種方法。下面這個(gè)例子,ID屬性將匹配所有id="intro"的元素:

#intro{

font-size:110%;font-weight:bold;color:#0000ff;

background-color:transparent

}(字體尺寸為默認(rèn)尺寸的110%;粗體;藍(lán)色;背景顏色透明)下面這個(gè)例子,ID屬性只匹配id="intro"的段落元素:p#intro{}

注意:ID選擇符局限性很大,只能單獨(dú)定義某個(gè)元素的樣式,一般只在特殊情況下使用。

3.3.2.5包含選擇符

可以單獨(dú)對某種元素包含關(guān)系定義的樣式表,元素1里包含元素2,這種方式只對在元素1里的元素2定義,對單獨(dú)的元素1或元素2無定義,例如:

tablea{font-size:12px}

在表格內(nèi)的鏈接改變了樣式,文字大小為12像素,而表格外的鏈接的文字仍為默認(rèn)大小。

8

font-size:110%;font-weight:bold;color:#0000ff;

background-color:transparent

3.3.2.6樣式表的層疊性

層疊性就是繼承性,樣式表的繼承規(guī)則是外部的元素樣式會保留下來繼承給這個(gè)元素所

包含的其他元素。事實(shí)上,所有在元素中嵌套的元素都會繼承外層元素指定的屬性值,有時(shí)會把很多層嵌套的樣式疊加在一起,除非另外更改。例如在DIV標(biāo)記中嵌套P標(biāo)記:div{color:red;font-size:9pt}……

這個(gè)段落的文字為紅色9號字

(P元素里的內(nèi)容會繼承DIV定義的屬性)

注意:有些情況下內(nèi)部選擇符不繼承周圍選擇符的值,但理論上這些都是特殊的。例如,上邊界屬性值是不會繼承的,直覺上,一個(gè)段落不會同文檔BODY一樣的上邊界值。另外,當(dāng)樣式表繼承遇到?jīng)_突時(shí),總是以最后定義的樣式為準(zhǔn)。如果上例中定義了P的顏色:

div{color:red;font-size:9pt}p{color:blue}……

這個(gè)段落的文字為藍(lán)色9號字

可以看到段落里的文字大小為9號字是繼承div屬性的,而color屬性則依照最后定義的。不同的選擇符定義相同的元素時(shí),要考慮到不同的選擇符之間的優(yōu)先級。ID選擇符,類選擇符和HTML標(biāo)記選擇符,因?yàn)镮D選擇符是最后加上元素上的,所以優(yōu)先級最高,其次是類選擇符。如果想超越這三者之間的關(guān)系,可以用!important提升樣式表的優(yōu)先權(quán),例如:p{color:#FF0000!important}.blue{color:#0000FF}#id1{color:#FFFF00}

同時(shí)對頁面中的一個(gè)段落加上這三種樣式,它最后會依照被!important申明的HTML標(biāo)記選擇符樣式為紅色文字。如果去掉!important,則依照優(yōu)先權(quán)最高的ID選擇符為黃色文字。

3.3.2.7注釋:/*...*/

可以在CSS中插入注釋來說明你代碼的意思,注釋有利于你或別人以后編輯和更改代碼時(shí)理解代碼的含義。在瀏覽器中,注釋是不顯示的。CSS注釋以"/*"開頭,以"*/"結(jié)尾,如下:

/*定義段落樣式表*/

p{

text-align:center;/*文本居中排列*/

color:black;/*文字為黑色*/

font-family:arial/*字體為arial*/

}

3.3.3將樣式表加入到網(wǎng)頁

可以用以下幾種方式將樣式表加入網(wǎng)頁。而最接近目標(biāo)的樣式定義優(yōu)先權(quán)越高。高優(yōu)先權(quán)樣式將繼承低優(yōu)先權(quán)樣式的未重疊定義而覆蓋重疊的定義。例外請參閱!important聲明。

3.3.3.1定義內(nèi)部樣式塊對象

可以在HTML文檔的和標(biāo)記之間插入一個(gè)...塊對象。示例如下:

文檔標(biāo)題正文內(nèi)容

這里將style對象的type屬性設(shè)置為"text/css",是允許不支持這類型的瀏覽器忽略樣式表

單。

3.3.3.2內(nèi)聯(lián)定義(InlineStyles)

內(nèi)聯(lián)定義即是在對象的標(biāo)記內(nèi)使用對象的style屬性定義適用其的樣式表屬性。示例:

Thisisaparagraph

3.3.3.3定義鏈接樣式

CSS為一些特殊效果準(zhǔn)備了特定的工具,我們稱之為“偽類”。其中有幾項(xiàng)是我們經(jīng)常用到的,下面我們就詳細(xì)介紹一下經(jīng)常用于定義鏈接樣式的四個(gè)偽類,它們分別是:

:link

:visited:hover:active

定義鏈接樣式,其中必不可少的就是超級鏈接中的錨標(biāo)簽--a,錨標(biāo)簽和偽類鏈接起來書寫的方法就是定義鏈接樣式的基礎(chǔ)方法,它們的寫法如下:

a:link,定義正常鏈接的樣式;

a:visited,定義已訪問過鏈接的樣式;a:hover,定義鼠標(biāo)懸浮在鏈接上時(shí)的樣式;a:active,定義鼠標(biāo)點(diǎn)擊鏈接時(shí)的樣式。

示例:

a:link{

color:#FF0000;

text-decoration:underline;}

a:visited{color:#00FF00;text-decoration:none;}

a:hover{color:#000000;text-decoration:none;}

a:active{color:#FFFFFF;text-decoration:none;}

3.3.3.4導(dǎo)入樣式(ImportStyles)

此方法與鏈入外部樣式的功能基本相同,只是語法和實(shí)現(xiàn)方式上有差別。

文檔標(biāo)題@importurl(css.css);

@importurl("csss.css");//單引號也可以@importcss,css;

@import"css.css";//單引號也可以

3.3.4幾種方式的優(yōu)先級

內(nèi)聯(lián)樣式優(yōu)先級最高,其次是鏈接樣式,再次是內(nèi)嵌式,最后是導(dǎo)入樣式。

3.4JavaScript基礎(chǔ)

3.4.1JavaScript基本概念

JavaScript是一種由Netscape的LiveScript發(fā)展而來的原型化繼承的面向?qū)ο蟮膭討B(tài)類型的區(qū)分大小寫的客戶端腳本語言,主要目的是為了解決服務(wù)器端語言,比如Perl,遺留的速度問題,為客戶提供更流暢的瀏覽效果。當(dāng)時(shí)服務(wù)端需要對數(shù)據(jù)進(jìn)行驗(yàn)證,由于網(wǎng)絡(luò)速度相當(dāng)緩慢,只有28.8kbps,驗(yàn)證步驟浪費(fèi)的時(shí)間太多。于是Netscape的瀏覽器Navigator加入了JavaScript,提供了數(shù)據(jù)驗(yàn)證的基本功能。

JavaScript是一種基于對象和事件驅(qū)動并具有相對安全性的客戶端腳本語言。同時(shí)也是一種廣泛用于客戶端Web開發(fā)的腳本語言,常用來給HTML網(wǎng)頁添加動態(tài)功能,比如響應(yīng)用戶的各種操作。它最初由網(wǎng)景公司的BrendanEich設(shè)計(jì),是一種動態(tài)、弱類型、基于原型的語言,內(nèi)置支持類。JavaScript是Sun公司的注冊商標(biāo)。[1]Ecma國際以JavaScript為基礎(chǔ)制定了ECMAScript標(biāo)準(zhǔn)。JavaScript也可以用于其他場合,如服務(wù)器端編程。完整的JavaScript實(shí)現(xiàn)包含三個(gè)部分:ECMAScript,文檔對象模型,字節(jié)順序記號。

3.4.2運(yùn)算符

運(yùn)算符就是完成操作的一系列符號,它有七類:

賦值運(yùn)算符(=,+=,-=,*=,/=,%=,=,|=,&=)、算術(shù)運(yùn)算符(+,-,*,/,++,--,%)、比較運(yùn)算符(>,

5)2個(gè)null,或者2個(gè)都是未定義的,那么他們相等。

而“===”是全同運(yùn)算符,全同運(yùn)算符遵循等同運(yùn)算符的比較規(guī)則,但是它不對運(yùn)算數(shù)進(jìn)行類型轉(zhuǎn)換,當(dāng)兩個(gè)運(yùn)算數(shù)的類型不同時(shí),返回false;只有當(dāng)兩個(gè)運(yùn)算數(shù)的類型相同的時(shí)候,才遵循等同運(yùn)算符的比較規(guī)則進(jìn)行比較。

例如:null==undefined會返回真,但是null===undefined就會返回假!

3.4.3表達(dá)式

運(yùn)算符和操作數(shù)的組合稱為表達(dá)式,通常分為四類:賦值表達(dá)式、算術(shù)表達(dá)式、布爾表達(dá)式和字符串表達(dá)式。

3.4.4語句

JavaScript程序是由若干語句組成的,語句是編寫程序的指令。JavaScript提供了完整的基本編程語句,它們是:

賦值語句、switch選擇語句、while循環(huán)語句、for循環(huán)語句、foreach循環(huán)語句、dowhile循環(huán)語句、break循環(huán)中止語句、continue循環(huán)中斷語句、with語句、try...catch語句、

if語句(if..else,if...elseif...)、let語句。

3.4.5函數(shù)

函數(shù)是命名的語句段,這個(gè)語句段可以被當(dāng)作一個(gè)整體來引用和執(zhí)行。使用函數(shù)要注意

以下幾點(diǎn):

1)函數(shù)由關(guān)鍵字function定義(也可由Function構(gòu)造函數(shù)構(gòu)造);

2)使用function關(guān)鍵字定義的函數(shù)在一個(gè)作用域內(nèi)是可以在任意處調(diào)用的(包括定義函數(shù)的語句前);而用var關(guān)鍵字定義的必須定義后才能被調(diào)用;

3)函數(shù)名是調(diào)用函數(shù)時(shí)引用的名稱,它對大小寫是敏感的,調(diào)用函數(shù)時(shí)不可寫錯(cuò)函數(shù)名;4)參數(shù)表示傳遞給函數(shù)使用或操作的值,它可以是常量,也可以是變量,也可以是函數(shù),在函數(shù)內(nèi)部可以通過arguments對象(arguments對象是一個(gè)偽數(shù)組,屬性callee引用被調(diào)用的函數(shù))訪問所有參數(shù);

5)return語句用于返回表達(dá)式的值。

6)yield語句扔出一個(gè)表達(dá)式,并且中斷函數(shù)執(zhí)行直到下一次調(diào)用next。

一般的函數(shù)都是以下格式:functionmyFunction(params){//執(zhí)行的語句}

函數(shù)表達(dá)式:

varmyFunction=function(params){//執(zhí)行的語句}

varmyFunction=function(){//執(zhí)行的語句}

myFunction();//調(diào)用函數(shù)

匿名函數(shù),它常作為參數(shù)在其他函數(shù)間傳遞:window.addEventListener("load",function(){//執(zhí)行的語句},false);

3.4.6對象

JavaScript的一個(gè)重要功能就是面向?qū)ο蟮墓δ埽ㄟ^基于對象的程序設(shè)計(jì),可以用更直

觀、模塊化和可重復(fù)使用的方式進(jìn)行程序開發(fā)。

一組包含數(shù)據(jù)的屬性和對屬性中包含數(shù)據(jù)進(jìn)行操作的方法,稱為對象。比如要設(shè)定網(wǎng)頁的背景顏色,所針對的對象就是document,所用的屬性名是bgcolor,如document.bgcolor="blue",就是表示使背景的顏色為藍(lán)色。

3.4.7事件

用戶與網(wǎng)頁交互時(shí)產(chǎn)生的操作,稱為事件。事件可以由用戶引發(fā),也可能是頁面發(fā)生改

變,甚至還有你看不見的事件(如Ajax的交互進(jìn)度改變)。絕大部分事件都由用戶的動作所引發(fā),如:用戶按鼠標(biāo)的按鍵,就產(chǎn)生click事件,若鼠標(biāo)的指針在鏈接上移動,就產(chǎn)生mouseover事件等等。在JavaScript中,事件往往與事件處理程序配套使用。

而對事件的處理,W3C的方法是用addEventListener()函數(shù),它有三個(gè)參數(shù):事件,引發(fā)

的函數(shù),是否使用事件捕捉。為了安全性,建議將第三個(gè)參數(shù)始終設(shè)置為false;

傳統(tǒng)的方法就是定義元素的on...事件,它就是W3C的方法中的事件參數(shù)前加一個(gè)“on”。而IE的事件模型使用attachEvent和dettachEvent對事件進(jìn)行綁定和刪除。JavaScript中事件還分捕獲和冒泡兩個(gè)階段,但是傳統(tǒng)綁定只支持冒泡事件。

3.4.8變量

如varmyVariable="somevalue";

變量有它的類型,上例中myVariable的類型為string(字符串)javascript支持的常用類型還有:object:對象array:數(shù)組number:數(shù);

boolean:布爾值,只有true和false兩個(gè)值,是所有類型中占用內(nèi)存最少的;null:一個(gè)空值,唯一的值是null;undefined:沒有定義和賦值的變量

實(shí)際上JavaScript的變量是弱變量類型,你賦值給他的是字符串,他就是String.

是數(shù)字他就是整型。是true和false他就是boolean型(注意,不能加引號,不然會被當(dāng)成字符串處理)。

3.5JSP(JavaServerPages)

3.5.1JSP簡述

JSP技術(shù)使用JAVA編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。

Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時(shí),首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實(shí)現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。

JSP與JavaServlet一樣,是在服務(wù)器端執(zhí)行的,通常返回給客戶端的就是一個(gè)

HTML文本,因此客戶端只要有瀏覽器就能瀏覽。

3.5.2JSP技術(shù)的優(yōu)勢

(1)一次編寫,到處運(yùn)行。除了系統(tǒng)之外,代碼不用做任何更改。

(2)系統(tǒng)的多平臺支持;旧峡梢栽谒衅脚_上的任意環(huán)境中開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。相比ASP/.net的局限性是顯而易見的。

(3)強(qiáng)大的可伸縮性。從只有一個(gè)小的Jar文件就可以運(yùn)行Servlet/JSP,到由多臺服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺Application進(jìn)行事務(wù)處理,消息處理,一臺服務(wù)器到無數(shù)臺服務(wù)器,Java顯示了一個(gè)巨大的生命力。

(4)多樣化和功能強(qiáng)大的開發(fā)工具支持。這一點(diǎn)與ASP很像,Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費(fèi)得到,并且其中許多已經(jīng)可以順利的運(yùn)行于多種平臺之下。

(5)支持服務(wù)器端組件。web應(yīng)用需要強(qiáng)大的服務(wù)器端組件來支持,開發(fā)人員需要利用其他工具設(shè)計(jì)實(shí)現(xiàn)復(fù)雜功能的組件供web頁面調(diào)用,以增強(qiáng)系統(tǒng)性能。JSP可以使用成熟的JAVABEANS組件來實(shí)現(xiàn)復(fù)雜商務(wù)功能。

3.5.3JSP九大內(nèi)置對象

3.5.3.1request對象

該對象封裝了用戶提交的信息,通過調(diào)用該對象相應(yīng)的方法可以獲取封裝的信息,即使用該對象可以獲取用戶提交信息。它是HttpServletRequest的實(shí)例。

下面介紹request的常用方法:

1,getParameter();使用Stringstr=request.getParameter();2,setAttribute();和getAttribute();removeAttribute();3.getMethod();getProtocol();

4.getReqeustURI();getRemoteAddr();getServerPort();和getServerName();

3.5.3.2response對象

對客戶的請求做出動態(tài)的響應(yīng),向客戶端發(fā)送數(shù)據(jù)?蛻舳藶g覽器每訪問一次Web

服務(wù)器的頁面都會提交一次請求,與request對象對應(yīng)的是response對象,response對象可以用來對客戶的請求作出響應(yīng),向客戶端發(fā)送數(shù)據(jù)。輸出的數(shù)據(jù)可以是各種數(shù)據(jù)類

型,甚至是文件,這可以通過page指令的contentType屬性或是response的setContentType()方法來設(shè)置。

response對象常用的方法:

3.5.3.3session對象

session對象是一個(gè)JSP內(nèi)置對象,它在第一個(gè)JSP頁面被裝載時(shí)自動創(chuàng)建,完成會話期管理。

從一個(gè)客戶打開瀏覽器并連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離開這個(gè)服務(wù)器結(jié)束,被稱為一個(gè)會話。當(dāng)一個(gè)客戶訪問一個(gè)服務(wù)器時(shí),可能會在這個(gè)服務(wù)器的幾個(gè)頁面之間反復(fù)連接,反復(fù)刷新一個(gè)頁面,服務(wù)器應(yīng)當(dāng)通過某種辦法知道這是同一個(gè)客戶,這就需要session對象。

2.session對象的ID:當(dāng)一個(gè)客戶首次訪問服務(wù)器上的一個(gè)JSP頁面時(shí),JSP引擎產(chǎn)生一個(gè)session對象,同時(shí)分配一個(gè)String類型的ID號,JSP引擎同時(shí)將這個(gè)ID號發(fā)送到客戶端,存放在Cookie中,這樣session對象和客戶之間就建立了一一對應(yīng)的關(guān)系。當(dāng)客戶再訪問連接該服務(wù)器的其他頁面時(shí),不再分配給客戶新的session對象,直到客戶關(guān)閉瀏覽器后,服務(wù)器端該客戶的session對象才取消,并且和客戶的會話對應(yīng)關(guān)系消失。當(dāng)客戶重新打開瀏覽器再連接到該服務(wù)器時(shí),服務(wù)器為該客戶再創(chuàng)建一個(gè)新的session對象。

3.session對象存在一定時(shí)間過期問題,所以存在session中的名值對會在一定時(shí)間后失去,可以通過更改session有效時(shí)間來避免這種情況。同時(shí)編程時(shí)盡量避免將大量有效信息存儲在session中,request是一個(gè)不錯(cuò)的替代對象。

3.5.3.4application對象

服務(wù)器啟動后就產(chǎn)生了這個(gè)application對象,當(dāng)客戶在所訪問的網(wǎng)站的各個(gè)頁面之間瀏覽時(shí),這個(gè)application對象都是同一個(gè),直到服務(wù)器關(guān)閉。但是與session不同的是,所有客戶的application對象都是同一個(gè),即所有客戶共享這個(gè)內(nèi)置的application對象。

application對象常用方法:

(1)publicvoidsetAttribute(Stringkey,Objectobj):將參數(shù)Object指定的對象obj添加到application對象中,并為添加的對象指定一個(gè)索引關(guān)鍵字。

(2)publicObjectgetAttribute(Stringkey):獲取application對象中含有關(guān)鍵字的對象。

3.5.3.5out對象

out對象用于輸出數(shù)據(jù),它可以是javax.servlet.jsp.JspWriter的一個(gè)實(shí)例.out對象的范圍是page。

從java.io.Writer拓展而來的公共抽象類JspWriter效仿了java.io.BufferedWriter和java.io.PrintWriter中的某些功能.但是,不同之處在于它會在打印方法中拋出(throw)java.io.IOException異常,而PrintWriter不這樣做。

JSP中的out對象就是這種類型的.如果page指令選擇了autoflush="true",那么當(dāng)出現(xiàn)由于當(dāng)前的操作不清空緩存而造成緩沖區(qū)溢出的情況時(shí),這個(gè)類的所有I/O操作會自動清空緩沖區(qū)的內(nèi)容.如果autoflush="false",那么當(dāng)操作造成了緩沖區(qū)溢出時(shí),這個(gè)類的所有的I/O操作將拋出一個(gè)IOException。

3.5.3.6page對象

page指令是針對當(dāng)前頁面的指令,常用的page指令有8個(gè):

1.設(shè)置jsp中用到的語言,用到的是java,也是目前唯一有效的設(shè)定。

2.設(shè)置目前jsp要繼承的父類,一般不需要設(shè)置,在默認(rèn)情況下,jsp頁面默認(rèn)的父類是HttpJspBase。

3.jsp頁面所用到的類。

4.設(shè)置該jsp頁面出現(xiàn)異常時(shí)所要轉(zhuǎn)到的頁面,如果沒設(shè)定,容器將使用當(dāng)前的頁面顯示錯(cuò)誤信息。

5.設(shè)置該jsp頁面是否作為錯(cuò)誤顯示頁面,默認(rèn)是false,如果設(shè)置為true,容器則會在當(dāng)前頁面生成一個(gè)exception對象。

6.設(shè)置頁面文件格式和編碼方式。

7.設(shè)置容器以多線程還是單線程運(yùn)行該jsp頁面,默認(rèn)是true,是多線程。設(shè)置為false,則以單線程的方式運(yùn)行該jsp頁面。

8.設(shè)置該jsp頁面是否可以用到session對象(jsp內(nèi)置對象,為web容器創(chuàng)建),默認(rèn)是true,能用到session.設(shè)置為false,則用不到。

3.5.3.7config對象

config對象是在一個(gè)servlet程序初始化時(shí),JSP引擎向它傳遞消息用的,此消息包括servlet程序初始化時(shí)所需要的參數(shù)及服務(wù)器的有關(guān)信息。Config對象其實(shí)是實(shí)現(xiàn)javax.servlet.ServletConfig接口的類的實(shí)例對象,它可以使用下面的3個(gè)方法。

1)getServletContext()

調(diào)用這個(gè)方法可以返回一個(gè)含有服務(wù)器相關(guān)信息的ServletContext對象,即JSP內(nèi)置對象application對象。

2)getInitParameter(Stringname)

調(diào)用這個(gè)方法可以返回servlet程序初始參數(shù)的值,參數(shù)名由name指定。3)getInitParameterNames()

調(diào)用這個(gè)方法可以返回一個(gè)枚舉對象,該對象由servlet程序初始化所需要的所有參數(shù)的名稱構(gòu)成。

通過如下所示的方式獲取JSP/Servlet程序初始化所需要的參數(shù)名稱和它們的值:”+config.getInitParameter(paraName)+””);}%>

config對象在Servlet程序中的作用很大,不過在Servlet程序中沒有內(nèi)置對象這一說,嚴(yán)格的說法應(yīng)該是ServletConfig接口在servlet程序中作用很大。但是JSP頁面中的config對象的作用很小。其中的一個(gè)作用:它可以調(diào)用getServletContext()方法獲得application對象。

3.5.3.8exception對象

exception對象是一個(gè)例外對象,當(dāng)一個(gè)頁面在運(yùn)行過程中發(fā)生了例外,就產(chǎn)生這個(gè)對象。如果一個(gè)JSP頁面要應(yīng)用此對象,就必須把isErrorPage設(shè)為true,否則無法編譯。他實(shí)際上是java.lang.Throwable的對象

方法說明:

1StringgetMessage()返回描述異常的消息2StringtoString()返回關(guān)于異常的簡短描述消息3voidprintStackTrace()顯示異常及其棧軌跡

4ThrowableFillInStackTrace()重寫異常的執(zhí)行棧軌跡

3.5.3.9pageContext對象

javax.servlet.jsp.PageContext的實(shí)例,該對象代表該JSP頁面上下文,使用該對

象可以訪問頁面中的共享數(shù)據(jù)。常用的方法有g(shù)etServletContext()和getServletConfig()等。

3.5.4JSP四種屬性范圍

在JSP中提供了四種屬性保存范圍----在一個(gè)頁面內(nèi):page

----在一次服務(wù)請求范圍內(nèi):request----在一次會話范圍內(nèi):session

----在一個(gè)應(yīng)用服務(wù)器范圍內(nèi):application最重要的概念:四種屬性保存范圍:

publicvoidsetAttribute(Stringname,Objectvalue)屬性名為字符串,屬性值可以為任意對象

publicObjectgetAttribute(Stringname)

page范圍:在JSP中設(shè)置一個(gè)頁的屬性范圍,必須通過pageContext完成,PageContext屬性范圍是最重要的JSP屬性之一,但是如果使用純粹的JSP代碼開發(fā),此屬性顯示不出用處,其發(fā)揮作用在Struts,WebWork中。

request將屬性保存在一次請求范圍之內(nèi),但必須使用服務(wù)器端跳轉(zhuǎn):應(yīng)用點(diǎn):MVC設(shè)計(jì)模式、Struts、Webwork。

session:只要設(shè)置上去,則不管是什么跳轉(zhuǎn),都可以取得屬性,主要用于驗(yàn)證用戶是否登陸。EMAIL--->用戶需要先進(jìn)行登陸,登陸成功后再編輯郵件。與session有關(guān)的任何打開的頁面都可以取得session

application屬性范圍,只要設(shè)置一次,則所有的頁面窗口都可以取得數(shù)據(jù)。application、session、request都與要跨多個(gè)頁,屬性保存是有內(nèi)存開銷的,設(shè)置過多的application或每一個(gè)session保存過多的對象,性能就降低了。

原則:能用request就不要用session,能用session就不要用application

application應(yīng)用:在線人員統(tǒng)計(jì)、在線人員名單列表,要釋放application資源,只能重新啟動服務(wù)器。

3.5.5JSP兩種跳轉(zhuǎn)方式的區(qū)別

1,

服務(wù)器端跳轉(zhuǎn),地址欄不改變;執(zhí)行到跳轉(zhuǎn)語句后無條件立刻跳轉(zhuǎn),之后的代碼不再被執(zhí)行;如果使用forward跳轉(zhuǎn),則一定要在跳轉(zhuǎn)之前釋放掉全部的資源;使用forward時(shí),request設(shè)置的屬性依然能保留在下一個(gè)頁面(setAttribute);通過,傳遞參數(shù)。

2,response.sendRedirect("地址")

客戶端跳轉(zhuǎn),地址欄改變;所有代碼執(zhí)行完畢后再跳轉(zhuǎn);不能保存request屬性,因?yàn)榈刂犯淖兞恕J褂每蛻舳颂D(zhuǎn),可以使用重寫URL將內(nèi)容傳遞。

轉(zhuǎn)發(fā)(也稱為服務(wù)器端跳轉(zhuǎn)):

重定向(也稱為客戶端跳轉(zhuǎn)):

3.5.6JSP執(zhí)行過程

JSP內(nèi)部執(zhí)行過程:

3.6Servlet

3.6.1Servlet簡述

Servlet是一種服務(wù)器端的Java應(yīng)用程序,具有獨(dú)立于平臺和協(xié)議的特性,可以生成動態(tài)的Web頁面。它擔(dān)當(dāng)客戶請求(Web瀏覽器或其他HTTP客戶程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序)的中間層。Servlet是位于Web服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,與傳統(tǒng)的從命令行啟動的Java應(yīng)用程序不同,Servlet由Web服務(wù)器進(jìn)行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機(jī)。

服務(wù)器上需要一些程序,常常是根據(jù)用戶輸入訪問數(shù)據(jù)庫的程序。這些通常是使用公共網(wǎng)關(guān)接口(CGI(CommonGatewayInterface))應(yīng)用程序完成的。然而,在服務(wù)器上運(yùn)行Java,這種程序可使用Java編程語言實(shí)現(xiàn)。在通信量大的服務(wù)器上,Javaservlet的優(yōu)點(diǎn)在于它們的執(zhí)行速度更快于CGI程序。各個(gè)用戶請求被激活成單個(gè)程序中的一個(gè)線程,而無需創(chuàng)建單獨(dú)的進(jìn)程,這意味著服務(wù)器端處理請求的系統(tǒng)開銷將明顯降低。

最早支持Servlet技術(shù)的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer開始支持標(biāo)準(zhǔn)的ServletAPI。Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內(nèi)容。這個(gè)過程為:

1.客戶端發(fā)送請求至服務(wù)器端;2.服務(wù)器將請求信息發(fā)送至Servlet;

3.Servlet生成響應(yīng)內(nèi)容并將其傳給Server。響應(yīng)內(nèi)容動態(tài)生成,通常取決于客戶端的請求;

4.服務(wù)器將響應(yīng)返回給客戶端.

Servlet看起來像是通常的Java程序。Servlet導(dǎo)入特定的屬于JavaServletAPI的包。因?yàn)槭菍ο笞止?jié)碼,可動態(tài)地從網(wǎng)絡(luò)加載,可以說Servlet對Server就如同Applet對Client一樣,但是,由于Servlet運(yùn)行于Server中,它們并不需要一個(gè)圖形用戶界面。從這個(gè)角度講,Servlet也被稱為FacelessObject。

一個(gè)servlet就是Java編程語言中的一個(gè)類,它被用來擴(kuò)展服務(wù)器的性能,服務(wù)器上駐留著可以通過“請求-響應(yīng)”編程模型來訪問的應(yīng)用程序。雖然servlet可以對任何類型的請求產(chǎn)生響應(yīng),但通常只用來擴(kuò)展Web服務(wù)器的應(yīng)用程序。

3.6.2Servlet生命周期

從Tomcat處理用戶請求,我們可以清晰的看到容器Servlet的生命周期管理過程:1、客戶發(fā)出請求>Web服務(wù)器轉(zhuǎn)發(fā)到Web容器Tomcat;

2、Tomcat主線程對轉(zhuǎn)發(fā)來用戶的請求做出響應(yīng)創(chuàng)建兩個(gè)對象:HttpServletRequest和HttpServletResponse;

3、從請求中的URL中找到正確Servlet,Tomcat為其創(chuàng)建或者分配一個(gè)線程,同時(shí)把2創(chuàng)建的兩個(gè)對象傳遞給該線程;

4、Tomcat調(diào)用Servlet的service()方法,根據(jù)請求參數(shù)的不同調(diào)用doGet()或者doPost()方法;

5、假設(shè)是HTTPGET請求,doGet()方法生成靜態(tài)頁面,并組合到響應(yīng)對象里;6、Servlet線程結(jié)束,Tomcat將響應(yīng)對象轉(zhuǎn)換為HTTP響應(yīng)發(fā)回給客戶,同時(shí)刪除請求和響應(yīng)對象。

從該過程中,我們可以理解Servlet的生命周期:Servlet類加載(對應(yīng)3步);Servlet實(shí)例化(對應(yīng)3步);調(diào)用init方法(對應(yīng)3步);調(diào)用service()方法(對應(yīng)4、5步);調(diào)用destroy()方法(對應(yīng)6步)。

3.6.3HttpServlet應(yīng)用編程接口

HttpServlet使用一個(gè)HTML表單來發(fā)送和接收數(shù)據(jù)。要?jiǎng)?chuàng)建一個(gè)HttpServlet,請擴(kuò)展HttpServlet類,該類是用專門的方法來處理HTML表單的GenericServlet的一個(gè)子類。HTML表單是由和標(biāo)記定義的。表單中典型地包含輸入字段(如文本輸入字段、復(fù)選框、單選按鈕和選擇列表)和用于提交數(shù)據(jù)的按鈕。當(dāng)提交信息時(shí),它們還指定服務(wù)器應(yīng)執(zhí)行哪一個(gè)Servlet(或其它的程序)。HttpServlet類包含init()、destroy()、service()等方法。其中init()和destroy()方法是繼承的。

(1)init()方法

在Servlet的生命期中,僅執(zhí)行一次init()方法。它是在服務(wù)器裝入Servlet時(shí)執(zhí)行的?梢耘渲梅⻊(wù)器,以在啟動服務(wù)器或客戶機(jī)首次訪問Servlet時(shí)裝入Servlet。無論有多少客戶機(jī)訪問Servlet,都不會重復(fù)執(zhí)行init()。

缺省的init()方法通常是符合要求的,但也可以用定制init()方法來覆蓋它,典型的是管理服務(wù)器端資源。例如,可能編寫一個(gè)定制init()來只用于一次裝入GIF圖像,改進(jìn)Servlet返回GIF圖像和含有多個(gè)客戶機(jī)請求的性能。另一個(gè)示例是初始化數(shù)據(jù)庫連接。缺省的init()方法設(shè)置了Servlet的初始化參數(shù),并用它的ServletConfig對象參

數(shù)來啟動配置,因此所有覆蓋init()方法的Servlet應(yīng)調(diào)用super.init()以確保仍然執(zhí)行這些任務(wù)。在調(diào)用service()方法之前,應(yīng)確保已完成了init()方法。

(2)service()方法

service()方法是Servlet的核心。每當(dāng)一個(gè)客戶請求一個(gè)HttpServlet對象,該對象的service()方法就要被調(diào)用,而且傳遞給這個(gè)方法一個(gè)"請求"(ServletRequest)對象和一個(gè)"響應(yīng)"(ServletResponse)對象作為參數(shù)。在HttpServlet中已存在service()方法。缺省的服務(wù)功能是調(diào)用與HTTP請求的方法相應(yīng)的do功能。例如,如果HTTP請求方法為GET,則缺省情況下就調(diào)用doGet()。Servlet應(yīng)該為Servlet支持的HTTP方法覆蓋do功能。因?yàn)镠ttpServlet.service()方法會檢查請求方法是否調(diào)用了適當(dāng)?shù)奶幚矸椒,不必要覆蓋service()方法。只需覆蓋相應(yīng)的do方法就可以了。

Servlet的響應(yīng)可以是下列幾種類型:

一個(gè)輸出流,瀏覽器根據(jù)它的內(nèi)容類型(如text/HTML)進(jìn)行解釋。一個(gè)HTTP錯(cuò)誤響應(yīng),重定向到另一個(gè)URL、servlet、JSP。(3)doGet()方法

當(dāng)一個(gè)客戶通過HTML表單發(fā)出一個(gè)HTTPGET請求或直接請求一個(gè)URL時(shí),doGet()方法被調(diào)用。與GET請求相關(guān)的參數(shù)添加到URL的后面,并與這個(gè)請求一起發(fā)送。當(dāng)不會修改服務(wù)器端的數(shù)據(jù)時(shí),應(yīng)該使用doGet()方法。

(4)doPost()方法

當(dāng)一個(gè)客戶通過HTML表單發(fā)出一個(gè)HTTPPOST請求時(shí),doPost()方法被調(diào)用。與POST請求相關(guān)的參數(shù)作為一個(gè)單獨(dú)的HTTP請求從瀏覽器發(fā)送到服務(wù)器。當(dāng)需要修改服務(wù)器端的數(shù)據(jù)時(shí),應(yīng)該使用doPost()方法。

(5)destroy()方法

destroy()方法僅執(zhí)行一次,即在服務(wù)器停止且卸裝Servlet時(shí)執(zhí)行該方法。典型的,將Servlet作為服務(wù)器進(jìn)程的一部分來關(guān)閉。缺省的destroy()方法通常是符合要求的,但也可以覆蓋它,典型的是管理服務(wù)器端資源。例如,如果Servlet在運(yùn)行時(shí)會累計(jì)統(tǒng)計(jì)數(shù)據(jù),則可以編寫一個(gè)destroy()方法,該方法用于在未裝入Servlet時(shí)將統(tǒng)計(jì)數(shù)字保存在文件中。另一個(gè)示例是關(guān)閉數(shù)據(jù)庫連接。

當(dāng)服務(wù)器卸裝Servlet時(shí),將在所有service()方法調(diào)用完成后,或在指定的時(shí)間間隔過后調(diào)用destroy()方法。一個(gè)Servlet在運(yùn)行service()方法時(shí)可能會產(chǎn)生其它的線程,因此請確認(rèn)在調(diào)用destroy()方法時(shí),這些線程已終止或完成。

(6)GetServletConfig()方法

GetServletConfig()方法返回一個(gè)ServletConfig對象,該對象用來返回初始化參數(shù)和ServletContext。ServletContext接口提供有關(guān)servlet的環(huán)境信息。

(7)GetServletInfo()方法

GetServletInfo()方法是一個(gè)可選的方法,它提供有關(guān)servlet的信息,如作者、版本、版權(quán)。

當(dāng)服務(wù)器調(diào)用sevlet的Service()、doGet()和doPost()這三個(gè)方法時(shí),均需要"請求"和"響應(yīng)"對象作為參數(shù)。"請求"對象提供有關(guān)請求的信息,而"響應(yīng)"對象提供了一個(gè)將響應(yīng)信息返回給瀏覽器的一個(gè)通信途徑。

javax.servlet軟件包中的相關(guān)類為ServletResponse和ServletRequest,而javax.servlet.http

軟件包中的相關(guān)類為

HttpServletRequest

HttpServletResponse。Servlet通過這些對象與服務(wù)器通信并最終與客戶機(jī)通信。Servlet能通過調(diào)用"請求"對象的方法獲知客戶機(jī)環(huán)境,服務(wù)器環(huán)境的信息和所有由客戶機(jī)提供的信息。Servlet可以調(diào)用"響應(yīng)"對象的方法發(fā)送響應(yīng),該響應(yīng)是準(zhǔn)備發(fā)回客戶機(jī)的。

3.7MVC設(shè)計(jì)模式入門

MVC(Model-View-Controller)應(yīng)用程序結(jié)構(gòu)被用來分析分布式應(yīng)用程序的特征。這種抽象結(jié)構(gòu)能有助于將應(yīng)用程序分割成若干邏輯部件,使程序設(shè)計(jì)變得更加容易。

MVC結(jié)構(gòu)提供了一種按功能對各種對象進(jìn)行分割的方法(這些對象是用來維護(hù)和表現(xiàn)數(shù)據(jù)的),其目的是為了將各對象間的耦合程度減至最小。MVC結(jié)構(gòu)本來是為了將傳統(tǒng)的輸入(input)、處理(processing)、輸出(output)任務(wù)運(yùn)用到圖形化用戶交互模型中而設(shè)計(jì)的。但是,將這些概念運(yùn)用于基于Web的企業(yè)級多層應(yīng)用領(lǐng)域也是很適合的。

在MVC結(jié)構(gòu)中,模型(Model)代表應(yīng)用程序的數(shù)據(jù)(data)和用于控制訪問和修改這些數(shù)據(jù)的業(yè)務(wù)規(guī)則(businessrule)。通常模型被用來作為對現(xiàn)實(shí)世界中一個(gè)處理過程的軟件近似,當(dāng)定義一個(gè)模型時(shí),可以采用一般的簡單的建模技術(shù)。

當(dāng)模型發(fā)生改變時(shí),它會通知視圖(View),并且為視圖提供查詢模型相關(guān)狀態(tài)的能力。同時(shí),它也為控制器(Controller)提供訪問封裝在模型內(nèi)部的應(yīng)用程序功能的能力。

一個(gè)視圖(View)用來組織模型的內(nèi)容。它從模型那里獲得數(shù)據(jù)并指定這些數(shù)據(jù)如何表現(xiàn)。當(dāng)模型變化時(shí),視圖負(fù)責(zé)維持?jǐn)?shù)據(jù)表現(xiàn)的一致性。視圖同時(shí)將用戶要求告知控制器(Controller)。

控制器(Controller)定義了應(yīng)用程序的行為;它負(fù)責(zé)對來自視圖的用戶要求進(jìn)行解釋,并把這些要求映射成相應(yīng)的行為,這些行為由模型負(fù)責(zé)實(shí)現(xiàn)。在獨(dú)立運(yùn)行的GUI客戶端,用戶要求可能是一些鼠標(biāo)單擊或是菜單選擇操作。在一個(gè)Web應(yīng)用程序中,它們的表現(xiàn)形式可能是一些來自客戶端的GET或POST的HTTP請求。模型所實(shí)現(xiàn)的行為包括處理業(yè)務(wù)和修改模型的狀態(tài)。根據(jù)用戶要求和模型行為的結(jié)果,控制器選擇一個(gè)視圖作為對用戶請求的應(yīng)答。通常一組相關(guān)功能集對應(yīng)一個(gè)控制器。

基于MVC結(jié)構(gòu)的框架中各組件的責(zé)任及相互關(guān)系:

3.8可擴(kuò)展標(biāo)記語言(XML)

3.8.1XML簡介

可擴(kuò)展標(biāo)記語言(ExtensibleMarkupLanguage,XML),用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進(jìn)行定義的源語言。XML是標(biāo)準(zhǔn)通用標(biāo)記語言(SGML)的子集,非常適合Web傳輸。XML提供統(tǒng)一的方法來描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。

XML與Access,Oracle和SQLServer等數(shù)據(jù)庫不同,數(shù)據(jù)庫提供了更強(qiáng)有力的數(shù)據(jù)存儲和分析能力,例如:數(shù)據(jù)索引、排序、查找、相關(guān)一致性等,XML僅僅是展示數(shù)據(jù)。事實(shí)上XML與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:他極其簡單。這是一個(gè)看上去有點(diǎn)瑣細(xì)的優(yōu)點(diǎn),但正是這點(diǎn)使XML與眾不同。

XML與HTML的設(shè)計(jì)區(qū)別是:XML是用來存儲數(shù)據(jù)的,重在數(shù)據(jù)本身。而HTML是用來定義數(shù)據(jù)的,重在數(shù)據(jù)的顯示模式。

XML的簡單使其易于在任何應(yīng)用程序中讀寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語言,雖然不同的應(yīng)用軟件也支持其它的數(shù)據(jù)交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows、MacOS,Linux以及其他平臺下產(chǎn)生的信息結(jié)合,然后可以很容易加載XML數(shù)據(jù)到程序中并分析他,并以XML格式輸出結(jié)果。

3.8.2XML簡明語法

SGML常用來定義針對HTML的文檔類型定義(DTD),同時(shí)它也常用于編寫XML的DTD。SGML的問題就在于,它允許出現(xiàn)一些奇怪的語法,這讓創(chuàng)建HTML的解析器成為一個(gè)大難題:

1某些起始標(biāo)簽不允許出現(xiàn)結(jié)束標(biāo)簽,例如HTML中標(biāo)簽。包含了結(jié)束標(biāo)簽就會出現(xiàn)錯(cuò)誤。

2某些起始標(biāo)簽可以選擇性出現(xiàn)結(jié)束標(biāo)簽或者隱含了結(jié)束標(biāo)簽

3某些起始標(biāo)簽要求必須出現(xiàn)結(jié)束標(biāo)簽,例如HTML中標(biāo)簽。

4標(biāo)簽可以以任何順序嵌套。即使結(jié)束標(biāo)簽不按照起始標(biāo)簽的逆序出現(xiàn)也是允許的。5某些特性要求必須包含值,例如中的src特性。6某些特性不要求一定有值,例如中的nowrap特性。

7定義特性的兩邊有沒有加上雙引號都是可以的,所以和都是允許的。

這些問題使建立一個(gè)SGML語言的解析器變成了一項(xiàng)艱巨的任務(wù)。判斷何時(shí)應(yīng)用以上規(guī)則的困難導(dǎo)致了SGML語言的定義一直停滯不前。以這些問題作為出發(fā)點(diǎn),XML逐漸步入我們的視野。

XML去掉了之前令許多開發(fā)人員頭疼的SGML的隨意語法。在XML中,采用了如下的語法:

1任何的起始標(biāo)簽都必須有一個(gè)結(jié)束標(biāo)簽。

2可以采用另一種簡化語法,可以在一個(gè)標(biāo)簽中同時(shí)表示起始和結(jié)束標(biāo)簽。這種語法是在大于符號之前緊跟一個(gè)斜線(/),例如。XML解析器會將其翻譯成。3標(biāo)簽必須按合適的順序進(jìn)行嵌套,所以結(jié)束標(biāo)簽必須按鏡像順序匹配起始標(biāo)簽,例如

thisisasamplestring。這好比是將起始和結(jié)束標(biāo)簽看作是數(shù)學(xué)中的左右括號:在沒有關(guān)閉所有的內(nèi)部括號之前,是不能關(guān)閉外面的括號的。4所有的特性都必須有值。

5所有的特性都必須在值的周圍加上雙引號。

3.8.3Java中四種操作XML方式的比較

3.8.3.1介紹

1)dom(jaxpcrimson解析器)

dom是用與平臺和語言無關(guān)的方式表示xml文檔的官方w3c標(biāo)準(zhǔn)。dom是以層次結(jié)構(gòu)組織的節(jié)點(diǎn)或信息片斷的集合。這個(gè)層次結(jié)構(gòu)允許開發(fā)人員在樹中尋找特定信息。分析該結(jié)構(gòu)通常需要加載整個(gè)文檔和構(gòu)造層次結(jié)構(gòu),然后才能做任何工作。由于它是基于信息層次的,因而dom被認(rèn)為是基于樹或基于對象的。dom以及廣義的基于樹的處理具有幾個(gè)優(yōu)點(diǎn)。首先,由于樹在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對數(shù)據(jù)和結(jié)構(gòu)作出更改。它還可以在任何時(shí)候在樹中上下導(dǎo)航,而不是像sax那樣是一次性的處理。dom使用起來也要簡單得多。

2)sax

sax處理的優(yōu)點(diǎn)非常類似于流媒體的優(yōu)點(diǎn)。分析能夠立即開始,而不是等待所有的數(shù)據(jù)被處理。而且,由于應(yīng)用程序只是在讀取數(shù)據(jù)時(shí)檢查數(shù)據(jù),因此不需要將數(shù)據(jù)存儲在內(nèi)存中。這對于大型文檔來說是個(gè)巨大的優(yōu)點(diǎn)。事實(shí)上,應(yīng)用程序甚至不必解析整個(gè)文檔;它可以在某個(gè)條件得到滿足時(shí)停止解析。一般來說,sax還比它的替代者dom快許多。

選擇dom還是選擇sax?對于需要自己編寫代碼來處理xml文檔的開發(fā)人員來說,選擇dom還是sax解析模型是一個(gè)非常重要的設(shè)計(jì)決策。dom采用建立樹形結(jié)構(gòu)的方式訪問xml文檔,而sax采用的事件模型。

dom解析器把xml文檔轉(zhuǎn)化為一個(gè)包含其內(nèi)容的樹,并可以對樹進(jìn)行遍歷。用dom解析模型的優(yōu)點(diǎn)是編程容易,開發(fā)人員只需要調(diào)用建樹的指令,然后利用navigationapis訪問所需的樹節(jié)點(diǎn)來完成任務(wù)?梢院苋菀椎奶砑雍托薷臉渲械脑亍H欢捎谑褂胐om解析器的時(shí)候需要處理整個(gè)xml文檔,所以對性能和內(nèi)存的要求比較高,尤其是遇到很大的xml文件的時(shí)候。由于它的遍歷能力,dom解析器常用于xml文檔需要頻繁的改變的服務(wù)中。

sax解析器采用了基于事件的模型,它在解析xml文檔的時(shí)候可以觸發(fā)一系列的事件,

當(dāng)發(fā)現(xiàn)給定的tag的時(shí)候,它可以激活一個(gè)回調(diào)方法,告訴該方法制定的標(biāo)簽已經(jīng)找到。sax對內(nèi)存的要求通常會比較低,因?yàn)樗岄_發(fā)人員自己來決定所要處理的tag。特別是當(dāng)開發(fā)人員只需要處理文檔中所包含的部分?jǐn)?shù)據(jù)時(shí),sax這種擴(kuò)展能力得到了更好的體現(xiàn)。但用sax解析器的時(shí)候編碼工作會比較困難,而且很難同時(shí)訪問同一個(gè)文檔中的多處不同數(shù)據(jù)。

3)jdom()

jdom的目的是成為java特定文檔模型,它簡化與xml的交互并且比使用dom實(shí)現(xiàn)更快。由于是第一個(gè)java特定模型,jdom一直得到大力推廣和促進(jìn)。正在考慮通過“java規(guī)范請求jsr-102”將它最終用作“java標(biāo)準(zhǔn)擴(kuò)展”。從201*年初就已經(jīng)開始了jdom開發(fā)。jdom與dom主要有兩方面不同。首先,jdom僅使用具體類而不使用接口。這在某些方面簡化了api,但是也限制了靈活性。第二,api大量使用了collections類,簡化了那些已經(jīng)熟悉這些類的java開發(fā)者的使用。

jdom文檔聲明其目的是“使用20%(或更少)的精力解決80%(或更多)java/xml問題”(根據(jù)學(xué)習(xí)曲線假定為20%)。jdom對于大多數(shù)java/xml應(yīng)用程序來說當(dāng)然是有用的,并且大多數(shù)開發(fā)者發(fā)現(xiàn)api比dom容易理解得多。jdom還包括對程序行為的相當(dāng)廣泛檢查以防止用戶做任何在xml中無意義的事。然而,它仍需要您充分理解xml以便做一些超出基本的工作(或者甚至理解某些情況下的錯(cuò)誤)。這也許是比學(xué)習(xí)dom或jdom接口都更有意義的工作。

jdom自身不包含解析器。它通常使用sax2解析器來解析和驗(yàn)證輸入xml文檔(盡管它還可以將以前構(gòu)造的dom表示作為輸入)。它包含一些轉(zhuǎn)換器以將jdom表示輸出成sax2事件流、dom模型或xml文本文檔。jdom是在apache許可證變體下發(fā)布的開放源碼。

4)dom4j()

雖然dom4j代表了完全獨(dú)立的開發(fā)結(jié)果,但最初,它是jdom的一種智能分支。它合并了許多超出基本xml文檔表示的功能,包括集成的xpath支持、xmlschema支持以及用于大文檔或流化文檔的基于事件的處理。它還提供了構(gòu)建文檔表示的選項(xiàng),它通過dom4japi和標(biāo)準(zhǔn)dom接口具有并行訪問功能。從201*下半年開始,它就一直處于開發(fā)之中。為支持所有這些功能,dom4j使用接口和抽象基本類方法。dom4j大量使用了api中的collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然dom4j付出了更復(fù)雜的api的代價(jià),但是它提供了比jdom大得多的靈活性。

在添加靈活性、xpath集成和對大文檔處理的目標(biāo)時(shí),dom4j的目標(biāo)與jdom是一樣的:針對java開發(fā)者的易用性和直觀操作。它還致力于成為比jdom更完整的解決方案,實(shí)現(xiàn)

在本質(zhì)上處理所有java/xml問題的目標(biāo)。在完成該目標(biāo)時(shí),它比jdom更少強(qiáng)調(diào)防止不正確的應(yīng)用程序行為。

dom4j是一個(gè)非常非常優(yōu)秀的javaxmlapi,具有性能優(yōu)異、功能強(qiáng)大和極端易用使用的特點(diǎn),同時(shí)它也是一個(gè)開放源代碼的軟件。如今你可以看到越來越多的java軟件都在使用dom4j來讀寫xml,特別值得一提的是連sun的jaxm也在用dom4j。

3.8.3.2比較

1)dom4j性能最好,連sun的jaxm也在用dom4j。目前許多開源項(xiàng)目中大量采用dom4j,例如大名鼎鼎的hibernate也用dom4j來讀取xml配置文件。如果不考慮可移植性,那就采用dom4j.

2)jdom和dom在性能測試時(shí)表現(xiàn)不佳,在測試10m文檔時(shí)內(nèi)存溢出。在小文檔情況下還值得考慮使用dom和jdom。雖然jdom的開發(fā)者已經(jīng)說明他們期望在正式發(fā)行版前專注性能問題,但是從性能觀點(diǎn)來看,它確實(shí)沒有值得推薦之處。另外,dom仍是一個(gè)非常好的選擇。dom實(shí)現(xiàn)廣泛應(yīng)用于多種編程語言。它還是許多其它與xml相關(guān)的標(biāo)準(zhǔn)的基礎(chǔ),因?yàn)樗将@得w3c推薦(與基于非標(biāo)準(zhǔn)的java模型相對),所以在某些類型的項(xiàng)目中可能也需要它(如在javascript中使用dom)。

3)sax表現(xiàn)較好,這要依賴于它特定的解析方式-事件驅(qū)動。一個(gè)sax檢測即將到來的xml流,但并沒有載入到內(nèi)存(當(dāng)然當(dāng)xml流被讀入時(shí),會有部分文檔暫時(shí)隱藏在內(nèi)存中)。

3.8.3.3四種xml操作方式的基本使用方法xml文件:

<?xmlversion="1.0"encoding="gb2312"?>

<result><value>

<no>a1234</no>

<addr>廣東省xx縣xx鎮(zhèn)xx路x段xx號</addr></value><value>

<no>b1234</no>

<addr>廣東省xx市xx鄉(xiāng)xx村xx組</addr></value></result>

1)dom

importjava.io.*;importjava.util.*;

importorg.w3c.dom.*;

importjavax.xml.parsers.*;

publicclassmyxmlreader{

publicstaticvoidmain(stringarge[]){

longlasting=system.currenttimemillis();try{

filef=newfile("data_10k.xml");documentbuilderfactoryfactory=documentbuilderfactory.newinstance();

documentbuilderbuilder=factory.newdocumentbuilder();documentdoc=builder.parse(f);

nodelistnl=doc.getelementsbytagname("value");for(inti=0;i<nl.getlength();i++){system.out.print("車牌號碼:"+doc.getelementsbytagname("no").item(i).getfirstchild().getnodevalue());system.out.println("車主地址:"+doc.getelementsbytagname("addr").item(i).getfirstchild().getnodevalue());}

}catch(exceptione){e.printstacktrace();}2)sax

importorg.xml.sax.*;

importorg.xml.sax.helpers.*;importjavax.xml.parsers.*;

publicclassmyxmlreaderextendsdefaulthandler{java.util.stacktags=newjava.util.stack();publicmyxmlreader(){super();}

publicstaticvoidmain(stringargs[]){

longlasting=system.currenttimemillis();try{

saxparserfactorysf=saxparserfactory.newinstance();saxparsersp=sf.newsaxparser();

myxmlreaderreader=newmyxmlreader();

sp.parse(newinputsource("data_10k.xml"),reader);}catch(exceptione){e.printstacktrace();}

system.out.println("運(yùn)行時(shí)間:"+(system.currenttimemillis()-lasting)+"毫秒");}

publicvoidcharacters(charch[],intstart,intlength)throwssaxexception{

stringtag=(string)tags.peek();if(tag.equals("no")){

system.out.print("車牌號碼:"+newstring(ch,start,length));}

if(tag.equals("addr")){

system.out.println("地址:"+newstring(ch,start,length));}}

publicvoidstartelement(stringuri,stringlocalname,stringqname,attributesattrs){

tags.push(qname);}}

3)jdom

importjava.io.*;importjava.util.*;importorg.jdom.*;

importorg.jdom.input.*;publicclassmyxmlreader{

publicstaticvoidmain(stringarge[]){

longlasting=system.currenttimemillis();try{

saxbuilderbuilder=newsaxbuilder();

documentdoc=builder.build(newfile("data_10k.xml"));elementfoo=doc.getrootelement();listallchildren=foo.getchildren();for(inti=0;i<allchildren.size();i++){system.out.print("車牌號碼((element)allchildren.get(i)).getchild("no").gettext());system.out.println("車主地址((element)allchildren.get(i)).getchild("addr").gettext());}

34

:":"

++

}catch(exceptione){e.printstacktrace();}}

4)dom4j

importjava.io.*;importjava.util.*;importorg.dom4j.*;importorg.dom4j.io.*;publicclassmyxmlreader{

publicstaticvoidmain(stringarge[]){

longlasting=system.currenttimemillis();try{

filef=newfile("data_10k.xml");

saxreaderreader=newsaxreader();documentdoc=reader.read(f);

elementroot=doc.getrootelement();elementfoo;

for(iteratori=root.elementiterator("value");i.hasnext();){foo=(element)i.next();

system.out.print("車牌號碼:"+foo.elementtext("no"));system.out.println("車主地址:"+foo.elementtext("addr"));}

}catch(exceptione){e.printstacktrace();}}

3.9Ajax

3.9.1Ajax簡介

Ajax不是一種新的編程語言,而是一種用于創(chuàng)建更好更快以及交互性更強(qiáng)的Web應(yīng)用程序的技術(shù)。

通過Ajax,您的JavaScript可使用JavaScript的XMLHttpRequest對象來直接與服務(wù)器進(jìn)行通信。通過這個(gè)對象,您的JavaScript可在不重載頁面的情況與Web服務(wù)

器交換數(shù)據(jù)。

Ajax在瀏覽器與Web服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP請求),這樣就可使網(wǎng)頁從服務(wù)器請求少量的信息,而不是整個(gè)頁面。Ajax可使因特網(wǎng)應(yīng)用程序更小、更快,更友好。

Ajax是一種獨(dú)立于Web服務(wù)器軟件的瀏覽器技術(shù)。Ajax基于下列Web標(biāo)準(zhǔn):JavaScriptXMLHTMLCSS在Ajax中使用的Web標(biāo)準(zhǔn)已被良好定義,并被所有的主流瀏覽器支持。Ajax應(yīng)用程序獨(dú)立于瀏覽器和平臺。

Web應(yīng)用程序較桌面應(yīng)用程序有諸多優(yōu)勢;它們能夠涉及廣大的用戶,它們更易安裝及維護(hù),也更易開發(fā)。

不過,因特網(wǎng)應(yīng)用程序并不像傳統(tǒng)的桌面應(yīng)用程序那樣完善且友好。

通過Ajax,因特網(wǎng)應(yīng)用程序可以變得更完善,更友好。

如名字所示,Ajax的概念中最重要而最易被忽視的是它也是一種JavaScript編程語言。JavaScript是一種粘合劑使Ajax應(yīng)用的各部分集成在一起。在大部分時(shí)間,JavaScript通常被服務(wù)端開發(fā)人員認(rèn)為是一種企業(yè)級應(yīng)用不需要使用的東西應(yīng)該盡力避免。這種觀點(diǎn)來自以前編寫JavaScript代碼的經(jīng)歷:繁雜而又易出錯(cuò)的語言。類似的,它也被認(rèn)為將應(yīng)用邏輯任意地散布在服務(wù)端和客戶端中,這使得問題很難被發(fā)現(xiàn)而且代碼很難重用。在Ajax中JavaScript主要被用來傳遞用戶界面上的數(shù)據(jù)到服務(wù)端并返回結(jié)果。XMLHttpRequest對象用來響應(yīng)通過HTTP傳遞的數(shù)據(jù),一旦數(shù)據(jù)返回到客戶端就可以立刻使用DOM將數(shù)據(jù)放到網(wǎng)頁上。

為了正確的瀏覽Ajax應(yīng)用,CSS是一種Ajax開發(fā)人員所需要的重要武器。CSS提供了從內(nèi)容中分離應(yīng)用樣式和設(shè)計(jì)的機(jī)制。雖然CSS在Ajax應(yīng)用中扮演至關(guān)重要的角色,但它也是構(gòu)建跨瀏覽器應(yīng)用的一大阻礙,因?yàn)椴煌臑g覽器廠商支持各種不同的CSS級別。

XMLHttpRequest對象在大部分瀏覽器上已經(jīng)實(shí)現(xiàn)而且擁有一個(gè)簡單的接口允許數(shù)據(jù)從客戶端傳遞到服務(wù)端,但并不會打斷用戶當(dāng)前的操作。使用XMLHttpRequest傳送的數(shù)據(jù)可以是任何格式,雖然從名字上建議是XML格式的數(shù)據(jù)。

3.9.2Ajax實(shí)現(xiàn)

3.9.2.1.創(chuàng)建XMLHttpRequest方法:

在實(shí)際應(yīng)用中,為了兼容多種不同版本的瀏覽器,一般將創(chuàng)建XMLHttpRequest類的方法寫成如下形式:

//ProvidetheXMLHttpRequestclassforIE5.x-6.x://Otherbrowsers(includingIE7.x-8.x)ignorethis//whenXMLHttpRequestispredefinedvarxmlHttp;

if(typeofXMLHttpRequest!="undefined"){xmlHttp=newXMLHttpRequest();}elseif(window.ActiveXObject){

varaVersions=["Msxml2.XMLHttp.5.0","Msxml2.XMLHttp.4.0","Msxml2.XMLHttp.3.0","Msxml2.XMLHttp","Microsoft.XMLHttp"];for(vari=0;i

xmlHttp=newActiveXObject(aVersions[i]);break;

}catch(e){}}}

3.9.2.2發(fā)送請求

可以調(diào)用HTTP請求類的open()和send()方法,如下所示:xmlhttp_request.open("GET",URL,true);xmlhttp_request.send(null);

open()的第一個(gè)參數(shù)是HTTP請求方式GET,POST或任何服務(wù)器所支持的您想調(diào)用的方式。按照HTTP規(guī)范,該參數(shù)要大寫;否則,某些瀏覽器(如Firefox)可能無法處理請求。

第二個(gè)參數(shù)是請求頁面的URL。

第三個(gè)參數(shù)設(shè)置請求是否為異步模式。如果是TRUE,JavaScript函數(shù)將繼續(xù)執(zhí)行,而不等待服務(wù)器響應(yīng)。這就是"Ajax"中的"A"。

3.9.2.3服務(wù)器的響應(yīng)

這需要告訴HTTP請求對象用哪一個(gè)JavaScript函數(shù)處理這個(gè)響應(yīng)?梢詫ο蟮膐nreadystatechange屬性設(shè)置為要使用的JavaScript的函數(shù)名,如下所示:xmlhttp_request.onreadystatechange=FunctionName;

FunctionName是用JavaScript創(chuàng)建的函數(shù)名,注意不要寫成FunctionName(),當(dāng)然我們也可以直接將JavaScript代碼創(chuàng)建在onreadystatechange之后,例如:xmlhttp_request.onreadystatechange=function(){//JavaScript代碼段

};

首先要檢查請求的狀態(tài)。只有當(dāng)一個(gè)完整的服務(wù)器響應(yīng)已經(jīng)收到了,函數(shù)才可以處理該響應(yīng)。XMLHttpRequest提供了readyState屬性來對服務(wù)器響應(yīng)進(jìn)行判斷。readyState的取值如下:0(未初始化)1(正在裝載)2(裝載完畢)3(交互中)4(完成)

所以只有當(dāng)readyState=4時(shí),一個(gè)完整的服務(wù)器響應(yīng)已經(jīng)收到了,函數(shù)才可以處理該響應(yīng)。具體代碼如下:

if(http_request.readyState==4){//收到完整的服務(wù)器響應(yīng)}else{//沒有收到完整的服務(wù)器響應(yīng)}

當(dāng)readyState=4時(shí),一個(gè)完整的服務(wù)器響應(yīng)已經(jīng)收到了,接著,函數(shù)會檢查HTTP服務(wù)器響應(yīng)的狀態(tài)值。完整的狀態(tài)取值可參見W3C文檔。當(dāng)HTTP服務(wù)器響應(yīng)的值為200時(shí),表示狀態(tài)正常。

3.9.2.4處理從服務(wù)器得到的數(shù)據(jù)有兩種方式可以得到這些數(shù)據(jù):

(1)以文本字符串的方式返回服務(wù)器的響應(yīng)

(2)以XMLDocument對象方式返回響應(yīng)

3.9.3Ajax的優(yōu)勢與劣勢

優(yōu)點(diǎn):更迅捷的響應(yīng)速度

傳統(tǒng)的web應(yīng)用允許用戶填寫表單(form),當(dāng)提交表單時(shí)就向web服務(wù)器發(fā)送一個(gè)請求。服務(wù)器接收并處理傳來的表單,然後返回一個(gè)新的網(wǎng)頁。這個(gè)做法浪費(fèi)了許多帶寬,因?yàn)樵谇搬醿蓚(gè)頁面中的大部分HTML代碼往往是相同的。由于每次應(yīng)用的交互都需要向服務(wù)器發(fā)送請求,應(yīng)用的響應(yīng)時(shí)間就依賴于服務(wù)器的響應(yīng)時(shí)間。這導(dǎo)致了用戶界面的響應(yīng)比本地應(yīng)用慢得多。

與此不同,Ajax應(yīng)用可以僅向服務(wù)器發(fā)送并取回必需的數(shù)據(jù),它使用SOAP或其它一些基于XML的webservice接口,并在客戶端采用JavaScript處理來自服務(wù)器的響應(yīng)。

因此在服務(wù)器和瀏覽器之間交換的數(shù)據(jù)大量減少,結(jié)果我們就能看到響應(yīng)更快的應(yīng)用。同時(shí)很多的處理工作可以在發(fā)出請求的客戶端機(jī)器上完成,所以Web服務(wù)器的處理時(shí)間也減少了。

使用Ajax的最大優(yōu)點(diǎn),就是能在不更新整個(gè)頁面的前提下維護(hù)數(shù)據(jù)。這使得Web應(yīng)用程序更為迅捷地回應(yīng)用戶動作,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒有改變過的信息。

Ajax不需要任何瀏覽器插件,但需要用戶允許JavaScript在瀏覽器上執(zhí)行。就像DHTML應(yīng)用程序那樣,Ajax應(yīng)用程序必須在眾多不同的瀏覽器和平臺上經(jīng)過嚴(yán)格的測試。隨著Ajax的成熟,一些簡化Ajax使用方法的程序庫也相繼問世。同樣,也出現(xiàn)了另一種輔助程序設(shè)計(jì)的技術(shù),為那些不支持JavaScript的用戶提供替代功能。

缺點(diǎn)與其中一些問題的對應(yīng)解決方案:

對應(yīng)用Ajax最主要的批評就是,它可能破壞瀏覽器后退按鈕的正常行為。在動態(tài)更新頁面的情況下,用戶無法回到前一個(gè)頁面狀態(tài),這是因?yàn)闉g覽器僅能記下歷史記錄中的靜態(tài)頁面。一個(gè)被完整讀入的頁面與一個(gè)已經(jīng)被動態(tài)修改過的頁面之間的差別非常微妙;用戶通常都希望單擊后退按鈕,就能夠取消他們的前一次操作,但是在Ajax應(yīng)用程序中,卻無法這樣做。不過開發(fā)者已想出了種種辦法來解決這個(gè)問題,當(dāng)中大多數(shù)都是在用戶單擊后退按鈕訪問歷史記錄時(shí),通過建立或使用一個(gè)隱藏的IFRAME來重現(xiàn)頁面上的變更。(例如,當(dāng)用戶在GoogleMaps中單擊后退時(shí),它在一個(gè)隱藏的IFRAME中進(jìn)行搜索,然后將搜索結(jié)果反映到Ajax元素上,以便將應(yīng)用程序狀態(tài)恢復(fù)到當(dāng)時(shí)的狀態(tài)。)

一個(gè)相關(guān)的觀點(diǎn)認(rèn)為,使用動態(tài)頁面更新使得用戶難于將某個(gè)特定的狀態(tài)保存到收藏夾中。該問題的解決方案也已出現(xiàn),大部分都使用URL片斷標(biāo)識符(通常被稱為錨點(diǎn),即URL中#后面的部分)來保持跟蹤,允許用戶回到指定的某個(gè)應(yīng)用程序狀態(tài)。(許多瀏覽器允許JavaScript動態(tài)更新錨點(diǎn),這使得Ajax應(yīng)用程序能夠在更新顯示內(nèi)容的同時(shí)更新錨點(diǎn)。)這些解決方案也同時(shí)解決了許多關(guān)于不支持后退按鈕的爭論。

進(jìn)行Ajax開發(fā)時(shí),網(wǎng)絡(luò)延遲即用戶發(fā)出請求到服務(wù)器發(fā)出響應(yīng)之間的間隔需要慎重考慮。不給予用戶明確的回應(yīng),沒有恰當(dāng)?shù)念A(yù)讀數(shù)據(jù),或者對XMLHttpRequest的不恰當(dāng)處理,都會使用戶感到延遲,這是用戶不欲看到的,也是他們無法理解的。通常的解決方案是,使用一個(gè)可視化的組件來告訴用戶系統(tǒng)正在進(jìn)行后臺操作并且正在讀取數(shù)據(jù)和內(nèi)容。

一些手持設(shè)備(如手機(jī)、PDA等)現(xiàn)在還不能很好的支持Ajax;

用JavaScript作的Ajax引擎,JavaScript的兼容性和DeBug都是讓人頭痛的事;Ajax的無刷新重載,由于頁面的變化沒有刷新重載那么明顯,所以容易給用戶帶來困

擾——用戶不太清楚現(xiàn)在的數(shù)據(jù)是新的還是已經(jīng)更新過的;現(xiàn)有的解決有:在相關(guān)位置提示、數(shù)據(jù)更新的區(qū)域設(shè)計(jì)得比較明顯、數(shù)據(jù)更新后給用戶提示等。

Ajax是以異步的方式向服務(wù)器提交需求。對服務(wù)器而言,其與傳統(tǒng)的提交窗體需求并無不同,而且由于是以異步之方式提交,如果同時(shí)有多個(gè)Ajax需求及窗體提交需求,將無法保證哪一個(gè)需求先獲得服務(wù)器的響應(yīng)。這會造成應(yīng)用程序典型的多進(jìn)程(process)或多線程(thread)的競爭(racing)問題。程序員因此必須自行處理或在JavaScript里面動手腳以避免這類競爭問題的發(fā)生(如Ajax需求未響應(yīng)之前,先disable送出按鈕),這又不必要的增加了程序員的負(fù)擔(dān)。

3.10JSTL

3.10.1JSTL介紹

JSP標(biāo)準(zhǔn)標(biāo)簽庫(JSPStandardTagLibrary,JSTL)是一個(gè)實(shí)現(xiàn)Web應(yīng)用程序中常見的通用功能的定制標(biāo)記庫集,這些功能包括迭代和條件判斷、數(shù)據(jù)管理格式化、XML操作以及數(shù)據(jù)庫訪問。在developerWorks上其新系列的第一篇文章中,軟件工程師MarkKolb展示了如何使用JSTL標(biāo)記來避免在JSP頁面中使用腳本編制元素,如何通過從表示層刪除源代碼來簡化軟件維護(hù)。JSTL經(jīng)過簡化的表達(dá)式語言,它允許在不必使用功能齊全的編程語言的情況下對JSTL操作指定動態(tài)屬性值。

JavaServerPages(JSP)是用于J2EE平臺的標(biāo)準(zhǔn)表示層技術(shù)。JSP技術(shù)提供了用于執(zhí)行計(jì)算(這些計(jì)算用來動態(tài)地生成頁面內(nèi)容)的腳本編制元素和操作。腳本編制元素允許在JSP頁面中包括程序源代碼,在為響應(yīng)用戶請求而呈現(xiàn)頁面時(shí)可以執(zhí)行這些源代碼。操作將計(jì)算操作封裝到很象HTML或XML標(biāo)記的標(biāo)記中,JSP頁面的模板文本通常包含這些標(biāo)記。JSP規(guī)范只將幾種操作定義成了標(biāo)準(zhǔn),但從JSP1.1開始,開發(fā)人員已經(jīng)能夠以定制標(biāo)記庫的方式創(chuàng)建其自己的操作了。

JSP標(biāo)準(zhǔn)標(biāo)記庫(JSTL)是JSP1.2定制標(biāo)記庫集,這些標(biāo)記庫實(shí)現(xiàn)大量服務(wù)器端Java應(yīng)用程序常用的基本功能。通過為典型表示層任務(wù)(如數(shù)據(jù)格式化和迭代或條件內(nèi)容)提供標(biāo)準(zhǔn)實(shí)現(xiàn),JSTL使JSP作者可以專注于特定于應(yīng)用程序的開發(fā)需求,而不是為這些通用操作“另起爐灶”。

3.10.2JSTL隱式對象

JSP:

pageContextPageContext實(shí)例對應(yīng)于當(dāng)前頁面的處理作用域:

pageScope與頁面作用域?qū)傩缘拿Q和值相關(guān)聯(lián)的Map類requestScope與請求作用域?qū)傩缘拿Q和值相關(guān)聯(lián)的Map類sessionScope與會話作用域?qū)傩缘拿Q和值相關(guān)聯(lián)的Map類applicationScope與應(yīng)用程序作用域?qū)傩缘拿Q和值相關(guān)聯(lián)的Map類請求參數(shù):

param按名稱存儲請求參數(shù)的主要值的Map類

paramValues將請求參數(shù)的所有值作為String數(shù)組存儲的Map類請求頭:

header按名稱存儲請求頭主要值的Map類

headerValues將請求頭的所有值作為String數(shù)組存儲的Map類Cookiecookie按名稱存儲請求附帶的cookie的Map類初始化參數(shù):

initParam按名稱存儲Web應(yīng)用程序上下文初始化參數(shù)的Map類

盡管JSP和EL隱式對象中只有一個(gè)公共對象(pageContext),但通過EL也可以訪問其它JSP隱式對象。原因是pageContext擁有訪問所有其它八個(gè)JSP隱式對象的特性。實(shí)際上,這是將它包括在EL隱式對象中的主要理由。

其余所有EL隱式對象都是映射,可以用來查找對應(yīng)于名稱的對象。前四個(gè)映射表示先前討論的各種屬性作用域?梢杂盟鼈儊聿檎姨囟ㄗ饔糜蛑械臉(biāo)識符,而不用依賴于EL在缺省情況下使用的順序查找過程。

接下來的四個(gè)映射用來獲取請求參數(shù)和請求頭的值。因?yàn)镠TTP協(xié)議允許請求參數(shù)和請求頭具有多個(gè)值,所以它們各有一對映射。每對中的第一個(gè)映射返回請求參數(shù)或頭的主要值,通常是恰巧在實(shí)際請求中首先指定的那個(gè)值。每對中第二個(gè)映射允許檢索參數(shù)或頭的所有值。這些映射中的鍵是參數(shù)或頭的名稱,但這些值是String對象的數(shù)組,其中的每個(gè)元素都是單一參數(shù)值或頭值。

cookie隱式對象提供了對由請求設(shè)置的cookie名稱的訪問。這個(gè)對象將所有與請求相關(guān)聯(lián)的cookie名稱映射到表示那些cookie特性的Cookie對象。

最后一個(gè)EL隱式對象initParam是一個(gè)映射,它儲存與Web應(yīng)用程序相關(guān)聯(lián)的所有上下文的初始化參數(shù)的名稱和值。初始化參數(shù)是通過web.xml部署描述符文件指定的,該文件位于應(yīng)用程序的WEB-INF目錄中。

3.10.3常用函數(shù)

fn:contains(string,substring)

如果參數(shù)string中包含參數(shù)substring,返回truefn:containsIgnoreCase(string,substring)

如果參數(shù)string中包含參數(shù)substring(忽略大小寫),返回truefn:endsWith(string,suffix)

如果參數(shù)string以參數(shù)suffix結(jié)尾,返回truefn:escapeXml(string)

將有特殊意義的XML(和HTML)轉(zhuǎn)換為對應(yīng)的XML實(shí)體字符,并返回轉(zhuǎn)義后的字符fn:indexOf(string,substring)

返回參數(shù)substring在參數(shù)string中第一次出現(xiàn)的位置fn:join(array,separator)

將一個(gè)給定的數(shù)組array用給定的間隔符separator串在一起,組成一個(gè)新的字符串并返回。

fn:length(item)

返回參數(shù)item中包含元素的數(shù)量。

參數(shù)Item類型是普通對象、數(shù)組、Collection、Map、Iterator迭代器、Enumeration枚舉對象、或者String。

如果是String類型,返回值是String中的字符數(shù)。如果是數(shù)組類型,返回值是數(shù)組的長度。

如果是Collection容器類的子類,返回值是該容器類的包含元素的個(gè)數(shù)。如果是Map類型,返回值是此映射中的鍵-值映射關(guān)系數(shù)。如果是Iterator類型,返回值是Iterator中的元素個(gè)數(shù)。

如果是Enumeration類型,返回值是Enumeration中的元素個(gè)數(shù)fn:replace(string,before,after)

返回一個(gè)String對象。

用參數(shù)after字符串替換參數(shù)string中所有出現(xiàn)參數(shù)before字符串的地方,并返回替換后的結(jié)果

fn:split(string,separator)

返回一個(gè)數(shù)組,以參數(shù)separator為分割符分割參數(shù)string,分割后的每一部分就是數(shù)組的一個(gè)元素

fn:startsWith(string,prefix)

如果參數(shù)string以參數(shù)prefix開頭,返回truefn:substring(string,begin,end)

返回參數(shù)string部分字符串,從參數(shù)begin開始到參數(shù)end位置,包括end位置的字符

fn:substringAfter(string,substring)

返回參數(shù)substring在參數(shù)string中后面的那一部分字符串fn:substringBefore(string,substring)

返回參數(shù)substring在參數(shù)string中前面的那一部分字符串fn:toLowerCase(string)

將參數(shù)string所有的字符變?yōu)樾,并將其返回fn:toUpperCase(string)

將參數(shù)string所有的字符變?yōu)榇髮,并將其返回fn:trim(string)

去除參數(shù)string首尾的空格,并將其返回

四、實(shí)習(xí)總結(jié)

Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,是由Sun公司于1995年5月推出的Java程序設(shè)計(jì)語言和Java平臺(即JavaSE,JavaEE,JavaME)的總稱。Java技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計(jì)算機(jī)、移動電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開發(fā)者專業(yè)社群。在全球云計(jì)算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。

在本次實(shí)習(xí)中,我們主要學(xué)習(xí)了前臺方面例如Html、js、div、css等技術(shù),后臺主要是JavaWeb方面的技術(shù),例如jsp、servlet、jstl、mvc+dao技術(shù)等等。在實(shí)習(xí)接近尾聲時(shí),每個(gè)小組都做了一個(gè)基于MVC+DAO的團(tuán)購網(wǎng)進(jìn)行答辯,以鞏固所學(xué)知識點(diǎn)。

總的來說,這次實(shí)習(xí)讓我明白了在學(xué)習(xí)過程中必須邊總結(jié)邊學(xué)習(xí),遇到一個(gè)知識點(diǎn)必須學(xué)會舉一反三。非常感謝實(shí)習(xí)的指導(dǎo)老師,在老師的幫助和指導(dǎo)下,我攻克了學(xué)習(xí)上的一道道難關(guān),課上認(rèn)真聽講,做好必要的筆記,并且通過自己課后的不斷消化學(xué)習(xí),對所學(xué)的這些知識點(diǎn)可以算是牢固掌握,并且能獨(dú)立的開發(fā)出系統(tǒng)。我相信,只要我秉持艱苦奮斗、為理想拼搏的精神,我一定可以披荊斬棘,度過重重難關(guān),實(shí)現(xiàn)自己未來的理想。

友情提示:本文中關(guān)于《北煤機(jī)實(shí)習(xí)總結(jié)》給出的范例僅供您參考拓展思維使用,北煤機(jī)實(shí)習(xí)總結(jié):該篇文章建議您自主創(chuàng)作。

來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時(shí)刪除。


北煤機(jī)實(shí)習(xí)總結(jié)》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://www.hmlawpc.com/gongwen/542086.html