dc.contributor.advisor | 陳正佳 | zh_TW |
dc.contributor.advisor | Chen, Cheng-Jia | en_US |
dc.contributor.author (Authors) | 楊宗翰 | zh_TW |
dc.contributor.author (Authors) | Yang, Zong-Han | en_US |
dc.creator (作者) | 楊宗翰 | zh_TW |
dc.creator (作者) | Yang, Zong-Han | en_US |
dc.date (日期) | 2019 | en_US |
dc.date.accessioned | 1-Jul-2019 10:59:33 (UTC+8) | - |
dc.date.available | 1-Jul-2019 10:59:33 (UTC+8) | - |
dc.date.issued (上傳時間) | 1-Jul-2019 10:59:33 (UTC+8) | - |
dc.identifier (Other Identifiers) | G1057530241 | en_US |
dc.identifier.uri (URI) | http://nccur.lib.nccu.edu.tw/handle/140.119/124197 | - |
dc.description (描述) | 碩士 | zh_TW |
dc.description (描述) | 國立政治大學 | zh_TW |
dc.description (描述) | 資訊科學系 | zh_TW |
dc.description (描述) | 105753024 | zh_TW |
dc.description.abstract (摘要) | 現今資訊市場上的各式應用系統,均需要產生或處理大量的應用領域資料,像是醫院的病歷資料、企業客戶資料、企業人力資源資料等等。這些資料有相當的比例需直接或間接地由相關者以人工方式輸入;至於其內容與型式,則具有相當大的歧異性,主要由各個應用領域的個別特性,以及系統的實際分析與設計而決定。因此,如何提供一個良好的通用工具,讓開發者能快速地打造適合特定領域的優良編輯環境,讓相關人士得以方便且迅速地輸入相關應用領域資料,顯然是我們在軟體系統開發時,很值得關注的一個課題。本論文提出了一套通用工具系統,能夠為任何給定應用系統的領域物件生成在Web瀏覽器上操作的編輯系統。在編輯系統的規格描述部分,我們使用Java類別來表示應用領域中的可能物件模型,並在每個Java類別中嵌入對應的Java Annotations以表示類別實例在網頁上的呈現方式。對規格的後續處理將生成被封裝為Web應用的預期編輯系統,之後只要在Jetty 中安裝並激活該Web應用,用戶即可以透過瀏覽器進行領域物件資料的編輯,並可將結果存為JSOG格式的文檔。後續的應用則可將之反序列化為應用領域物件。本研究使用的主要技術有:Jetty、Java annotation、Java reflection、Java servlet、Angular網頁框架。我們的系統產出的編輯器是一個web 應用,在伺服端它使用了Jetty此種以Java servlet為基礎的內嵌網頁伺服器,而客戶端部分則使用了Angular 框架。內嵌網頁伺服器的使用可避免編輯器操作時還需常駐一個遠端網頁伺服器,而搭配servlet與Angular產生的前端網頁頁面則提供Angular reactive form與Angular tree component,可供使用者輸入與檢視資料內容。當編輯到達一定階段時,編輯系統允許將資料序列化為JSOG格式,並暫存於瀏覽器的session storage之中,而當編輯結束需要匯出時,系統則可將暫存資料寫到指定的儲存檔。 | zh_TW |
dc.description.abstract (摘要) | In today`s information market, all kinds of application systems need to generate or process plenty of application data, such as patient medical records, corporate customer data, enterprise human resource data and so on. A large proportion of these data needs to be manually entered directly or indirectly by relevant users; as to the content and type, there is great variety in these data, mainly depending on the domain characteristics of individual application, as well as the actual system analysis and design. It is therefore very attractive to software developers if we could provide a tool allowing to quickly create a good editing system tailored for any given application system, by which users can easily and quickly enter required application data.This thesis comes up with a system capable of generating an editing system operated on web browsers for the domain objects of any given application system. In the specification of the editing system we use Java classes to represent all types of objects in the given application and embed Java annotations in each class to express how its instances are rendered on a web page. Succeeding processing of the specification will generate the intended editing system packaged as a web application. After installing and activating the web application in the Jetty web server, the user can start his editing of domain data by a browser and ends with the result saved as a file of JSOG format. Subsequent applications can deserialize its content into application objects.The main techniques and tools used in this thesis include: Jetty, Java Annotations, Java Reflection, Java Servlets, and Angular web framework. The editor generated by our system is a web application. On the server side, it uses embedded Jetty, a web server based on Java servlets; on the client side, it uses the Angular framework. The use of an embedded web server avoids the need of the residence of a remote web server when the editor is operated. The web pages of the editor are generated using servlets and Angular. They provide a reactive form and a tree component for the user to enter and view object contents. When the editing reaches a certain stage, the system allows to serialize the result in JSOG format and cache it in the browser`s Session Storage. When the editing ends, the cached data can be written to any designated file in the local machine. | en_US |
dc.description.tableofcontents | 第1章 序論 11.1研究背景與動機 11.2實現方式 31.3論文貢獻與特色 5第2章 相關研究探討 62.1 Java物件 62.1.1 POJO 62.1.2 JavaBeans 72.1.3 Reflection 82.1.4 Annotation 92.2 Web Server 102.2.1 Servlet 112.2.2 Jetty 122.2.3 Jetty與Tomcat之比較 142.3 Java物件與JSON的轉換 142.3.1 JSON 142.3.2 Jackson 162.3.3 Gson 172.3.4 JSON-B 182.3.5 JSOG 202.4 網頁呈現與瀏覽器暫存 212.4.1 Angular 212.4.2 Angular tree component 242.4.3 HTML5 Web Storage 25第3章 系統架構與實作 263.1 系統架構 263.2 系統實作 293.2.1 修改JSOG package 303.2.2 AnnotationForm與AnnotationStyle 323.2.3 Jetty Embedded Web Server 363.2.4 Angular 6前端網頁 38第4章:操作流程與展示 444.1 操作流程 444.1.1 Java class產生新物件資料 464.1.2 編輯已存在之物件資料 474.2 操作展示 484.2.1 開發者操作展示 484.2.2 操作者操作展示 504.2.3 使用者操作展示 51第5章 結論與未來研究方向 555.1 結論 555.2 未來研究方向 56參考文獻 57 | zh_TW |
dc.format.extent | 2376183 bytes | - |
dc.format.extent | 2376718 bytes | - |
dc.format.mimetype | application/pdf | - |
dc.format.mimetype | application/pdf | - |
dc.source.uri (資料來源) | http://thesis.lib.nccu.edu.tw/record/#G1057530241 | en_US |
dc.subject (關鍵詞) | 領域物件 | zh_TW |
dc.subject (關鍵詞) | 物件編輯 | zh_TW |
dc.subject (關鍵詞) | 編輯系統 | zh_TW |
dc.subject (關鍵詞) | 快速生成 | zh_TW |
dc.subject (關鍵詞) | Java | en_US |
dc.subject (關鍵詞) | Jetty | en_US |
dc.subject (關鍵詞) | Angular | en_US |
dc.subject (關鍵詞) | Editing System | en_US |
dc.title (題名) | 以Java與瀏覽器為基礎的應用領域物件之編輯系統的快速生成 | zh_TW |
dc.title (題名) | Rapid generation of Editing Systems for Application Objects based on Java and web browsers | en_US |
dc.type (資料類型) | thesis | en_US |
dc.relation.reference (參考文獻) | [1] 企業資源規劃(ERP). Retrieved May (2019), from https://zh.wikipedia.org/wiki/企业资源计划[2] GUI. Retrieved May (2019), from https://zh.wikipedia.org/wiki/图形用户界面[3] Jetty. Retrieved May (2019), fromhttp://www.eclipse.org/jetty/documentation/current/index.html[4] Jetty Handler. Retrieved May (2019), fromhttp://www.eclipse.org/jetty/documentation/current/architecture.html#_handlers[5] Servlet. Retrieved May (2019), from https://zh.wikipedia.org/wiki/Java_Servlet[6] Servlet Life Cycle. Retrieved May (2019), fromhttps://www.tutorialspoint.com/servlets/servlets-life-cycle.htm[7] Reflection. Retrieved May (2019), fromhttps://en.wikipedia.org/wiki/Reflection_(computer_programming)[8] Jakob Jenkov. (2018). Java Reflection API. Retrieved May (2019), fromhttp://tutorials.jenkov.com/java-reflection/index.html[9] Java annotation. Retrieved May (2019), fromhttps://en.wikipedia.org/wiki/Java_annotation[10] Annotations That Apply to Other Annotations. Retrieved May (2019), fromhttps://docs.oracle.com/javase/tutorial/java/annotations/predefined.html[11] Plain old Java object(POJO). Retrieved May (2019), fromhttps://en.wikipedia.org/wiki/Plain_old_Java_object[12] Cay S. Horstmann and Gary Cornell. 2013. “Core Java® Volume II—AdvancedFeatures, Ninth Edition”, pages 421-466. In Chapter 8, JavaBeans Components.[13] JavaBeans. Retrieved May (2019), fromhttps://docs.oracle.com/javase/tutorial/javabeans/index.html[14] Cay S. Horstmann and Gary Cornell. 2013. “Core Java® Volume II—AdvancedFeatures, Ninth Edition”, pages 432-438. In Chapter 8, 8.5 Beans Property Types.[15] JavaBeans Properties. Retrieved May (2019), fromhttps://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html[16] JavaBeans Methods. Retrieved May (2019), fromhttps://docs.oracle.com/javase/tutorial/javabeans/writing/methods.html[17] Cay S. Horstmann and Gary Cornell. 2013. “Core Java® Volume II—AdvancedFeatures, Ninth Edition”, pages 431-432. In Chapter 8, 8.4 Naming Patterns forBean Properties and Events.[18] JavaBeans Events. Retrieved May (2019), fromhttps://docs.oracle.com/javase/tutorial/javabeans/writing/events.html[19] Web Server on wiki. Retrieved May (2019), fromhttps://en.wikipedia.org/wiki/Web_server[20] Web Server. Rettrieved May (2019), from https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_web_server[21] JSON. Retrieved May (2019), from http://json.org[22] JSON on wiki. Retrieved May (2019), from https://en.wikipedia.org/wiki/JSON[23] Jackson Tutorial. Retrieved May (2019), fromhttps://www.tutorialspoint.com/jackson/index.htm[24] FasterXML. Jackson Github. Retrieved May (2019), fromhttps://github.com/FasterXML/jackson[25] Google. Gson Github. Retrieved May (2019), fromhttps://github.com/google/gson[26] JSON Binding HomePage. Retrieved May (2019), from http://json-b.net[27] JSON Binding Github. Retrieved May (2019), from https://github.com/eclipse-ee4j/jsonb-api[28] JSOG Github. Retrieved May (2019), from https://github.com/jsog/jsog-jackson/[29] angular tree component documents. Retrieved May (2019), fromhttps://angular2-tree.readme.io/docs[30] 500Tech. angular tree component Github. Retrieved May (2019), fromhttps://github.com/500tech/angular-tree-component[31] Angular framework. Retrieved March (2019), fromhttps://angular.io/guide/architecture[32] MVC. Retrieved May (2019), fromhttps://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller[33] TypeScript. Retrieved May (2019), fromhttps://en.wikipedia.org/wiki/TypeScript[34] TypeScript documentation. Retrieved May (2019), fromhttps://www.typescriptlang.org/docs/home.html[35] HTML5 Web Storage on w3schools. Retrieved May (2019), fromhttps://www.w3schools.com/html/html5_webstorage.asp[36] Observable Data Service. Retrieved May (2019), fromhttps://angular.io/guide/observables | zh_TW |
dc.identifier.doi (DOI) | 10.6814/NCCU201900018 | en_US |