1. Spring boot-創建Tomcat
Spring boot實例化的context是一個對象,該類的類圖如下:
從類圖中可以知道,該類直接繼承自類,在Spring boot進入fresh階段時,會執行到onRefresh方法,創建Tomcat實例就是在此業務邏輯中,onFresh方法有兩個處理,1)初始化主題功能。2)創建Tomcat。
表示一個完全配置世返的web伺服器(如:Tomcat,Jetty, Netty)的簡單介面,允許伺服器啟動和停止,介面簽名如下
該介面的實現類有JettyWebServer、NettyWebServer、TomcatWebServer、UndertowServletWebServer、UndertowWebServer。這里使用的是抽象工廠設計模式。
可用於創建WebServer的工廠介面,該介面搜毀飢的簽名如下:
其實現類有、JettyServletWebServerFactory、TomcatServletWebServerFactory、、。
servlet web伺服器的配置類,它們應該是常規自動配余尺置類中的@Import,以保證它們的執行順序。
2. 使用PowerDesigner 9.5創建Web服務
Web服務允許您以標准格式提供現有的或新增的功能 並且允許用戶和應用程序從任何位置訪問它們
PowerDesigner 同時針對Microsoft NET和Java引入了完善的Web服務設計和生成機制 使用PowerDesigner 您可以專注於Web服務的設計 而將所有必需的生成 實現構造的任務交給PowerDesigner完成
一 Web服務概述 Web服務是一種介面 它描述了在網路上可通過SOAP消息進行訪問的操作集合
Web 服務的介面和部署位置(可選)由WSDL說明 WSDL是一種聲明數據類型 消息 埠類型和埠(可選)的XML文檔 通過WSDL 用戶可以知道應該發送哪種格式的SOAP消息來調用Web服務以及返回消息的格式為何
為了能使用戶查找到所需的Web服務 服務提供者可能會在UDDI注冊服務中發布WSDL文檔 這樣 用戶就可以使用UDDI注冊服務來搜索Web服務
若要調用Web服務 用戶可以向部署Web服務時所在的訪問點URL發送SOAP消息 或者使用可簡化此調用過程的代理類 SOAP消息也是XML文檔
二 PowerDesigner的Web服務功能 PowerDesigner 允許您新建Web服務組件 通過對WSDL進行反向工程來創建Web服務組件 瀏覽UDDI 搜索WSDL 從Web服務組件的定義生成WSDL 生成 NET(C#和VB NET)的伺服器端代碼 生成 NET的客戶端代理 生成Java(JAX RPC和JAXM)的伺服器端代碼以及生成Java的客戶端代理
為了設計Web服務組件 PowerDesigner使用了UML類圖 組件圖和部署圖 Web服務由組件圖的組件表示 而已部署的Web服務則由部署圖的組件實例來表示
三 創建Web服務組件 創建Web服務組件有五個步驟 首先是要創建面向對象模型(OOM) 您可以選用以下語言中的任一種 C# Visual Basic NET或Java 在此模型上會自動附加用於WSDL的擴展模型定義(XEM) XEM定義了WSDL的生成模板和擴展屬性
第二步是創建類 最好是先創建一個程序組(Package) 然後再在此程序組下創建類
第三步是使用Web服務向導將創建的類轉換成Web服務組件 為此您可以右鍵單擊該類 然後選擇 創建Web服務組件 命令 或在選中該類後選擇 工具>創建Web服務組件 命令 圖 顯示了一個Web服務向導的示例 Web服務類型可以是介面或實現 如果選擇 介面 則表明您只希望定義此Web組件並生成相應的WSDL 對於 NET 此組件類型為 標准 其Web服務將通過 a *** x文件來實現 對於Java 此組件類型可能是 標准 服務程序 或 無狀態會話 Bean 這幾種Java組件類型的實現方法分別是 標准 類型使用JAX RPC 服務程序 類型使用JAXM 而 無狀態會話 Bean 類型將使用J EE(JSR )Web服務規范 當向導結束時會創建一個組件和類 圖 顯示了組件圖中的組件符號示例
圖 Web 服務向導
圖 組件符號
第四步是添加Web方法 您需要新建一個操作(Operation) 打開該操作的屬性頁 單擊 Web 方法 復選框 定義參數和返回類型以及編寫該操作的實現代碼 圖 顯示了Web方法GetStockQuote的實現示例
圖 Web方法GetStockQuote的實現示例
最後一步是對WSDL生成進行自定義 可以自定義參數和返回值的WSDL數據類型 操作的擴展屬性以及組件的屬性和擴展屬性 若要檢驗生成的WSDL 您可以打開組件屬性頁的WSDL選項卡 生成WSDL的任務可以交給PowerDesigner完成 也可以由您自行定義(用戶定義) 如果Web服務組件來源於對WSDL的反向工程 原始的WSDL將得到保留 圖 顯示了一個生成的WSDL的示例
圖 生成的WSDL的示例
您可以在類屬性頁的 預覽 選項卡中預覽生成的實現代碼 您可以使用部署圖 節點和組件實例來仿建已經部署的Web服務組件 此外 還可以在 節點 中定義伺服器的URL以及在 組件實例 中定義服務的URL
四 對WSDL進行反向工程 WSDL可以僅定義Web服務介面 也可以同時定義介面和訪問點的URL Web服務介面可能被多個服務提供者用來提供相同的服務 當然 這些服務會具有不同的實現和訪問點 如果擁有WSDL文檔的文件路徑或URL 您就可以通過對它進行反向工程來創建Web服務組件 之後可以定義自己的實現方法或將創建的Web服務組件保存在庫中供以後再次使用 您在查找感興趣的WSDL時 可以使用UDDI瀏覽器在UDDI注冊服務中進行搜索
為了對WSDL進行反向工程 需要用C# VB NET或Java中的任意一種語言創建OOM 然後選擇 語言>導入 WSDL 命令並輸入WSDL文件的路徑或URL 進行反向工程之後 會在組件圖中創建一個組件 同時在類圖中創建一個類 所創建的類將僅包含該Web服務的操作信號 若想實現該Web服務 還需要定義這些操作的實現代碼
在UDDI注冊服務中搜索WSDL 如果希望搜索在UDDI注冊服務中注冊的WSDL 請打開 導入WSDL 窗口 然後單擊 瀏覽UDDI 按鈕 通過 瀏覽 UDDI 窗口(見圖 ) 您可以選擇UDDI運營商 搜索條件和搜索類型 並可以按實體名稱 服務名稱或WSDL名稱進行搜索 此外 您還可以預覽找到的WSDL
圖 瀏覽UDDI 窗口
五 生成 NET類型的Web服務 對於 NET伺服器端代碼 PowerDesigner會生成一個 a *** x文件 這種Web服務的實現類可以在上述的 a *** x文件中生成 也可以在外部生成 此實現類所使用的語言可以是C#或者VB NET 在類屬性頁的 預覽 選項卡中 可以預覽 a *** x文件和相應的實現類代碼 圖 顯示了C#語言的 a *** x文件示例
圖 C#語言的 a *** x文件示例
PowerDesigner還可以生成客戶端代理類來簡化Web服務的調用 為生成客戶端代理類 PowerDesigner使用了Visual Studio NET附帶的wsdl exe程序
若要生成WSDL 伺服器端代碼和/或客戶端代理 請選擇 語言>生成C#代碼 或 語言>生成VB NET代碼 命令 如果要生成客戶端代理 可以在 任務 選項卡中選擇 生成Web服務客戶端代理 選項 圖 顯示了可用的生成任務 如果這個類不是在 a *** x文件內部生成的 您將可以對這些C#代碼或VB NET代碼進行編譯 不過 在編譯C#或VB NET文件時 您必須定義CSC或VBC變數來指示csc exe或vbc exe命令的位置
在部署Web服務時 只需要將IIS目錄下的 a *** x文件和相應的類文件進行復制 C:Inetpub oot<程序組名> 其中 <程序組名> 是程序組的名稱 要測試此Web服務 可以在瀏覽器中輸入以下URL //<主機名>/<程序組名>/<服務名> a *** x
圖 Web服務的生成任務
六 生成Java類型的Web服務 如果Web服務的實現類型為 標准 PowerDesigner將使用JAX RP 來實現 如果實現類型為 服務程序 PowerDesigner將使用JAXM來實現 如果實現類型為 無狀態會話Bean 則PowerDesigner將使用J EE(JSR )Web服務規范來實現 JSR 尚未正式頒布
JAX RPC定義了RPC類型的Web服務調用 雖然它易於開發和使用 但為了避免復雜的對象/XML映射 它只能局限於簡單的消息格式 而基於JAXM的Web服務組件顯然更具優越性 它允許您靈活地處理復雜的消息結構
若要使用JAX RPC或JAXM 您需要安裝Java Web Services Developer Pack(JWSDP) 此程序包可從Sun公司的網站下載 在部署JAX RPC或JAXM類型的Web服務組件時 需要有支持JAX RPC或JAXM的伺服器 支持JAX RPC或JAXM的Apache Tomcat附帶提供了JWSDP
至於基於JAX RPC的Web服務組件 您只需實現其Web方法的代碼 若要生成WSDL 伺服器端代碼和/或客戶端代理 可選擇 語言>生成Java代碼 然後選擇 使用XRPCC工具生成WSDL(伺服器端) 和/或 使用XRPCC工具生成Web服務的代理代碼 命令(見圖 ) XRPCC命令是JWSDP的一個工具 它可以生成JAX RPC類型的伺服器端代碼或客戶端代理 在部署生成的Web服務時 需要創建一個包含所有生成文件的 WAR文件 並將此 WAR文件部署在支持JAX RPC的伺服器上 比如說Apache Tomcat
圖 JAX RPC生成任務
對基於JAXM的Web服務組件而言 您需要實現其onMessage操作 onMessage操作將按照在WSDL中的指示 接收並處理輸入的SOAP消息並構建返回消息 以及將此消息返回 要生成WSDL和JAXM類型的Web服務 請選擇 語言>生成Java代碼 命令 然後選擇 構建Web組件 創建Web應用程序WAR 命令(見圖 ) 該命令會對JAXM服務程序代碼進行編譯並創建WAR文件 要部署此JAXM服務程序 您可以將上述WAR文件部署在支持JAXM的伺服器上 比如說Apache Tomcat
圖 JAXM生成任務
至於基於無狀態會話Bean的Web服務組件 由於JSR 規范尚未正式頒布 因此目前還不能使用
七 下一步要增強的功能 J EE(JSR )Web服務規范不久將面世 供人們使用 通過它 您可以將無狀態會話Bean用作Web服務實現的利器 它可以讓現有功能以Web服務的新面目出現 同時也可以新建Web服務 PowerDesigner 附帶提供了基於早期JSR 規范的版本 該版本尚待進一步的認證 等該規范正式頒布後 我們將提供維護版本以實現對它的完全支持
PowerDesigner的新版本還將支持Web服務的綜合標准
lishixin/Article/program/SQL/201311/16374
3. Web開發需不需要UML,軟體工程
Web技術的發展,使得管理系統的開發更方便、功能更強大,在此系統的開發過程中,Web技術起了一個骨架式的支持作用;與此同時組件技術的發展為系統的開放性、集成性提供了便利,有效合理地引入組件技術是當前Web系統開發與發展的一個方向;通過對系統的開發進行建模,形象直觀的圖形化表示,可以顯示系統的流程與功能。選擇有效的建模方法,充分利用Web技術與組件技術,提高軟體的開發效率,提高的軟體的可靠性和可維護性,是每個軟體開發人員所關心的問題。
UML(Unified Modeling Language)是基於對象技術的標准建模語言,定義良好、易於表達、功能強大的特點使它在面向對象的分析與設計中更具優勢。在基於Web技術和組件技術的系統建模中,它完善的組件建模思想和可視化建模的優勢更利於系統開發人員理解程序流程和功能,進一步提高Web系統的開發效率以及Web組件的可重用性和可修復性。
本文將結合我們自主開發的活塞PDM系統中的項目審批流程的建模,介紹UML在基於WEB技術和組件技術的系統建模中的應用。
2、基於Web的應用系統結構
對於基於Web技術的應用系統,用戶直接面對的是客戶端瀏覽器,用戶在使用系統時,請求之後的事務邏輯處理和數據的邏輯運算由伺服器與資料庫系統共同完成,對用戶而言是完全透明的。運算後得到的結果再通過瀏覽器的方式返回給用戶。這個過程可分成一些子步驟,每一個子步驟的完成可理解為通過一個單獨的應用伺服器來處理,這些應用伺服器在最終得到用戶所需的結論之前,相互之間還會進行一定的數據交流和傳遞。圖1就是Web的應用結構簡圖。
隨著Web應用技術的發展,對Web數據流程的解釋上還會有相應的改進或補充。
3、Web應用系統的UML建模方法
頁面、腳本、表單和框架是Web應用系統的關鍵部分,數據流程的模型化表示關鍵就是用UML對上述Web元素應用及其關系建模,下面對這幾種元素的模型化表示作一個簡要介紹。
(1)頁面建模。用戶在使用Web應用系統時,是通過頁面進行系統的操作。在頁面建模中可用兩個類別模板《Client Page》和《Sever Page》分別表示客戶端頁面和伺服器端頁面。客戶端頁面的屬性是頁的作用域中定義的變數,方法是頁面腳本中的函數;伺服器頁面的屬性是頁面腳本中的變數,方法是腳本中定義的函數。在使用頁面信息傳遞時,還可能出現伺服器頁面的重定向,在UML建模中,用類別模板《redirect》來表示;對於客戶端頁面和伺服器頁面的構造關聯用類別模板《bulid》表示,這種關聯是一種單向關聯,由伺服器頁面指向客戶端頁面,具體表示如圖2所示。
在Web應用系統中,還會經常用到的就是超級鏈接,在UML建模中,用類別模板《link》表示超級鏈接,它的參數模擬為鏈接屬性。
(2)表單建模。用戶的要求一般通過表單與資料庫交互。在UML建模中,表單用類別模板《form》表示,屬性是表單中的域,表單沒有方法。表單在處理請求時,要與Web頁面交流數據,這個交流過程是用提交按鈕submit來完成,為了在建模中表示這種關系,用類別模板《submit》表示。
(3)組件建模。在使用組件技術的Web應用系統建模中,對組件的建模是個重要環節,在UML基本的圖形化建模元素中,設立了專門的組件圖。組件在使用過程中,同樣的分成了客戶端組件(如Java Applet,ActiveX控制項)和伺服器端組件。在系統的UML模型化表示中,用類別模板《Client Component》表示客戶端組件,用《Sever Component》表示伺服器端組件。
(4)框架建模。框架通過定義類別模板元素《frameset》來實現,frameset指定並命名各個框架,每個框架容納一個頁面;框架的使用還涉及到目標target,建模時用《target》來表示。
4、UML在活塞PDM系統建模中的運用
活塞PDM系統是在傳統PDM系統的基礎上,引入了組件技術和Web技術,對數據流程的處理更趨於簡易性和方便性。在對該系統的建模過程中,要體現整個系統前台與後台間數據交互的流程。在設計時,主要是考慮設計它的class diagram(類圖)和component diagram(組件圖),用這兩類模型圖來體現UML的用例驅動和系統組件結構的特性。由於在系統的開發中採用了模塊化的設計方法,因此在構劃模型圖時,採用了先整體後局部的思路,首先考慮整個系統的案例圖,再對子模塊進行分析和設計,在每個子模塊數據流的入口和出口設置模型圖間數據交互的介面。下面以活塞PDM系統中項目審批流程子模塊的建模為例說明UML在此系統建模中的應用。
4.1 項目審批流程
項目審批是項目管理流程的一部分,功能就是實現審批過程和數據傳遞的自動進行,取消了傳統審批流程中大量紙質文件的使用。下面以活塞新產品開發的項目審批為例來說明UML對項目審批流程的建模方法。
活塞新產品開發的項目審批過程有7個環節組成,分別是項目申請、組織評審、制定實施方案、技術委員會及專家委員會評審、技術副總審核、總經理審核和董事會審核。通過這七個環節來決定一個項目實施的可行性或者合理性。
審批過程自動化的實現方法,是在Web技術和組件技術的基礎上,對每一個環節設置了評審狀態tag。當tag=1時,表明項目已通過該環節評審,可進入下步評審;當tag=0時,表明項目還未經過評審,或者未通過評審,需要返回去修改項目運行的可行性研究,等待再一次的評審。同時在每個環節進行評審時,還要考慮該項目是否已進入了下一級評審,如若項目已進行了下一級的評審,這時該環節的操作人員都無權再對該環節所填寫的評審意見進行編輯。也就是在對每個環節進行維護時,還要考慮下一級的評審狀態。
在建模之前,首先看一下項目審批流程圖,如圖3所示。
除了這七個審批環節,為了讓用戶及時了解交叉投入生產的項目審批或進展情況,提供了項目瀏覽功能,用戶按照管理員所授予的許可權,在許可權范圍內並且利用項目瀏覽子模塊中提供的關鍵欄位、項目評審狀態或者進展狀態進行分類檢索。
在項目評審流程的每個環節,一般設置了兩部分功能需求,即填寫該環節評審的內容、編輯該環節評審的內容。
比如總經理評審環節,它的功能設置如圖4所示。
為了實現網上審批的自動化,在整個流程的環節功能設置時,遵照了如下的規則要求:在每個環節的查看已填評審內容時,列出的項目都是正在等待進入該環節評審的項目,而不屬於這種情形的項目在此環節中是顯示不出來的;同樣,對於在編輯此環節評審內容上,已經進行了下一級評審的項目也是不可能列出的,每個環節的負責人只可以對此環節以前的評審內容具有瀏覽功能,而不具備編輯功能。如果要查看整個項目的評審狀況,在管理員授予項目瀏覽功能的許可權下,通過項目瀏覽一項完成。
整個流程所包括的各個環節,在功能設置上是類似的,差異是評審環節在整個評審流程中所處的位置。在進行UML建模時採用了把這些環節分開的方法,先對每個環節建模,最後再把單個的環節模型圖整合成一個完整流程的模型圖。由於篇幅所限,下面以總經理評審的環節為例說明UML的建模方法。
4.2 總經理評審的類圖(Class Diagram)
在項目審批流程中,設計了總經理審核環節的Class Diagram,如圖(5)、圖(6)、圖(7)所示。圖(6)和圖(7)是圖(5)的延續。該類圖顯示了總經理審核環節中各個頁面之間的關系。為簡化,在此類圖中沒有列出各個類的屬性和方法。整個類圖實現了查看已填寫評審內容、填寫總經理評審內容和編輯評審內容。
4.3 總經理評審的組件圖(Component Diagram)
組件圖是分析該環節所涉及的功能是如何實現的,這部分與具體的編碼工作相關。總經理評審環節的模塊組件圖如圖(8)所示。
4.4 由模型圖到代碼的轉換
類圖和組件圖說明了在基於Web技術的信息交互流程,頁面的超級鏈接和頁間的重新導向在JSP代碼設計中,由模型圖就可以掌握它們之間交互的邏輯,這樣使程序編寫更富條理性和方便性。在實際工作中,可以設置為CRC卡,方便編程人員的使用。如若再比較詳細地設計出對象圖和順序圖,對於整個系統的類定義和方法設置,會提供更大的方便。
5、結束語
建模對系統的開發過程中起著很重要的作用,在系統的開發和維護中有必要建立系統的模型。UML是一種圖示化的面向對象建模語言,它形象直觀、應用廣泛,並對Web技術和組件技術在系統開發中的建模方法有了比較合理有效的定義。在UML提供的各種模型圖的基礎上,還可以依照所有開發技術的特點對它的表示進行擴展,在本文的建模中就是用了UML的類別模塊擴充機制,為某些模型元素添加新的語義,構造新的模型,來說明開發過程中的隱含特性。
通過利用UML建模,對基於Web的PDM系統中的項目審批流程進行了分析和設計,對整個流程的功能有了一個清晰的認識,利於開發人員對系統的開發與維護,同時可為系統的升級或者二次開發提供一個理論依據。
4. 基於web的坑窪跟蹤和修復系統類圖怎麼畫
1、確認網站架構圖中的關鍵要素(比如產品、技術、服務),梳理關鍵要素之間的關聯:包含、支撐、同級並列等。
2、打開億圖圖示,依次選擇「新建>軟體>程序架構圖」,新建一張空白畫布。
3、從左側符號庫選擇合適圖形拖放到畫布,億圖圖示支持圖形縮放、顏色歷握填充、線條調整等操作。
4、根據最開始的梳理,對關鍵要素(比如產品、技術、服務慶數)進行信息標譽爛首注、顏色填充等。
5. 簡歷上的項目描述(JAVA)怎麼寫
想要成為合格的Java程序員或工程師到底需要具備哪些專業技能,面試者在面試之前到底需要准備哪些東西呢?本文陳列的這些內容既可以作為個人簡歷中的內容,也可以作為面試的時候跟面試官聊的東西,你可以把這些內容寫到你的簡歷中,當然更需要的是你在面試的時候向面試官展示這些專業技能。相信此文對正在尋覓Java程序員(Java工程師)職位的freshman以及希望成為中高級Java開發者的junior都會有所幫助。
專業技能
1.熟練的使用Java語言進行面向對象程序設計,有良好的編程習慣,熟悉常用的JavaAPI,包括集合框架、多線程(並發編程)、I/O(NIO)、Socket、JDBC、XML、反射等。
2.熟悉基於JSP和Servlet的JavaWeb開發,對Servlet和JSP的工作原理和生命周期有深入了解,熟練的使用JSTL和EL編寫無腳本動態頁面,有使用監聽器、過濾器等Web組件以及MVC架構模式進行JavaWeb項目開發的經驗。
3.對Spring的IoC容器和AOP原理有深入了解,熟練的運用Spring框架管理各種Web組件及其依賴關系,熟練的使用Spring進行事務、日誌、安全性等的管理,有使用SpringMVC作為表示層技術以及使用Spring提供的持久化支持進行Web項目開發的經驗,熟悉Spring對其他框架的整合。
4.熟練的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,對Hibernate的關聯映射、繼承映射、組件映射、緩存機制、事務管理以及性能調優等有深入的理解。
5.熟練的使用HTML、CSS和JavaScript進行Web前端開發,熟悉jQuery和Bootstrap,對Ajax技術在Web項目中的應用有深入理解,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)進行項目開發的經驗。
6.熟悉常用的關系型資料庫產品(MySQL、Oracle),熟練的使用SQL和PL/SQL進行資料庫編程。
7.熟悉面向對象的設計原則,對GoF設計模式和企業應用架構模式有深入的了解和實際開發的相關經驗,熟練的使用UML進行面向對象的分析和設計,有TDD(測試驅動開發)和DDD(領域驅動設計)的經驗。
8.熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web伺服器和應用伺服器的使用,熟悉多種伺服器整合、集群和負載均衡的配置。
9.熟練的使用產品原型工具Axure,熟練的使用設計建模工具PowerDesigner和EnterpriseArchitect,熟練的使用Java開發環境Eclipse和IntelliJ,熟練的使用前端開發環境WebStorm,熟練的使用軟體版本控制工具SVN和Git,熟練的使用項目構建和管理工具Maven和Gradle。
說明:上面羅列的這些東西並不是每一項你都要爛熟於心,根據企業招聘的具體要求可以做相應的有針對性的准備。我個人覺得前6項應該是最低要求,是作為一個Java開發者必須要具備的專業技能
項目介紹
本系統是X委託Y開發的用於Z的系統,系統包括A、B、C、D等模塊。系統使用了Java企業級開發的開源框架E以及前端技術F。表示層運用了G架構,使用H作為視圖I作為控制器並實現了REST風格的請求;業務邏輯層運用了J模式,並通過K實現事務、日誌和安全性等功能,通過L實現緩存服務;持久層使用了M封裝CRUD操作,底層使用N實現數據存取。整個項目採用了P開發模型。
說明:上面的描述中,E通常指Spring(Java企業級開發的一站式選擇);F最有可能是jQuery庫及其插件或者是Bootstrap框架,當然如果要構建單頁應用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars);G顯然是MVC(模型-視圖-控制),最有可能的實現框架是SpringMVC,除此之外還有Struts2、JSF以及Apache為JSF提供的MyFaces實現,可以使用JSP作為MVC中的V,也可使用模板引擎(如Freemarker和Velocity)來生成視圖,還可以是各種文檔或報表(如Excel和PDF等),而Servlet和自定義的控制器是MVC中的C,當然SpringMVC中提供了作為前端控制器的DispatcherServlet;J通常是事務腳本,K應該是AOP(面向切面編程)技術,L目前廣泛使用的有memcached和Redis;M的選擇方案很多,最有可能的是Hibernate和MyBatis,也可以兩種技術同時運用,但通常是將增刪改交給Hibernate來處理,而復雜的查詢則由MyBatis完成,此外TopLink、jOOQ也是優秀的持久層解決方案;底層的數據存取傳統上是使用關系型資料庫,可以是MySQL、Oracle、SQLServer、DB2等,隨著大數據時代的來臨,也可以採用NoSQL(如MongoDB、MemBase、BigTable等)和其他大數據存取方案(如GFS、HDFS等);項目的開發模型P可以是瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、RAD模型等。
項目開發流程
1.可行性分析>>>可行性分析報告/項目開發計劃書
2.需求分析>>>需求規格說明書
1.OOAD(用例圖、時序圖、活動圖)
2.界面原型:幫助理解需求、業務層設計時推導事務腳本
3.設計>>>概要設計說明書/詳細設計說明書
1.抽取業務實體(領域對象):類圖、E-R圖(概念設計階段)
2.分層架構:確定各層的技術實現方案(具體到使用的框架、資料庫伺服器、應用伺服器等)。業務層設計:事務腳本模式(事務:用戶發送一次請求就是一個事務;腳本:一個方法或一個函數;事務腳本:把一次請求封裝為一個方法或一個函數;事務腳本模式:一個事務開始於腳本的打開,終止於腳本的關閉)。業務層涉及的對象本有三種類型:事務腳本類(封裝了業務的流程)、數據訪問對象(DAO,封裝了持久化操作)、數據傳輸對象(DTO,封裝了失血/貧血領域對象),三者之間的關系是事務腳本類組合(聚合)數據訪問對象,這二者都依賴了數據傳輸對象
3.正向工程(UML類圖生成Java代碼)和逆向工程(Java代碼生成UML類圖)
4.資料庫物理設計(ER圖轉換成表間關系圖、建庫和建表、使用工具插入測試數據)
4.編碼5.測試>>>測試報告/缺陷報告
1.單元測試:對軟體中的最小可測試單元進行檢查和驗證,在Java中是對類中的方法進行測試,可以使用JUnit工具來實施。
2.集成測試:集成測試也叫組裝測試或聯合測試。在單元測試的基礎上,將所有模塊按照設計要求組裝成為子系統進行測試。
3.系統測試:將已經確認的軟體、硬體、外設、網路等元素結合在一起,進行信息系統的各種組裝測試和確認測試,系統測試是針對整個產品系統進行的測試,目的是驗證系統是否滿足了需求規格的定義,找出與需求規格不符或與之矛盾的地方,從而提出更加完善的方案。
4.驗收測試:在軟體產品完成了單元測試、集成測試和系統測試之後,產品發布之前所進行的軟體測試活動。它是技術測試的最後一個階段,也稱為交付測試。驗收測試的目的是確保軟體准備就緒,並且可以讓最終用戶將其用於執行軟體的既定功能和任務。
5.交付和維護>>>用戶手冊/操作手冊
項目管理
版本控制:CVS/SVN/Git
自動構建:Ant/Maven/Ivy/Gradle
持續集成:Hudson/Jenkins
系統架構
負載均衡伺服器:F5、A10
應用伺服器:
HTTP伺服器:Apache、NginX(HTTP、反向代理、郵件代理伺服器)
Servlet容器:Tomcat、Resin
EJB容器:WildFly(JBossApplicationServer)、GlassFish、Weblogic、Websphere資料庫伺服器:MySQL、Oracle
第三方工具(插件)應用
圖表工具:基於jQuery的圖表插件(如jQchart、Flot、Charted等)、Chart.js、Highcharts等。
報表工具:PentahoReporting、iReport、DynamicReports等。
文檔處理:POI、iText等。
工作流引擎:jBPM、OpenWFE、Snaker、SWAMP等。
作業調度:Quartz、JobServer、Oddjob等。
緩存服務:EhCache、memcached、SwarmCache等。
消息隊列:Open-MQ、ZeroMQ等。
安全框架:Shiro、PicketBox等。
搜索引擎:IndexTank、Lucene、ElasticSearch等。
Ajax框架:jQuery、ExtJS、DWR等。
UI插件:EasyUI、MiniUI等。
富文本框:UEditor、CKEditor等。
面試提問
項目是為哪個公司開發的?
項目的投入是多少?
有多少人參與了項目開發?
整個團隊中,測試人員、開發人員、項目經理比例是多少?
項目開發了多長時間?
項目總的代碼量有多少?
你的代碼量有多少?
項目採用了怎樣的開發模型或開發流程?
項目的架構是怎樣的?
項目的技術選型是怎樣的?
你在項目中承擔了怎樣的職責?
是否經常開會或加班?
項目完成後有哪些收獲或是經驗教訓?
項目中最困難的部分是什麼?
如何解決團隊開發時遇到的各種沖突?
明:對於沒有實際項目經驗的,可以在前程無憂、智聯招聘、拉勾網等網站上搜索招聘Java程序員的公司,找到他們的官方網站了解他們做的項目,查看項目的詳細介紹,然後嘗試完成其中一部分功能,最好請教一下高人看看自己的設計和代碼是否恰當,這樣相當於積累了一定的項目經驗。
面試時可以反問面試官的問題
我注意到你們使用了X技術,請問你們是如何解決Y問題的?
為什麼你們的產品使用了X技術而不是Y技術?據我所知,X技術雖然有A、B、C等好處,但也存在D和E問題,而Y技術可以解決D和E問題。
我對您說的X技術不是太熟悉,但我感覺它是一個不錯的解決方案,您能多講講它的工作原理嗎?
你們團隊是如何進行項目規劃的?一周會有幾次例會?每周的代碼量大概是多少?
就X問題我能想到的解決方案目前就只有Y了,請問您會怎麼解決這個問題?
錄用談判
要理直氣壯的提出具體的待遇要求
開出比預期稍高的價碼
不要只盯著薪水(很多公司更願意就薪水之外的條件做出讓步)
使用最合適的方法(可以嘗試在電話或E-mail中談判待遇)
自我評價
學習能力(搞IT行業的人需要不斷的了解新的技術、工具和方法)
團隊意識(相比個人英雄主義,IT行業更倡導團隊合作)
抗壓能力(很多IT企業的工作強度相對來說還是比較大的)
自學編程,免費獲取精品IT教程以及資料,搜索:黑馬程序員
網頁鏈接
6. Spring源碼6:createApplicationContext()實例
上一篇 printBanner()列印Banner 中非了springboot如何列印Banner
在 初始化SpringApplication實例 中, 已經分析了當前模塊web類型為SERVLET, 所以當前實例化了一個對象
由上面類圖,我們可以看出, 類繼承關系如下:
用來載入Resource, 初始化的過程中, 實例化了ClassLoader,
抽象ApplicationContext, 定義了ApplicationContext一些模板方法, 在實例化的過程中, 調用了getResourcePatternResolver()方法, 構造了一個, 規定了如何查找資源, 例如從classpath, 根路徑, 從war包等查找資源
初始化了一個DefaultListableBeanFactory
由上面類圖, 我們可以看出DefaultListableBeanFactory的繼承關系:
提供了bean別名的增刪改查功能
默認的單例Bean注冊器, 提供了單例bean增刪改查等功能
提供了FactoryBean的增刪改查方法
抽象BeanFactory, 定義了通用的beanFactory的模板方法, 添加了對beanFactory對Scope的支持, scope主要有五種, singleton, prototype, request, session和application,
抽象自動配置BeanFactory, 實現了創建Bean, 實例化Bean, 欄位配置Bean, 自動裝配依賴Bean的方法
BeanFactory默認實現, spring IOC默認容器類
重寫了AbstractApplicationContext的getResourcePatternResolver()方法, 返回一個對象, 構造函數中顯示調用父類GenericApplicationContext的構造函數
隱式調用父類GenericWebApplicationContext構造函數, 什麼都沒有做
首先, 初始化一個AnnotatedBeanDefinitionReader, 然後再實例化一個對象
用於讀取和解析bean定義
註解bean名稱生成器, 用於生成Bean名稱
Scope註解的解析器, 解析出Scope的模式ScopedProxyMode, 以及Scope的名稱
@Conditional註解的條件評估器, 評估是否滿足條件
注冊bean處理器, bean名稱需要加上org.springframework.context.annotation前綴:
如果basePackages不為空的話, 掃描basePackages中定義的bean, 當前應用中沒有配置basePackages, 所以不會去掃描bean
實例化過程中, 會先調用父類GenericApplicationContext構造函數, 實例化了一個DefaultListableBeanFactory, 作為Spring IOC容器, 的構造函數實例化了AnnotatedBeanDefinitionReader對象, 用於讀取Spring的bean定義, 在實例化AnnotatedBeanDefinitionReader的過程中, 注冊了幾個bean, 用來處理相應的註解
我們將會在下一篇 SpringBootExceptionReporter異常上報 , 繼續閱讀springboot源碼
7. Spring解析Locale的原理
org.springframework.context.i18n.LocaleContext是一個介面,只有一個方法getLocale(),就是用來獲取當前的Locale的,下面看下整體類圖。
從類圖中,我們可以看到LocaleContext有三個子類:其中TimeZoneAwareLocaleContext是一個子介面,該介面提供了一個getTimeZone()方法來獲取當前時區了;SimepleLocaleContext是對LocaleContext介面的一個簡單實現;主要看下類,這個類繼承了SimpleLocaleContext,實現了TimeZoneAwareLocaleContext介面,這也就說該類可以同時獲取Locale和TimeZone,這個類也是我們常用的,看下他的實現:
整個LocaleContext的設計目的是為了保存了整個應用的Locale和TimeZone。看完下面的LocaleResolver,你就會明白LocaleContext的作用。
首先看下org.springframework.web.servlet.LocaleResolver的整體類圖:
上面這個類圖中有兩個主要的介面:org.springframework.web.servlet.LocaleResolver和org.springframework.web.servlet.LocaleContextResolver,這兩個介面的設計思想和上面的LocaleContext與TimeZoneLocaleContext是一致的。LocaleResolver介面提供了對Locale操作的兩個方法:
LocaleContextResolver提供了對LocaleContext的兩個操作方法:
從上面的類圖中,我們可以看到主要有四個實現類:
1.org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
該實現類相當於LocaleResolver的默認實現,由於它只實現了LocaleResolver介面,因此只能解析Locale,不能設置Locale,該類在DispatcherServlet調用initLocaleResolver()方法的時侍源枯候,會判斷IOC容器中是由有一個叫localeResolver的Bean,如果這個Bean不存在,就會初始化該類作為默認的LocaleResolver。這個類是通過判斷HTTP Header中的Accept-Language欄位的值來決定當前應用的Locale和TimeZone。
2.org.springframework.web.servlet.i18n.CookieLocaleResolver
該類是通過應用設置的Cookie來判斷當前需要的Locale的,我們只需要給定CookieName,它會自動讀取對應的value,設置Locale。
3.org.springframework.web.servlet.i18nSessionLocaleResolver
由名字可知,該類是通過設置Session來實現的,實現原理和CookieLocaleResolver大差不差。
4.org.springframework.web.servlet.i18n.FixLocaleResolver
該類從名字就可以知道是一個固定的LocaleResolver,也就是說該類一旦設置裂族了默認的Locale和TimeZone,就老洞不可更改,更改會拋出異常。
總結一下,常用的是CookieLocaleResolver和SessionLocaleResolver。LocaleResolver的初始化是在DispatcherServlet的initLocaleResolver方法中進行的。
無論是使用哪個實現類,Bean的id一定要申明為localeResolver,否則DIspatcherServlet讀取不到,將會初始化默認的AcceptHeaderLocaleResolver。
其他相關文章:
java原生國際化
Spring國際化使用教程
Spring國際化消息解析原理
8. java web的項目需求怎麼寫
目前, 國內外信息化建設已經進入基於Web應用為核心的階段, Java作為應用於網路的最好語言,前景無限看好。然而,就算用Java建造一個不是很煩瑣的web應用,也不是件輕松的事情。概括一下,實施Java的WEB項目需要掌握的技術如下:
lJava語言
l面向對象分析設計思想
l設計模式和框架結構
lXML語言
l網頁腳本語言
l資料庫
l應用伺服器
l集成開發環境
下面我們具體地看每個技術.
1、Java語言
Java語言體系比較龐大,包括多個模塊。從WEB項目應用角度講有JSP、Servlet、JDBC、JavaBean(Application)四部分技術。
(1)、Java Database Connectivity(JDBC)技術
在Java Web應用開發中,資料庫管理系統(RDBMS)的使用是不可缺少的。JDBC(Java Database Connectivity) 是一種用於執行SQL 語句的 Java API。它由一組用 Java 編程語言編寫的類和介面組成。JDBC 為工具/資料庫開發人員提供了一個標準的API,使他們能夠用純Java API 來編寫資料庫應用程序。
簡單地說,JDBC 可做三件事:
l與資料庫建立連接,
l發送SQL 語句,
l處理結果。
(2)、Servlet技術
Servlet是運行在伺服器端的程序,可以被認為是伺服器端的applet。servlet被Web伺服器(例如Tomcat)載入和執行,就如同applet被瀏覽器載入和執行一樣。servlet從客戶端(通過Web伺服器)接收請求,執行某種操作,然後返回結衫手果。
Servlet的主要優點包括
lServlet是持久的。servlet只需Web伺服器載入一次,而且可以在不同請求之間保持服務(例如一次資料庫連接)。
lServlet是與平台無關的。如前所述,servlet是用Java編寫的,它自然也繼承了Java的平台無關性。
lServlet是可擴展的。由於servlet是用Java編寫的,它就具備了Java所能帶來的所有優點。Java是健壯的、面向對象的編程語言,它很容易擴展以適應你的需求。servlet自然也具備了這些特徵。
lServlet是安全的。從外界調用一個servlet的惟一方法就是通過Web伺服器。這提供了高水平的安全性保障,尤其是在你的Web伺服器有防火牆保護的時候。
lServlet可以在多種多樣的客戶機上使用。由於servlet是用Java編寫的,所以你可以很方便地在HTML中使用它們。
(3)、JavaServer Pages(JSP)技術
JSP是從Servlet上分離出來的一小部分,簡化了開發,加強了界面設計。JSP定位在交互網頁的開發。運用Java語法,但功能較Servlet弱了很多,並且高級開發中只充當用戶界面部分。JSP容器收到客戶端發出的請求時,首先執行其中的程序片段,然後將執行結果以HTML格式響應給客戶端。其中程序片段可以是:操作資料庫、重新定向網頁以及發送 E-Mail 等等,這些都是建立動態網站所需要的功能。所有程序操作都在伺服器端執行,網路上傳送給客戶端的僅是得到的結果,與客戶端的瀏覽器無關,因此,JSP 稱為Server-Side Language。
JavaServer Pages的主要優點包括
●一次編寫,各處執行(Write once, Run Anywhere)特性
作為Java 平台的一部分,JavaServer Pages 技術擁有Java語言「一次編寫,各處執行」的特點。隨著越來越多的供貨商將禪團JavaServer Pages 技術添加到他們的產品中,您可以針對自己公司的需求,做出審慎評估後,選擇符合公司成本及規模的伺服器,假若未來的需求有所變更時,更換伺服器平台並不影響之前所投下的成本、人力所開發的應用程序。
● 搭配可重復使用的組件
JavaServer Pages技術賀塌橘可依賴於重復使用跨平台的組件(如:JavaBean或Enterprise JavaBean組件)來執行更復雜的運算、數據處理。開發人員能夠共享開發完成的組件,或者能夠加強這些組件的功能,讓更多用戶或是客戶團體使用。基於善加利用組件的方法,可以加快整體開發過程,也大大降低公司的開發成本和人力。
● 採用標簽化頁面開發
Web 網頁開發人員不一定都是熟悉Java 語言的程序員。因此,JSP 技術能夠將許多功能封裝起來,成為一個自定義的標簽,這些功能是完全根據XML 的標准來制訂的,即JSP 技術中的標簽庫(Tag Library)。因此,Web 頁面開發人員可以運用自定義好的標簽來達成工作需求,而無須再寫復雜的Java 語法,讓Web 頁面開發人員亦能快速開發出一動態內容網頁。
今後,第三方開發人員和其他人員可以為常用功能建立自己的標簽庫,讓Web 網頁開發人員能夠使用熟悉的開發工具,如同HTML 一樣的標簽語法來執行特定功能的工作。
●N-tier 企業應用架構的支持
有鑒於網際網路的發展,為因應未來服務越來越繁雜的要求,且不再受地域的限制,因此,
必須放棄以往Client-Server的Two-tier 架構,進而轉向更具威力、彈性的分散性對象系統。由於JavaServer Page 技術是Java 2 Platform Enterprise Edition (J2EE)集成中的一部分,它主要是負責前端顯示經過復雜運算後之結果內容,而分散性的對象系統則是主要依賴EJB ( Enterprise JavaBean )和JNDI ( Java Naming and Directory Interface )構建而成。
(4)、JavaBean(Application)應用組件技術
Application是Java應用程序,在WEB項目和一些開發中主要應用JavaBean。它就是Application的一部分,邏輯運算能力很強,能極大的發揮Java語言的優點。JavaBean 被稱為是Java 組件技術的核心。JavaBean 的結構必須滿足一定的命名約定。JavaBean能提供常用功能並且可以重復使用,這使得開發人員可以把某些關鍵功能和核心演算法提取出來封裝成為一個組件對象,這樣就增加了代碼的重用率和系統的安全性。
高級的WEB項目會應用到以上所有技術,它們之間聯合使用和協作開發會提高開發的效率和系統的性能。
2、面向對象分析設計思想
Java語言是完全面向對象的語言,所以在項目設計時會有很大的幫助,在設計時應盡量舍棄以往的面向過程的設計方式。
在分析項目業務關系的時候,應用一些UML(Unified Modeling Language)圖,例如常用的用例圖(use case diagram),類圖(class diagram),時序圖(sequence diagram)等等,會有很大的幫助,這樣能盡快找出業務邏輯主要面對的對象,然後對每個對象進行行為劃分,最後再實現對象之間的集成和通信。
3、設計模式和框架結構
Java從語言角度來講不是很難,但是從整體設計角度來講我們還需要了解一些高級應用框架。如果要設計一個良好的框架結構,單單只掌握Java語言遠遠不夠。這就涉及到一個設計模式,還有和設計模式相關的一些知識。
設計模式在Java項目實施過程更是重中之重。主要在與兩層的設計模式、三層的設計模式和N層的設計模式。它直接決定著項目的應用、部署和實際開發設計。
在普通的WEB項目中很多採用兩層的開發結構。JSP+Servlet或JSP+JavaBean。當對開發要求高的項目中使用很多的還是MVC的三層開發結構,也就是JSP+Servlet+JavaBean。它能分有效的分離邏輯開發,使開發人員能專注於各自的開發。同時也能時整個開發結構流程更清晰,但是需要比較高的開發配合度。
在項目中,我們經常使用著名的Model-View-Controller(MVC)架構。MVC架構是隨著smalltalk language語言的發展提出的,它是一個著名的用戶界面設計架構。經典的MVC架構把一個組件(可認為是整個應用程序的一個模塊)劃分成三部分組 Model管理這個模塊中所用到的數據和業務邏輯。而View 管理模塊如何顯示給用戶,Controller 決定如何處理用戶和該模塊互動式時候產生的事件 如用戶點擊一個按鈕等。
4、XML語言
在伺服器和設計模式結構中會應用到自定義文件,而且在應用高級設計時也會定義自用的標簽,現在流行的是用XML去定義配置,所以XML語言應該有一定掌握。
當前,Java 2平台企業版(J2EE)架構在廠商市場和開發者社區中倍受推崇。作為一種工具,可擴展標記語言(XML)簡化了數據交換、進程間消息交換這一類的事情,因而對開發者逐漸變得有吸引力,並開始流行起來。自然,在J2EE架構中訪問或集成XML解決方案的想法也很誘人。因為這將是強大系統架構同高度靈活的數據管理方案的結合。
XML的應用似乎是無窮無盡的,但它們大致上可以分為三大類:
1、簡單數據的表示和交換(針對XML的簡單API(SAX)和文檔對象模型(DOM)語法解析,不同的文檔類型定義(DTDs)和概要(schemas))
2、用戶界面相關、表示相關的上下文(可擴展樣式表語言(XSL),可擴展樣式表語言轉換(XSLT))
3、面向消息的計算(XML-RPC(遠程過程調用),基於SOAP協議的Web 服務(Web Services),電子化業務XML(ebXML))
5、網頁腳本語言
為了提高WEB項目的整體性能,提高人機交互的友好界面,網頁的腳本語言是很有用處的,有的時候可以解決很大的難題或提高程序的性能和應用性。
網頁腳本語言的執行都是在客戶端執行的,速度很很快,並且大多的操作與伺服器沒有交互運算,所以在一些應用中非常理想。在設計WEB項目的應用中,網頁的腳本語言起著不能忽視的作用,所以如果設計WEB項目的應用中,對JavaScript應有一定的了解。
JavaScript是一種基於對象(Object Based)和事件驅動(Event Driven)並具有安全性能(Secure)的腳本語言。使用它的目的是與HTML超文本標記語言、Java 腳本語言(Java小程序)一起實現在一個Web頁面中鏈接多個對象,與Web客戶交互作用。從而可以開發客戶端的應用程序等。它是通過嵌入或調入在標準的HTML語言中實現的。它具有以下幾個基本特點:
1.它是一種腳本編寫語言
JavaScript是一種腳本語言,它採用小程序段的方式實現編程。像其它腳本語言一樣,JavaScript同樣已是一種解釋性語言,它提供了一個易的開發過程。
它的基本結構形式與C、C++、VB十分類似。但它不像這些語言一樣,需要先編譯,而是在程序運行過程中被逐行地解釋。它與HTML標識結合在一起,從而方便用戶的使用操作。
2.基於對象的語言。
JavaScript是一種基於對象的語言,同時以可以看作一種面向對象的。這意味著它能運用自己已經創建的對象。因此,許多功能可以來自於腳本環境中對象的方法與腳本的相互作用。
3.簡單性
JavaScript的簡單性主要體現在:首先它是一種基於Java基本語句和控制流之上的簡單而緊湊的設計, 從而對於學習Java是一種非常好的過渡。其次它的變數類型是採用弱類型,並未使用嚴格的數據類型。
4.安全性
JavaScript是一種安全性語言,它不允許訪問本地的硬碟,並不能將數據存入到伺服器上,不允許對網路文檔進行修改和刪除,只能通過瀏覽器實現信息瀏覽或動態交互。從而有效地防止數據的丟失。
5. 動態性
JavaScript是動態的,它可以直接對用戶或客戶輸入做出響應,無須經過Web服務程序。它對用戶的響應,是採用以事件驅動的方式進行的。所謂事件驅動,就是指在主頁(Home Page)中執行了某種操作所產生的動作,就稱為「事件」(Event)。比如按下滑鼠、移動窗口、選擇菜單等都可以視為事件。當事件發生後,可能會引起相應的事件響應。
6、開發工具
(1)、資料庫
在主要的應用中,資料庫相關的環節應用很多,所以對資料庫應該有一定了解。不能單單只了解一種資料庫,因為在很多實際開發中會提出很多資料庫解決方案,所以只有在了解多種資料庫的情況下才能有一個比較方案。
對於資料庫應該了解他的性能和一些基本的操作常識,還有該資料庫的特點。而針對與Java語言WEB項目的資料庫開發則主要是對JDBC的應用,還有資料庫事務處理和連接池等高級概念的應用。
(2)、Web伺服器
同資料庫一樣,應該了解該伺服器的性能,特點和一些常識。
在應用方面,Web伺服器主要是針對於配置和部署,對目錄的配置,調試;對配置文件屬性的修改;對訪問許可權和並發性的控制;Java類的部署等。
(3)、集成開發環境(IDE):
「公欲善其事, 必先利其器」. 對於Web應用開發人員來講,好的集成開發環境(IDE:Integrated Development Enviroment)是非常重要的。目前在市場上佔主導位置的一個集成開發工具就是Eclipse.
9. j2ee伺服器有哪些
眾所周知,J2EE應用伺服器百花齊放,種類眾多。那麼J2EE應用伺服器有哪些?又有哪些功能呢?一起來螞橘渣看看吧!
伍襲從功能實現上劃分:
有實現完整J2EE規范(full profile)的Weblogic, WebSphere, GlassFish
有實現web應用規范(web profile)的 TomEE, JBoss/WildFly
有基本的Servlet及Jsp規范的Web容器(Web Container) Tomcat, Jetty, Resin
回顧過去的2015年,各應用伺服器市場佔有率各有千秋。
下圖為各個應用伺服器使用率餅圖
我們看到,在眾多J2EE應用伺服器中,Tomcat使用率達到58.66%,穩坐第一。
相較2014年,Tomcat使用率大幅增長,增長將近19%。
整體而言,Tomcat做為Servlet和Jsp規范的參考實現(Reference implementation , 簡稱RI),一般都會在第一時間實現規范的新特性並通過Oracle的CTS 測試認證。目前最新的Tomcat 9.0,雖還是alpha版,但已經實現了Servlet 4.0草案,感興趣的朋友,可以下載嘗鮮哦!
Tomcat是一個實現了JAVA EE標準的最小的WEB伺服器,是Apache 軟體基金會的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。因為Tomcat 技術先進、性能穩定,而且開源免費,因而深受Java 愛好者的喜愛並得到了部分軟體開發商的認可,成為目前比較流行的Web 應用伺服器。學習JavaWeb開發一般都使用悶悄Tomcat伺服器,該伺服器支持全部JSP以及Servlet規范,啟動界面如圖:
Tomcat 是一款非常優秀的 Java Web 伺服器,以致於很多開源 Java 應用伺服器(如 JOnAS) 直接集成它作為 servlet 容器。
Tomcat的總體結構
Tomcat中主要涉及Server,Service,Engine,Connector,Host,Context組件,之前用過Tomcat的.童鞋是不是覺得這些組件的名稱有點似曾相識的趕腳,沒趕腳?!您再想想。好吧,不用你想了,我來告訴你吧。其實在Tomcat二進制分發包解壓後,在conf目錄中有一個server.xml文件,你打開它瞄兩眼看看,是不是發現server.xml文件中已經包含了上述的幾個名稱。
Tomcat 集群源碼的類圖
從圖中我們可以看出 Tomcat 集群包括以下幾個方面的內容:
Session: Session 分為 StandardSession 與ClusterSession 兩種,後者用於 Session 復制。
Session Manager: 有用於集群 Session 管理的ClusterSession,也有用於對 Session 進行一般日常管理的,如 PersistentManager,BackupManager,SimpleTcpReplicationManager。
組通迅框架:SessionManager調用組通訊框架進行 Session 的傳輸,Tomcat採用的組通
訊框架是 tribe,目前 tribe 已被獨立為開放的 apache 工程。
Cluster: 方便集群管理而派生出的邏輯概念,可將實際物理機劃分為一個 Cluster,也可 將一台物理機上不同埠的實例劃分為一個 Cluster,它有一個簡單的實現類 SimpleTcpCluster。
1.1 Session
伺服器集群通常操縱兩種session:
1. Stickysessions: 盡量讓同一個客戶請求由同一台伺服器來處理,這樣 sticky sessions 就是 存在於單機伺服器中接受客戶端請求的 session,它不需要進行 Session 復制,如果這個 單機失敗的話,用戶必須重新登錄網站。
2. Replicatedsessions: 在一台伺服器中的 session 狀態被復制到集群的其他伺服器上,無論 何時,只要 session 改變了,session 數據都要重新全部或部分(依據復制策略)被復制 到其他伺服器上。
Tomcat 支持以下三種 session 持久性類型:
1. 內存復制:在 JVM 內存中復制 session狀態,使用 Tomcat自帶的 SimpleTcpCluster 和SimpleTcpClusterManager類。
2. 資料庫持久性:在這種類型中,session 狀態保存在一個關系資料庫中,伺服器使用org.apache.catalina.session.JDBCManager類從資料庫中獲取 Session 信息。
3. 基於文件的持久性:這里使用類org.apache.catalina.session.FileManager 把session 狀態保存到一個文件系統。
Session Manager
Tomcat 通過 org.apache.catalina.Manager 來管理 Session,Manager 介面總是和 Context Container 相關聯。它主要負責 session 的建立、更新和銷毀。該介面中一些重要的方法有:
用戶在 Servlet 中通過 javax.servlet.http.HttpServletRequest 介面的 getSession 方法獲得 Session,而該介面的實現位於 org.apache.catalina.connector.Request 類中的 doGetSession 方 法中,在該方法中通過 org.apache.catalina.Manager 來獲得 Session , doGetSession 方法的 部分代碼如下:
組通訊框架--Tribe
組通訊框架 Tribe 在 Tomcat 中的位置可如下圖
如圖所示,Tribe 的核心主要是 Channel 類,由此看出,它採用 NIO 進行 Socket 通訊,運用
了組播,事件、心跳檢測等技術,下面我們來著重看看代碼中 Tomcat 是如何與 Tribe 衍接首先在 SimpleTcpReplication 類中的實現 Manager 介面的 start 方法中:
Cluster
Cluster 用於管理集群中的 Session 復制,它有一個簡單的實現類 SimpleTcpCluster。
10. 高分求~!誰有有關於遠程教育的資料代理的資料~或者說相關的任何資料~!
你可以到下面這些網站看一下:
• 國外遠程教育專題網:http://carbon.cudenver.e/~lsherry/pubs/issues.html
(該網站講解了什麼是遠程教育?遠程教育的理論與哲學、遠程教育系統、 設計的思考、方法與策略、遠程學習者、運作問題、管理與政策。)
• 遠程教育資源網:http://www.dlrn.org/index.html
• 遠程教育資訊網:http://www.uwex.e/disted/
(該網提供了大量的遠程教育資源及關於遠程教育的網站鏈接。)
• 101遠程教育網:http://www.chinae.com/(101遠程教育教學網由北京高拓公司創辦於1996年9月,開設小學六年級、初中、 高中各年級各門主課,另開設小學三年級至小學六年級的數學奧班課程。是雀頃祥最早的中小學網上教學網站。)
• 百靈遠程教育網:http://e.beelink.com.cn/
(主要分MBA遠程教育培訓、信息技術培訓、百靈山師附中網校、英語視聽、學習社區等欄目。)
• 華教遠程教育網:http://www.chinae.org/
(中央教育科學研究所華教遠程教育網,以基礎教育教師尤其是偏遠地區教師的繼續教育為工作重點,以推進中國基礎教育教學觀念和手段的現代化為目標,以"立足教育、服務教育、回報社會"為宗旨。)
• 電大在線:http://www.opene.com.cn/
(中央廣播電視大學電大在線,對開放教育類學生的網上資源提供網站,網上直播 電視課表網上教學 直播課堂IP/VBI播出時間表等內容。)
• 中華在線遠程教育網:http://www.onlinecn.net/
(該網是一家國內最早的專業遠程教育軟體企業之一,成立於1997年,1999年開始從事遠程教育系統平台研發,公司成員大都來自聯想集團、人大遠程教育網、北大醫學遠程教育網及華教遠程教育網,2000年,推出中華在線遠程教育系統及網路大學課件製作系統---"課件快手",讓老師都可以輕松製作網路流媒體課件!)
• 育才國際遠程教育網:http://www.yucaie.com/
(它是立足於基礎教育、素質教育、創新教育和終身教育的遠程教育體系,該網站的全程在線服務和個性化服務比較有特色,值得一看。)
• 中小學遠程教育網:http://www.e12.com/
(該網站包括:國家資源教育資源庫、數字媒體教育網台、學科教學資源、教育網站索引及百年樹人教育集團等內容,其中教育網站索引這里有好多詳細的網站索引。)
• 中國國際遠程教育網:http://www.ceieac.com/
(該站有關於校園網群、電教多媒體技術、設備和軟體的展覽。)
• 8211遠程教育網:http://www.8211.com/
(該網站主要提供中小學的教學資源並開設了名師論壇,主要是以校校互通和資源共享為宗旨而建立的一個綜合信息平台。)
• 國聯網:http://202.102.245.32/
(國聯網校是中國首家互聯網上輔導學校。它包括四個部分內容:教育信息、網上課堂、網校生活、交流與答疑。)
• 萬恆網校(五中網校) :http://www.cyberschool.net.cn/
(萬恆遠程教育網是以五中網校為基礎建立起來的一個綜合性網站,包括遠程教室、第二課堂、課外生活、教師交流、代理園地和本網服務六大部分。乎皮)
•頃搏 聯想網校 :http://www.school.legend.com.cn/
(聯想網校,集中了北京各重點中學近百位特、高級教師的經驗和智慧,開設了同步輔導、中高考專題、第二課堂、網校生活、家長學校、資料室等欄目。)
• COL網上學校 :http://www.cb.col.com.cn/yanshi/e/e2.htm
(COL 網上學校是深圳訊業集團利用其覆蓋全國的多媒體信息增值服務網路棗COL,由訊業投資公司和北京金網通公司共同負責成立的教育專項管理中心,面向全國推出 的業務,其基本定位為:匯集全國的優秀教師教學資源,發揮COL 整體網路優勢,面向全國提供的中學輔導性網路教學。)
• 香港公開大學:http://www.ouhk.e.hk/
• 英國開放大學:http://www.open.ac.uk/
(世界著名的開放大學。)
• 英國哥倫比亞開放大學:http://www.openschool.bc.ca/index.html
• 美國網路教師:http://www.webteacher.org/windows.html
(從事網路教學工作和相關人員的好去處。)
• 美國開放大學:http://www.open.e/
• 美國鳳凰城大學:http://www.phoenix.e/
• 泰國開放大學:http://www.stou.ac.th/
• 印度英迪拉甘地國立開放大學:http://www.ignou.e/
• 南非大學:http://www.unisa.ac.za/
• 加拿大阿薩巴斯卡大學:http://www.athabascau.ca/
• 澳大利亞南昆士蘭大學:http://www.usq.e.au/
• 全球遠程教育學院:http://www.gdli.com.tw/
• 再城遠程教育網:http://www.geocities.com/Athens/Academy/7880/
• 聯合遠教教學機構:http://www.opencampus.com.tw/
• 台灣中興大學遠程教育網:http://www.nchu.e.tw/~dl/index1.htm
資料來源:http://www.et.pku.e.cn/serve/link.htm#3
1.國內教育技術綜合網站
*中國教育技術網:::URL::http://www.etr.com.cn/
(由中國電教協會主辦,新聞動態 專業刊物 學術論文 專家資源庫 學術活動 中國電教協會 課題申報 學術流動站 人才供需中心 學科專業點 專業圖書查詢 遠程教育 設備信息 教育技術論壇 教育法規應有盡有)
*中國教育技術學網:::URL::http://www.chinaet.org/
(中國教育技術學網站為廣大用戶提供與教育技術學相關的各種資源。它既提供包括教育理論、實踐經驗、基本知識等方面的文章,又提供各種形式的資源下載,最大限度的滿足用戶的各種需求;同時,集思廣義,大家共建,使它成為教育人士的資源庫和聯系樞紐。)
*教育技術學資源網:::URL::http://61.144.23.75/ret/index.asp
(一個教育技術學團隊、一個教育技術學的Google、一個教育技術學的社區、一個協同學習、協同研究與協同開發的舞台。)
*教育技術學動態:::URL::http://etech.tongtu.net/
(該網站的熱站推薦、相關資源、FERC論文集等都值得一看。)
*無限思考:::URL::http://dianjiao.myrice.com/index.html
(該網是東北師大一研究生個人網站,該網的資源鏈接比較好。)
* 惟存教育網:::URL::http://www.being.org.cn/
(該站關於教育技術與課程整合的實踐探索與理性思考、研究性學習探索、多種學習模式的探索和網路資源的鏈接等非常豐富。)
* 中小學信息技術教育網:::URL::http://www.nrcce.com/index.php3
(中國中小學信息技術教育網是全國中小學計算機教育研究中心主辦的,進行中小學信息技術教育理論研究的非盈利性教育類專業網站。主要的服務對象是全國的相關教育工作者。網站的目的是進行中小學信息技術教育的試驗、研究、探索和提供相關資源。為全國中小學信息技術教育(包括計算機輔助教學和計算機學科教學)的老師和教研人員提供服務。)
* 北師大網路實驗室:::URL::http://www.vschool.net.cn/
(該網站包含有一系列的網路群,還有教育技術領域里許多熱點問題的相關文章。)
* 教育技術在線:::URL::http://www.iteonline.net/
("教育技術在線"是以華南師范大學教育技術研究所為依託,以全國教育技術專業學生、教育技術科研工作者以及熱愛信息技術教學改革的中小學教師為合作夥伴,以推廣和普及現代教育技術為主的網站。)
* 教育技術熱線:::URL::http://metc.njnu.e.cn/(南京師大教育技術學網站)
* 教育信息化:::URL::http://www.pujiao.com.cn/etc/INDEX.ASP
(通惠利華教育信息化網站,這里有比較多的信息技術教育、課程整合、遠程(網路)教育的文章)
* 中國信息技術教育網:::URL::http://www.cite.net.cn/
(由中華人民共和國教育部主辦,是一個以信息技術教育為主的教育類網站,另外該網站還有《信息技術教育》雜志,構成信息技術教育教育科研網路與傳統媒體一條龍。)
* k12中小學信息技術教育網:::URL::http://ite.k12.com.cn/
(該站主要是關於信息技術與課程整合及網路教育方面的資料。)
* 賽伯時空教育網:::URL::http://www.cst21.com.cn/2/index2.htm
(該站包含了教育技術的許多熱點問題,如:網路探究模式研究、研究性學習探究、信息技術與課程整合。還包括國外著名的webquest網站。)
* 基於網路的協作學習網:::URL::http://www.isnet.org.cn/asp/cstu/index.asp(
本網站主要以實現"校校通"目標為宗旨,開發基於網路校際協作學習課程,提出"校校通工程"課程資源中校際"協作學習或交流學習"課程開發的標准模式,並開展基礎性研究。)
* 上海教育技術網:::URL::http://www.shet.com.cn/main.htm
(本網站由上海高教電教研究會主辦,上海各高校教育技術中心參與製作.)
* 在線教育資訊網:::URL::http://www.online-e.org/
(好多關於e-learning的東西)
* 中小學電教網:::URL::http://eteach.ste.net/index.asp
(免費資源,信息技術相關資料,校園網建設,電化教學網路管理,電教,校園網,電教論文,電教動態,電教器材,電教管理,電教制度,ASP,flash)
* 四結合網:::URL::http://www.sijiehe.com/
(裡麵包含了大量的建構主義理論和教學設計理論,是專門的研究信息技術與中小學課程整合的網站。)
go top
--------------------------------------------------------------------------------
2.國外教育技術資源索引網站
* 國外教育技術網站的匯編網:
::URL::http://fms.wsd.wednet.e/TechLab/ecationallinks.htm
* 美國教育技術十佳網站:
::URL::http://211.152.9.125/cgi-bin/page.dll?page3?userid=etech&columnno=0&articleid=127
* 教育技術研究實驗室:
::URL::http://psychology.wichita.e/itrl/
* 教育技術研究指導中心:
::URL::http://infotree.library.ohiou.e/single-records/2004.html
* 教育技術鏈接網:
::URL::http://www.q.e/~tomei/tomei/advancedsites.html - Table
(由 Duquesne 大學教育學院 Linda C. Wojnar 博士創建與維護的一個教育技術學網,全部是連接。)
* 教育技術網路全書網:::URL::http://coe.sdsu.e/eet/
(該網是由聖地亞哥州立大學出版的一本雜志,裡麵包含許多教育技術領域里的精彩文章。)
* 教育技術資源網:::URL::http://disted.tamu.e/edtclink.htm
(該網是由德克薩斯AM大學Karen L. Murphy博士的教育技術資源鏈接。有在線雜志、教育技術機構協會、遠程教育和教育技術的多篇精彩論文。)
go top
--------------------------------------------------------------------------------
3.遠程教育網站
* 遠程教師培訓網:::URL::http://211.101.197.142/
(" 遠程教師培訓"是新教育者NE(New Ecator)平台推出的第一個活動。NE致力於為教育工作者提供職業發展的信息交流平台,共同迎接信息技術給教育帶來的挑戰;將基於教育技術最新研究成果,為管理者提供新的理論與方法;將組織教師參與行動研究和國際交流。)
* 國外遠程教育專題網:::URL::http://carbon.cudenver.e/~lsherry/pubs/issues.html
(該網站講解了什麼是遠程教育?遠程教育的理論與哲學、遠程教育系統、 設計的思考、方法與策略、遠程學習者、運作問題、管理與政策。)
* 遠程教育資源網(國外):::URL::http://www.dlrn.org/index.html
* 遠程教育資訊網(國外):::URL::http://www.uwex.e/disted/
(該網提供了大量的遠程教育資源及關於遠程教育的網站鏈接。)
* 101遠程教育網:::URL::http://211.100.6.92/
(101遠程教育教學網由北京高拓公司創辦於1996年9月,開設小學六年級、初中、 高中各年級各門主課,另開設小學三年級至小學六年級的數學奧班課程。是最早的中小 學網上教學網站。)
* 百靈遠程教育網:::URL::http://e.beelink.com.cn/
(主要分MBA遠程教育培訓、信息技術培訓、百靈山師附中網校、英語視聽、學習社區等欄目。)
* 華教遠程教育網:::URL::http://www.chinae.org/
(中央教育科學研究所華教遠程教育網,以基礎教育教師尤其是偏遠地區教師的繼續教育為工作重點,以推進中國基礎教育教學觀念和手段的現代化為目標,以"立足教育、服務教育、回報社會"為宗旨。)
* 電大在線:::URL::http://www.opene.com.cn/
(中央廣播電視大學電大在線,對開放教育類學生的網上資源提供網站,網上直播 電視課表網上教學 直播課堂IP/VBI播出時間表等內容。)
* 中華在線遠程教育網:::URL::http://www.onlinecn.net/
(該網是一家國內最早的專業遠程教育軟體企業之一,成立於1997年,1999年開始從事遠程教育系統平台研發,公司成員大都來自聯想集團、人大遠程教育網、北大醫學遠程教育網及華教遠程教育網,2000年,推出中華在線遠程教育系統及網路大學課件製作系統---"課件快手",讓老師都可以輕松製作網路流媒體課件!)
* 育才國際遠程教育網:::URL::http://www.yucaie.com/
(它是立足於基礎教育、素質教育、創新教育和終身教育的遠程教育體系,該網站的全程在線服務和個性化服務比較有特色,值得一看。)
* 中小學遠程教育網:::URL::http://www.e12.com/
(該網站包括:國家資源教育資源庫、數字媒體教育網台、學科教學資源、教育網站索引及百年樹人教育集團等內容,其中教育網站索引這里有好多詳細的網站索引。)
* 中國國際遠程教育網:::URL::http://www.ceieac.com/
(該站有關於校園網群、電教多媒體技術、設備和軟體的展覽。)
* 8211遠程教育網:::URL::http://www.8211.com/
(該網站主要提供中小學的教學資源並開設了名師論壇,主要是以校校互通和資源共享為宗旨而建立的一個綜合信息平台。)
* 國聯網:::URL::http://202.102.245.32/
(國聯網校是中國首家互聯網上輔導學校。它包括四個部分內容:教育信息、網上課堂、網校生活、交流與答疑。)
* 萬恆網校(五中網校) :::URL::http://www.cyberschool.net.cn/
(萬恆遠程教育網是以五中網校為基礎建立起來的一個綜合性網站,包括遠程教室、第二課堂、課外生活、教師交流、代理園地和本網服務六大部分。)
* 聯想網校 :::URL::http://www.school.legend.com.cn/
(聯想網校,集中了北京各重點中學近百位特、高級教師的經驗和智慧,開設了同步輔導、中高考專題、第二課堂、網校生活、家長學校、資料室等欄目。)
* COL網上學校 :::URL::http://www.cb.col.com.cn/yanshi/e/e2.htm
(COL 網上學校是深圳訊業集團利用其覆蓋全國的多媒體信息增值服務網路棗COL, 由訊業投資公司和北京金網通公司共同負責成立的教育專項管理中心,面向全國推出 的業務,其基本定位為:匯集全國的優秀教師教學資源,發揮COL 整體網路優勢,面向全國提供的中學輔導性網路教學。)
* 香港公開大學:::URL::http://www.ouhk.e.hk/
* 英國開放大學:::URL::http://www.open.ac.uk/
(世界著名的開放大學。)
* 英國哥倫比亞開放大學:::URL::http://www.openschool.bc.ca/index.html
* 美國網路教師:::URL::http://www.webteacher.org/windows.html
(從事網路教學工作和相關人員的好去處。)
* 美國開放大學:::URL::http://www.open.e/
* 美國鳳凰城大學:::URL::http://www.phoenix.e/
* 泰國開放大學:::URL::http://www.stou.ac.th/
* 印度英迪拉甘地國立開放大學:::URL::http://www.ignou.e/
* 南非大學:::URL::http://www.unisa.ac.za/
* 加拿大阿薩巴斯卡大學:::URL::http://www.athabascau.ca/
* 澳大利亞南昆士蘭大學:::URL::http://www.usq.e.au/
* 全球遠程教育學院:::URL::http://www.gdli.com.tw/
* 再城遠程教育網:::URL::http://www.geocities.com/Athens/Academy/7880/
* 聯合遠教教學機構:::URL::http://www.opencampus.com.tw/
* 台灣中興大學遠程教育網:::URL::http://www.nchu.e.tw/~dl/index1.htm
go top
--------------------------------------------------------------------------------
4.教學設計網站
* 教學設計課程學習網:::URL::http://www.hainnu.e.cn/licb/
不僅支持同學們開展以學為主的課程綜合性實踐任務(如:原創WebQuest《教學設計應用模式調研》、 《中小學教案設計調研》、 《教案設計與課件製作》等研究性學習活動、實踐作業、專題討論),而且以課程主題為線索提供大量參考資源,是一個集支持學習者主動探究學習和教學設計專題資訊為一體的課程學習支持網站。
* 教學設計專題網站習作:::URL::http://www.chinaet.org/ subject/xmweb/html/zhengti.htm
(裡麵包含了大量的理論基礎、有學習理論、傳播理論、設計理論、視聽理論等等,還有一系列的案例分析和資源鏈接。)
* 網路環境下的教學設計專題學習網:::URL::http://61.144.60.222:8080/0518/index.php
* 教學設計協會:::URL::http://www.idc-tx.com/
* 全球教學設計網:::URL::http://www.uid.ca/
* 教學設計模式網:::URL::http://carbon.cudenver.e/~mryder/itc_data/idmodels.html
* 教學設計的理論與模式:::URL::http://www.byu.e/ipt/vlibrary/developer/theories.htm
go top
--------------------------------------------------------------------------------
5.教育技術論壇網站
* 教育技術自由論壇:::URL::http://etc.elec.bnu.e.cn/newbbs/login.asp
* 中小學信息技術論壇:::URL::http://www.nrcce.com/Forums/down.php
* 河北大學教育技術星空:::URL::http://netroom.hbu.e.cn/personal/zoujinsong/index1.htm
* k12信息技術論壇:::URL::http://sq.k12.com.cn/forums/?
* 指顧雷霆論壇:::URL::http://dianjiao.xilubbs.com/
* 網路時代電教論壇:::URL::http://www.net-e.com/ee/bbs/bbs-c.asp
* 教育技術論壇:(英文)::URL::http://www.etech.ch/etech/forums/forums_e.asp
* 新知社區:::URL::http://www.being.org.cn/ cgi-bin/bbs/leoboard.cgi
* 網路環境下教學設計論壇:::URL::http://61.144.60.222:8080/bbs/upload/
* 《教育技術通訊》:::URL::http://www.etc.e.cn
go top
--------------------------------------------------------------------------------
6.教育技術協會網
* 北京高校教育技術學專業研究生聯誼會: ::URL::http://www.etworkshop.com
* 中央電化教育館:::URL::http://www.seccet.e.cn/
* 全國高等學校教育技術協會委員會:::URL::http://www.ceta.e.cn/
(一種協作指導高校教育技術工作的組織。)
* 美國教育傳播與技術協會:::URL::http://www.aect.org/(制定教育技術94定義的組織。)
* 美國國際教育技術協會:::URL::http://www.iste.org/
(主要致力於教育技術和信息技術在中小學中的運用。)
* UNESCO教育信息技術署:::URL::http://iite.artstyle.net/iite/index
* 美國教育技術辦公室:::URL::http://www.ed.gov/Technology/index.html
* 美國教育技術聯合會:::URL::http://www.rtec.org/
* 美聯邦教育技術協會:::URL::http://www.aect.org/Affiliates/feta.html
* 美國遠程教育協會:::URL::http://www.usdla.org/()
* 英聯邦共同體學習聯盟:::URL::http://www.col.org/
* 亞洲開放大學協會:::URL::http://www.ouhk.e.hk/ %7EAAOUNet/
* 國際開放與遠程教育協會:::URL::http://www.icde.org/