Publications-Theses

Article View/Open

Publication Export

Google ScholarTM

NCCU Library

Citation Infomation

Related Publications in TAIR

題名 以Java與瀏覽器為基礎的應用領域物件之編輯系統的快速生成
Rapid generation of Editing Systems for Application Objects based on Java and web browsers
作者 楊宗翰
Yang, Zong-Han
貢獻者 陳正佳
Chen, Cheng-Jia
楊宗翰
Yang, Zong-Han
關鍵詞 領域物件
物件編輯
編輯系統
快速生成
Java
Jetty
Angular
Editing System
日期 2019
上傳時間 1-Jul-2019 10:59:33 (UTC+8)
摘要 現今資訊市場上的各式應用系統,均需要產生或處理大量的應用領域資料,像是醫院的病歷資料、企業客戶資料、企業人力資源資料等等。這些資料有相當的比例需直接或間接地由相關者以人工方式輸入;至於其內容與型式,則具有相當大的歧異性,主要由各個應用領域的個別特性,以及系統的實際分析與設計而決定。因此,如何提供一個良好的通用工具,讓開發者能快速地打造適合特定領域的優良編輯環境,讓相關人士得以方便且迅速地輸入相關應用領域資料,顯然是我們在軟體系統開發時,很值得關注的一個課題。
本論文提出了一套通用工具系統,能夠為任何給定應用系統的領域物件生成在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之中,而當編輯結束需要匯出時,系統則可將暫存資料寫到指定的儲存檔。
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.
參考文獻 [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), from
http://www.eclipse.org/jetty/documentation/current/index.html
[4] Jetty Handler. Retrieved May (2019), from
http://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), from
https://www.tutorialspoint.com/servlets/servlets-life-cycle.htm
[7] Reflection. Retrieved May (2019), from
https://en.wikipedia.org/wiki/Reflection_(computer_programming)
[8] Jakob Jenkov. (2018). Java Reflection API. Retrieved May (2019), from
http://tutorials.jenkov.com/java-reflection/index.html
[9] Java annotation. Retrieved May (2019), from
https://en.wikipedia.org/wiki/Java_annotation
[10] Annotations That Apply to Other Annotations. Retrieved May (2019), from
https://docs.oracle.com/javase/tutorial/java/annotations/predefined.html
[11] Plain old Java object(POJO). Retrieved May (2019), from
https://en.wikipedia.org/wiki/Plain_old_Java_object
[12] Cay S. Horstmann and Gary Cornell. 2013. “Core Java® Volume II—Advanced
Features, Ninth Edition”, pages 421-466. In Chapter 8, JavaBeans Components.
[13] JavaBeans. Retrieved May (2019), from
https://docs.oracle.com/javase/tutorial/javabeans/index.html
[14] Cay S. Horstmann and Gary Cornell. 2013. “Core Java® Volume II—Advanced
Features, Ninth Edition”, pages 432-438. In Chapter 8, 8.5 Beans Property Types.
[15] JavaBeans Properties. Retrieved May (2019), from
https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html
[16] JavaBeans Methods. Retrieved May (2019), from
https://docs.oracle.com/javase/tutorial/javabeans/writing/methods.html
[17] Cay S. Horstmann and Gary Cornell. 2013. “Core Java® Volume II—Advanced
Features, Ninth Edition”, pages 431-432. In Chapter 8, 8.4 Naming Patterns for
Bean Properties and Events.
[18] JavaBeans Events. Retrieved May (2019), from
https://docs.oracle.com/javase/tutorial/javabeans/writing/events.html
[19] Web Server on wiki. Retrieved May (2019), from
https://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), from
https://www.tutorialspoint.com/jackson/index.htm
[24] FasterXML. Jackson Github. Retrieved May (2019), from
https://github.com/FasterXML/jackson
[25] Google. Gson Github. Retrieved May (2019), from
https://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), from
https://angular2-tree.readme.io/docs
[30] 500Tech. angular tree component Github. Retrieved May (2019), from
https://github.com/500tech/angular-tree-component
[31] Angular framework. Retrieved March (2019), from
https://angular.io/guide/architecture
[32] MVC. Retrieved May (2019), from
https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
[33] TypeScript. Retrieved May (2019), from
https://en.wikipedia.org/wiki/TypeScript
[34] TypeScript documentation. Retrieved May (2019), from
https://www.typescriptlang.org/docs/home.html
[35] HTML5 Web Storage on w3schools. Retrieved May (2019), from
https://www.w3schools.com/html/html5_webstorage.asp
[36] Observable Data Service. Retrieved May (2019), from
https://angular.io/guide/observables
描述 碩士
國立政治大學
資訊科學系
105753024
資料來源 http://thesis.lib.nccu.edu.tw/record/#G1057530241
資料類型 thesis
dc.contributor.advisor 陳正佳zh_TW
dc.contributor.advisor Chen, Cheng-Jiaen_US
dc.contributor.author (Authors) 楊宗翰zh_TW
dc.contributor.author (Authors) Yang, Zong-Hanen_US
dc.creator (作者) 楊宗翰zh_TW
dc.creator (作者) Yang, Zong-Hanen_US
dc.date (日期) 2019en_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) G1057530241en_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 (描述) 105753024zh_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章 序論 1
1.1研究背景與動機 1
1.2實現方式 3
1.3論文貢獻與特色 5
第2章 相關研究探討 6
2.1 Java物件 6
2.1.1 POJO 6
2.1.2 JavaBeans 7
2.1.3 Reflection 8
2.1.4 Annotation 9
2.2 Web Server 10
2.2.1 Servlet 11
2.2.2 Jetty 12
2.2.3 Jetty與Tomcat之比較 14
2.3 Java物件與JSON的轉換 14
2.3.1 JSON 14
2.3.2 Jackson 16
2.3.3 Gson 17
2.3.4 JSON-B 18
2.3.5 JSOG 20
2.4 網頁呈現與瀏覽器暫存 21
2.4.1 Angular 21
2.4.2 Angular tree component 24
2.4.3 HTML5 Web Storage 25
第3章 系統架構與實作 26
3.1 系統架構 26
3.2 系統實作 29
3.2.1 修改JSOG package 30
3.2.2 AnnotationForm與AnnotationStyle 32
3.2.3 Jetty Embedded Web Server 36
3.2.4 Angular 6前端網頁 38
第4章:操作流程與展示 44
4.1 操作流程 44
4.1.1 Java class產生新物件資料 46
4.1.2 編輯已存在之物件資料 47
4.2 操作展示 48
4.2.1 開發者操作展示 48
4.2.2 操作者操作展示 50
4.2.3 使用者操作展示 51
第5章 結論與未來研究方向 55
5.1 結論 55
5.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/#G1057530241en_US
dc.subject (關鍵詞) 領域物件zh_TW
dc.subject (關鍵詞) 物件編輯zh_TW
dc.subject (關鍵詞) 編輯系統zh_TW
dc.subject (關鍵詞) 快速生成zh_TW
dc.subject (關鍵詞) Javaen_US
dc.subject (關鍵詞) Jettyen_US
dc.subject (關鍵詞) Angularen_US
dc.subject (關鍵詞) Editing Systemen_US
dc.title (題名) 以Java與瀏覽器為基礎的應用領域物件之編輯系統的快速生成zh_TW
dc.title (題名) Rapid generation of Editing Systems for Application Objects based on Java and web browsersen_US
dc.type (資料類型) thesisen_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), from
http://www.eclipse.org/jetty/documentation/current/index.html
[4] Jetty Handler. Retrieved May (2019), from
http://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), from
https://www.tutorialspoint.com/servlets/servlets-life-cycle.htm
[7] Reflection. Retrieved May (2019), from
https://en.wikipedia.org/wiki/Reflection_(computer_programming)
[8] Jakob Jenkov. (2018). Java Reflection API. Retrieved May (2019), from
http://tutorials.jenkov.com/java-reflection/index.html
[9] Java annotation. Retrieved May (2019), from
https://en.wikipedia.org/wiki/Java_annotation
[10] Annotations That Apply to Other Annotations. Retrieved May (2019), from
https://docs.oracle.com/javase/tutorial/java/annotations/predefined.html
[11] Plain old Java object(POJO). Retrieved May (2019), from
https://en.wikipedia.org/wiki/Plain_old_Java_object
[12] Cay S. Horstmann and Gary Cornell. 2013. “Core Java® Volume II—Advanced
Features, Ninth Edition”, pages 421-466. In Chapter 8, JavaBeans Components.
[13] JavaBeans. Retrieved May (2019), from
https://docs.oracle.com/javase/tutorial/javabeans/index.html
[14] Cay S. Horstmann and Gary Cornell. 2013. “Core Java® Volume II—Advanced
Features, Ninth Edition”, pages 432-438. In Chapter 8, 8.5 Beans Property Types.
[15] JavaBeans Properties. Retrieved May (2019), from
https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html
[16] JavaBeans Methods. Retrieved May (2019), from
https://docs.oracle.com/javase/tutorial/javabeans/writing/methods.html
[17] Cay S. Horstmann and Gary Cornell. 2013. “Core Java® Volume II—Advanced
Features, Ninth Edition”, pages 431-432. In Chapter 8, 8.4 Naming Patterns for
Bean Properties and Events.
[18] JavaBeans Events. Retrieved May (2019), from
https://docs.oracle.com/javase/tutorial/javabeans/writing/events.html
[19] Web Server on wiki. Retrieved May (2019), from
https://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), from
https://www.tutorialspoint.com/jackson/index.htm
[24] FasterXML. Jackson Github. Retrieved May (2019), from
https://github.com/FasterXML/jackson
[25] Google. Gson Github. Retrieved May (2019), from
https://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), from
https://angular2-tree.readme.io/docs
[30] 500Tech. angular tree component Github. Retrieved May (2019), from
https://github.com/500tech/angular-tree-component
[31] Angular framework. Retrieved March (2019), from
https://angular.io/guide/architecture
[32] MVC. Retrieved May (2019), from
https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
[33] TypeScript. Retrieved May (2019), from
https://en.wikipedia.org/wiki/TypeScript
[34] TypeScript documentation. Retrieved May (2019), from
https://www.typescriptlang.org/docs/home.html
[35] HTML5 Web Storage on w3schools. Retrieved May (2019), from
https://www.w3schools.com/html/html5_webstorage.asp
[36] Observable Data Service. Retrieved May (2019), from
https://angular.io/guide/observables
zh_TW
dc.identifier.doi (DOI) 10.6814/NCCU201900018en_US