毛片在线视频观看,一级日韩免费大片,在线网站黄色,澳门在线高清一级毛片

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

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

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

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

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

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

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

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

初到北煤機,公司人力資源部安排我們實習(xí)小組參觀了各個分廠車間,一天的參觀使我大體了解了北煤機各分廠的主要生產(chǎn)職能(如圖1)和主要產(chǎn)品的實現(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北煤機各分廠主要生產(chǎn)職能客戶需求分析外購件產(chǎn)品總確定產(chǎn)品設(shè)計開發(fā)評審采購原材料機械零件加工鍛造鑄造機加工熱處理電鍍機械部件組裝調(diào)試裝調(diào)試用戶驗收用戶服務(wù)鋼板下料結(jié)構(gòu)件組焊結(jié)構(gòu)件焊接注:圖中黑點代表監(jiān)測、測量或檢驗、試驗活動

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

結(jié)語

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

擴展閱讀:計機081-曾銳-實習(xí)總結(jié)報告

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

實習(xí)總結(jié)報告

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

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

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

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

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

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

2.1實習(xí)單位介紹.............................................................................................................................................12.2實習(xí)時間.....................................................................................................................................................2三、實習(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運算符...........................................................................................................................................133.4.3表達式...........................................................................................................................................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è)計模式入門.................................................................................................................................273.8可擴展標(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實現(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

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

一、實習(xí)目的

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

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

二、單位介紹

2.1實習(xí)單位介紹

思普公司成立于201*年,位于華景新城和科韻路兩大軟件園區(qū),主要從事計算機軟件研發(fā)、顧問咨詢、人力資源服務(wù),公司主要核心團隊具備十五年以上的信息服務(wù)行業(yè)的從業(yè)經(jīng)驗,對信息服務(wù)行業(yè)的業(yè)務(wù)、過程管理、開發(fā)、服務(wù)、標(biāo)準(zhǔn)等方面,具備深入的研究。行業(yè)經(jīng)驗:成長中的思普公司,從成立至今,逐步在許多重要的領(lǐng)域,充當(dāng)起重要的角色,先后參與了廣電、電信、金融、電力、交通等五大行業(yè)的項目,積累了豐富的行業(yè)經(jīng)驗和技術(shù)經(jīng)驗。公司宗旨:完善的流程制度、不斷進取的決心,追求創(chuàng)新以適應(yīng)變化的市場,使公司能為客戶帶來優(yōu)質(zhì)的服務(wù),為社會創(chuàng)造更多的價值。廣州谷度計算機科技有限公司是專門從事以軟件業(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實習(xí)時間

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

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

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

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

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

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

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

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

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

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

D:/java/jdk1.5.0_08;

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

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

5.JAVA_HOME指明JDK安裝路徑,就是剛才安裝時所選擇的路徑D:/java/jdk1.5.0_08,此路徑下包括lib,bin,jre等文件夾(此變量最好設(shè)置,因為以后運行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.“開始”->;“運行”,鍵入“cmd”;

7.鍵入命令“java-version”,“java”,“javac”幾個命令,出現(xiàn)畫面,說明環(huán)境變量配置成功;8.好了,打完收工。下面開始你的第一個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里進行設(shè)置,如

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

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

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

假設(shè)在/home/fancy/java目錄下有可運行的類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//運行HelloJavaHello,Java//運行結(jié)果[fancy@matrixjava]$_

3.2HTML基礎(chǔ)

3.2.1HTML簡述

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

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

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

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

一個網(wǎng)頁對應(yīng)于一個HTML文件,HTML文件以.htm或.html為擴展名。可以使用任何能夠生成TXT類型源文件的文本編輯來產(chǎn)生HTML文件。

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

3.2.2HTML示例

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

Titleofpage

Thisismyfirsthomepage.Thistextisbold示例解釋:

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

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

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

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

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

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

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

3.3CSS基礎(chǔ)

3.3.1CSS簡述

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

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

為什么叫層疊?

在頁面顯示的過程中,有很多的樣式作用在頁面元素上,這些樣式來自不同的地方。瀏覽器自己有默認(rèn)的樣式,網(wǎng)頁作者有自己寫的樣式,用戶也可能有自己的樣式,但是最終顯示的樣式是其中之一,它們之間產(chǎn)生了沖突,CSS通過一個稱為層疊(cascade)的過程處理這種沖突。層疊給每個規(guī)則分配一個重要度:作者的樣式表被認(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ī)則。如果兩個規(guī)則的特殊性相同,那么后定義的規(guī)則優(yōu)先。

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

3.3.2CSS語法

3.3.2.1CSS定義

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

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

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

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

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

3.3.2.2選擇符組

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

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

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

3.3.2.3類選擇符

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

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

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

3.3.2.4ID選擇符

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

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

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

#intro{

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

background-color:transparent

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

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

3.3.2.5包含選擇符

可以單獨對某種元素包含關(guān)系定義的樣式表,元素1里包含元素2,這種方式只對在元素1里的元素2定義,對單獨的元素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ī)則是外部的元素樣式會保留下來繼承給這個元素所

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

這個段落的文字為紅色9號字

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

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

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

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

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

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

3.3.2.7注釋:/*...*/

可以在CSS中插入注釋來說明你代碼的意思,注釋有利于你或別人以后編輯和更改代碼時理解代碼的含義。在瀏覽器中,注釋是不顯示的。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)記之間插入一個...塊對象。示例如下:

文檔標(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)備了特定的工具,我們稱之為“偽類”。其中有幾項是我們經(jīng)常用到的,下面我們就詳細(xì)介紹一下經(jīng)常用于定義鏈接樣式的四個偽類,它們分別是:

:link

:visited:hover:active

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

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

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

示例:

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)

此方法與鏈入外部樣式的功能基本相同,只是語法和實現(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)時服務(wù)端需要對數(shù)據(jù)進行驗證,由于網(wǎng)絡(luò)速度相當(dāng)緩慢,只有28.8kbps,驗證步驟浪費的時間太多。于是Netscape的瀏覽器Navigator加入了JavaScript,提供了數(shù)據(jù)驗證的基本功能。

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

3.4.2運算符

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

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

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

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

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

3.4.3表達式

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

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

以下幾點:

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

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

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

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

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

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

函數(shù)表達式:

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

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

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

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

3.4.6對象

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

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

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

3.4.7事件

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

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

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

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

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

3.4.8變量

如varmyVariable="somevalue";

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

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

實際上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è)計和顯示分離,支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。

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

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

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

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

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

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

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

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

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

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

3.5.3.1request對象

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

下面介紹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對象是一個JSP內(nèi)置對象,它在第一個JSP頁面被裝載時自動創(chuàng)建,完成會話期管理。

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

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

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

3.5.3.4application對象

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

application對象常用方法:

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

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

3.5.3.5out對象

out對象用于輸出數(shù)據(jù),它可以是javax.servlet.jsp.JspWriter的一個實例.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ū)溢出的情況時,這個類的所有I/O操作會自動清空緩沖區(qū)的內(nèi)容.如果autoflush="false",那么當(dāng)操作造成了緩沖區(qū)溢出時,這個類的所有的I/O操作將拋出一個IOException。

3.5.3.6page對象

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

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

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

3.jsp頁面所用到的類。

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

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

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

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

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

3.5.3.7config對象

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

1)getServletContext()

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

2)getInitParameter(Stringname)

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

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

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

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

3.5.3.8exception對象

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

方法說明:

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

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

3.5.3.9pageContext對象

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

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

3.5.4JSP四種屬性范圍

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

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

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

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

publicObjectgetAttribute(Stringname)

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

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

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

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

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

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

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

1,

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

2,response.sendRedirect("地址")

客戶端跳轉(zhuǎn),地址欄改變;所有代碼執(zhí)行完畢后再跳轉(zhuǎn);不能保存request屬性,因為地址改變了。使用客戶端跳轉(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)用程序,具有獨立于平臺和協(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ù)器進行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機。

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

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

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的包。因為是對象字節(jié)碼,可動態(tài)地從網(wǎng)絡(luò)加載,可以說Servlet對Server就如同Applet對Client一樣,但是,由于Servlet運行于Server中,它們并不需要一個圖形用戶界面。從這個角度講,Servlet也被稱為FacelessObject。

一個servlet就是Java編程語言中的一個類,它被用來擴展服務(wù)器的性能,服務(wù)器上駐留著可以通過“請求-響應(yīng)”編程模型來訪問的應(yīng)用程序。雖然servlet可以對任何類型的請求產(chǎn)生響應(yīng),但通常只用來擴展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)建兩個對象:HttpServletRequest和HttpServletResponse;

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

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ā)回給客戶,同時刪除請求和響應(yīng)對象。

從該過程中,我們可以理解Servlet的生命周期:Servlet類加載(對應(yīng)3步);Servlet實例化(對應(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使用一個HTML表單來發(fā)送和接收數(shù)據(jù)。要創(chuàng)建一個HttpServlet,請擴展HttpServlet類,該類是用專門的方法來處理HTML表單的GenericServlet的一個子類。HTML表單是由和標(biāo)記定義的。表單中典型地包含輸入字段(如文本輸入字段、復(fù)選框、單選按鈕和選擇列表)和用于提交數(shù)據(jù)的按鈕。當(dāng)提交信息時,它們還指定服務(wù)器應(yīng)執(zhí)行哪一個Servlet(或其它的程序)。HttpServlet類包含init()、destroy()、service()等方法。其中init()和destroy()方法是繼承的。

(1)init()方法

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

缺省的init()方法通常是符合要求的,但也可以用定制init()方法來覆蓋它,典型的是管理服務(wù)器端資源。例如,可能編寫一個定制init()來只用于一次裝入GIF圖像,改進Servlet返回GIF圖像和含有多個客戶機請求的性能。另一個示例是初始化數(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)一個客戶請求一個HttpServlet對象,該對象的service()方法就要被調(diào)用,而且傳遞給這個方法一個"請求"(ServletRequest)對象和一個"響應(yīng)"(ServletResponse)對象作為參數(shù)。在HttpServlet中已存在service()方法。缺省的服務(wù)功能是調(diào)用與HTTP請求的方法相應(yīng)的do功能。例如,如果HTTP請求方法為GET,則缺省情況下就調(diào)用doGet()。Servlet應(yīng)該為Servlet支持的HTTP方法覆蓋do功能。因為HttpServlet.service()方法會檢查請求方法是否調(diào)用了適當(dāng)?shù)奶幚矸椒,不必要覆蓋service()方法。只需覆蓋相應(yīng)的do方法就可以了。

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

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

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

(4)doPost()方法

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

(5)destroy()方法

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

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

(6)GetServletConfig()方法

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

(7)GetServletInfo()方法

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

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

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

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

HttpServletRequest

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

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

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

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

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

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

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

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

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

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

3.8.1XML簡介

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

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

XML與HTML的設(shè)計區(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),同時它也常用于編寫XML的DTD。SGML的問題就在于,它允許出現(xiàn)一些奇怪的語法,這讓創(chuàng)建HTML的解析器成為一個大難題:

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

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定義特性的兩邊有沒有加上雙引號都是可以的,所以和都是允許的。

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

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

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

2可以采用另一種簡化語法,可以在一個標(biāo)簽中同時表示起始和結(jié)束標(biāo)簽。這種語法是在大于符號之前緊跟一個斜線(/),例如。XML解析器會將其翻譯成。3標(biāo)簽必須按合適的順序進行嵌套,所以結(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é)點或信息片斷的集合。這個層次結(jié)構(gòu)允許開發(fā)人員在樹中尋找特定信息。分析該結(jié)構(gòu)通常需要加載整個文檔和構(gòu)造層次結(jié)構(gòu),然后才能做任何工作。由于它是基于信息層次的,因而dom被認(rèn)為是基于樹或基于對象的。dom以及廣義的基于樹的處理具有幾個優(yōu)點。首先,由于樹在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對數(shù)據(jù)和結(jié)構(gòu)作出更改。它還可以在任何時候在樹中上下導(dǎo)航,而不是像sax那樣是一次性的處理。dom使用起來也要簡單得多。

2)sax

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

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

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

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

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

3)jdom()

jdom的目的是成為java特定文檔模型,它簡化與xml的交互并且比使用dom實現(xiàn)更快。由于是第一個java特定模型,jdom一直得到大力推廣和促進。正在考慮通過“java規(guī)范請求jsr-102”將它最終用作“java標(biāo)準(zhǔn)擴展”。從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以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學(xué)習(xí)dom或jdom接口都更有意義的工作。

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

4)dom4j()

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

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

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

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

3.8.3.2比較

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

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

3)sax表現(xiàn)較好,這要依賴于它特定的解析方式-事件驅(qū)動。一個sax檢測即將到來的xml流,但并沒有載入到內(nèi)存(當(dāng)然當(dāng)xml流被讀入時,會有部分文檔暫時隱藏在內(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("運行時間:"+(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)建更好更快以及交互性更強的Web應(yīng)用程序的技術(shù)。

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

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

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

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

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

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

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

如名字所示,Ajax的概念中最重要而最易被忽視的是它也是一種JavaScript編程語言。JavaScript是一種粘合劑使Ajax應(yīng)用的各部分集成在一起。在大部分時間,JavaScript通常被服務(wù)端開發(fā)人員認(rèn)為是一種企業(yè)級應(yīng)用不需要使用的東西應(yīng)該盡力避免。這種觀點來自以前編寫JavaScript代碼的經(jīng)歷:繁雜而又易出錯的語言。類似的,它也被認(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è)計的機制。雖然CSS在Ajax應(yīng)用中扮演至關(guān)重要的角色,但它也是構(gòu)建跨瀏覽器應(yīng)用的一大阻礙,因為不同的瀏覽器廠商支持各種不同的CSS級別。

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

3.9.2Ajax實現(xiàn)

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

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

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

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

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

這需要告訴HTTP請求對象用哪一個JavaScript函數(shù)處理這個響應(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)一個完整的服務(wù)器響應(yīng)已經(jīng)收到了,函數(shù)才可以處理該響應(yīng)。XMLHttpRequest提供了readyState屬性來對服務(wù)器響應(yīng)進行判斷。readyState的取值如下:0(未初始化)1(正在裝載)2(裝載完畢)3(交互中)4(完成)

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

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

當(dāng)readyState=4時,一個完整的服務(wù)器響應(yīng)已經(jīng)收到了,接著,函數(shù)會檢查HTTP服務(wù)器響應(yīng)的狀態(tài)值。完整的狀態(tài)取值可參見W3C文檔。當(dāng)HTTP服務(wù)器響應(yīng)的值為200時,表示狀態(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)點:更迅捷的響應(yīng)速度

傳統(tǒng)的web應(yīng)用允許用戶填寫表單(form),當(dāng)提交表單時就向web服務(wù)器發(fā)送一個請求。服務(wù)器接收并處理傳來的表單,然後返回一個新的網(wǎng)頁。這個做法浪費了許多帶寬,因為在前後兩個頁面中的大部分HTML代碼往往是相同的。由于每次應(yīng)用的交互都需要向服務(wù)器發(fā)送請求,應(yīng)用的響應(yīng)時間就依賴于服務(wù)器的響應(yīng)時間。這導(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)用。同時很多的處理工作可以在發(fā)出請求的客戶端機器上完成,所以Web服務(wù)器的處理時間也減少了。

使用Ajax的最大優(yōu)點,就是能在不更新整個頁面的前提下維護數(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è)計的技術(shù),為那些不支持JavaScript的用戶提供替代功能。

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

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

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

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

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

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

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

Ajax是以異步的方式向服務(wù)器提交需求。對服務(wù)器而言,其與傳統(tǒng)的提交窗體需求并無不同,而且由于是以異步之方式提交,如果同時有多個Ajax需求及窗體提交需求,將無法保證哪一個需求先獲得服務(wù)器的響應(yīng)。這會造成應(yīng)用程序典型的多進程(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)是一個實現(xiàn)Web應(yīng)用程序中常見的通用功能的定制標(biāo)記庫集,這些功能包括迭代和條件判斷、數(shù)據(jù)管理格式化、XML操作以及數(shù)據(jù)庫訪問。在developerWorks上其新系列的第一篇文章中,軟件工程師MarkKolb展示了如何使用JSTL標(biāo)記來避免在JSP頁面中使用腳本編制元素,如何通過從表示層刪除源代碼來簡化軟件維護。JSTL經(jīng)過簡化的表達式語言,它允許在不必使用功能齊全的編程語言的情況下對JSTL操作指定動態(tài)屬性值。

JavaServerPages(JSP)是用于J2EE平臺的標(biāo)準(zhǔn)表示層技術(shù)。JSP技術(shù)提供了用于執(zhí)行計算(這些計算用來動態(tài)地生成頁面內(nèi)容)的腳本編制元素和操作。腳本編制元素允許在JSP頁面中包括程序源代碼,在為響應(yīng)用戶請求而呈現(xiàn)頁面時可以執(zhí)行這些源代碼。操作將計算操作封裝到很象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)記庫實現(xiàn)大量服務(wù)器端Java應(yīng)用程序常用的基本功能。通過為典型表示層任務(wù)(如數(shù)據(jù)格式化和迭代或條件內(nèi)容)提供標(biāo)準(zhǔn)實現(xiàn),JSTL使JSP作者可以專注于特定于應(yīng)用程序的開發(fā)需求,而不是為這些通用操作“另起爐灶”。

3.10.2JSTL隱式對象

JSP:

pageContextPageContext實例對應(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隱式對象中只有一個公共對象(pageContext),但通過EL也可以訪問其它JSP隱式對象。原因是pageContext擁有訪問所有其它八個JSP隱式對象的特性。實際上,這是將它包括在EL隱式對象中的主要理由。

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

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

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

最后一個EL隱式對象initParam是一個映射,它儲存與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實體字符,并返回轉(zhuǎn)義后的字符fn:indexOf(string,substring)

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

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

fn:length(item)

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

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

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

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

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

返回一個String對象。

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

fn:split(string,separator)

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

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)樾懀⑵浞祷豧n:toUpperCase(string)

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

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

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

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

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

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

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

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


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