Key Technologies Primer 讀書筆記,翻譯 --- Struct 學習 1

原本想寫成讀書筆記的,結果仍是變成翻譯,謹做記錄,學習。
 
1.HTML -- 見我前面文章
2.Internet 瞭解 http 請求和響應的循環 --- 見我前面文章
3.java 
    Reflection 和 Introspection
    反射和內省
     內省(IntroSpector)是Java語言對JavaBean 類屬性、事件的一種缺省處理方法。
例如類A中有屬性name, 那咱們能夠經過getName,setName 來獲得其值或者設置新的值。
經過getName/setName 來訪問name屬性,這就是默認的規則。
Java中提供了一套API 用來訪問某個屬性的getter/setter方法,經過這些API 可使你不須要了解這個規則,這些API存放於包java.beans 中。
    通常的作法是經過類Introspector的getBeanInfo方法獲取某個對象的BeanInfo 信息,而後經過BeanInfo來獲取屬性的描述器(PropertyDescriptor),經過這個屬性描述器就能夠獲取某個屬性對應的getter/setter方法,而後咱們就能夠經過反射機制來調用這些方法。
    反射是一個決定在一個對象中什麼成員域和方法是可用的。而內省是一種特殊的反射,它被用在JavaBean Api中。
    Struct 使用內省來轉換HTTP參數爲javaBean 特性而且從javaBean中產生HTML字段。
    
Properties Files and ResourceBundles
java程序包括網絡程序,經常須要配置Properties文件。
Java ResourceBundles 使用更多的Properties文件來提供國際化的信息。
ResourceBundles介紹:

JavaScript, AJAX, and SOAP

 
JavaScript AJAX 都是一些還不錯的前端技術
SOAP能夠平衡請求/響應循環。使用它,一個應用能夠訪問數據,處理業務邏輯。SOAP和AJAX應該有很好的結合。
SOAP:​ https://en.wikipedia.org/wiki/SOAP 一個特殊的應用層協議。是工做在HTTP或者SMTP之上的協議,使用XML來表示信息。
 

Servlets, Filters, and Web Containers

 
由於java是面向對象的語言, java Servlet 用來將http轉爲面向對象的形式。這樣讓開發者能夠專一於它們應用開發須要的事情。
一個java-aware http server 能夠傳遞一個請求到一個servlet 容器,這個容器能夠實現請求或者它能夠將請求傳回給HTTP服務器。容器經過查找他的servlet列表來決定是否能夠處理請求。若是有servlet是爲這個請求註冊的,就傳遞這個請求到servlet。
容器須要管理servlet的生命週期,容器創造,調用,而且最終有servlet。
Filters 讓你組裝一系列的組件來 處理一個請求或者回應。過濾器集中在一個鏈上,這樣每個過濾器都有機會處理請求或者回應。
來 寫下我目前的理解:servlet是在container的,container接收到請求後,經過註冊列表來肯定是否有對應的servlet能夠處理,而servlet能夠對請求進行處理。最後就是過濾器,過濾器能夠在處理請求過程當中對它們作一些處理,可是不太清楚和servlet 的差異。過濾器能夠有多個,而servlet 只能有一個。感受入侵性更小些。
Sessions
HTTP一個很重要的特色是無狀態的。這樣是沒有機制來分辨HTTP是一個同一個用戶的下一個請求。這樣讓想要構建一個應用能夠和用戶對話有多個請求有些困難。
爲此,servlet API經過了一個編程的概念,叫作 session,表示一個對象實現了  javax.servlet.http.HttpSession 接口 
containter 會使用兩個技術之一(cookies 或者 URL重寫)來保證同一個用戶的下一個請求將會包括session id 對此次會話來講,這樣這個狀態信息將會保存在session中和多個請求關聯。狀態信息將會保存在session 屬性(  session attributes,在JSP中叫作:session scope beans
爲了防止當用戶不能完成一次交互時無期限的佔用資源,session配置了超時時間。若是兩個請求時間間隔超過了超時時間,這個session就會被刪除。
 
知道Session 數據經常保存在RAM內存是很重要的。取決於你的容器,你也許有不一樣的方式來避過它。
 

Web Applications

 
網頁應用,就像一個HTTP服務器能夠被用來做爲不一樣的網頁的主機,一個servlet容器也能夠用來包含多個網站應用。Java Servlet 平臺提供一個很好定義的機制用來組織而且部署網頁應用。一個應用能夠被組裝稱爲一個 Web Application Archive, 或者 WAR file。單個war能夠被上傳,而且自動部署。
你須要知道你怎麼產生一個war文件,而且如何部署。也許須要一些構建工具的知識,好比:Maven: http://maven.apache.org/ 以及一些你服務器容器的閱讀文檔。
 

Security

在應用程序部署描述符中能夠配置的是 容器管理安全。聲明安全能夠用來保護請求的URI要知足必定的模式。實用安全能夠根據當天的時間,調用的參數,或者這個應用的組件的狀態用來微調安全做受權決定。它也能夠被用來限制受權根據數據庫中的信息。
有一些項目,好比Apache Shiro 或者 Spring Security 能夠幫助你保護你的應用。
 

JavaServer Pages, JSP Tag Libraries, and JavaServer Faces

若是你須要編寫一個標準的網頁應用,你也許須要一個視圖組件。一種就是JSP。 http://www.oracle.com/technetwork/java/javaee/jsp/index.html
或者也能夠是Velocity 或者 Freemarker,都是structs 支持的。
全部相同的是你要從編寫HTML開始同時增長動態的特性使用JSP標籤。不太推薦在JSP中使用java。JSTL和 Unified expression language 是推薦的。
http://www.oracle.com/technetwork/java/index-jsp-135995.html
這也就是說,你能夠輕鬆的從你的視圖來訪問你的數據而且合適的展現它。若是你想要使用一個更加現代的方式,也許你會喜歡返回json,一般用來給AJAX做爲展現頁面。
提到了一些前端的技術,我也仍是列出來吧,若是也許我會去看了:
 

Extensible Markup Language (XML)

可擴展標記語言
這個框架提供的特性經常依賴於不少的對象,那些對象又的時候是經過一個由xml編寫的配置文件來部署的。XML一樣也能夠部署java 應用程序。
幸運的是 Struct2將對XML的需求下降到0,若是你須要使用到它,能夠查看:  Convention plugin.

Model View Controller (MVC)

基於JSP的網頁應用有時會混合數據庫代碼,頁面設計代碼,流程控制代碼。實踐中,咱們發現除非這些被分離,不然大型的應用會很難被維護。
使用MVC架構能夠分離這些問題。Model表明業務或者數據庫代碼。View表明頁面設計代碼,Controller表明導航的代碼。
MVC這個單詞來源於 SmallTalk Model-View-Controller 框架。在SmallTalk MVC中,View根據Model來更新經過觀察中模式。原始的MVC模式就像一個封閉的循環,View和Controller 交談,Controller和Model交談,Model和View 交談。
 
可是模式和頁面的直接聯繫對於網頁應用並不實際,咱們修改傳統的MVC模式讓他看起來少點像一個循環,而更像Controller是在中間的地位。
 
在MVC/Model2設計模式中,應用流是經過一箇中心的控制器調解的。這個控制器委託請求到一個合適的handler中。這個handler和一個模式綁定,而後每個handler扮演一個請求和model之間的適配器。Model表明或者扮演一個應用的商業邏輯或者狀態。一般控制會經過Controller傳回給合適的頁面。流向能夠經過諮詢一系列的mapping一般是從數據庫或者配置文件載入的來肯定流向。這個提供一個視圖和模型之間很寬鬆的鏈接,可使應用便於維護和創造。
 
因爲MVC是一個便利的範式,不少工做者發現這個也許還有大於三層。好比,在Model層中,經常有獨立的業務邏輯層和數據訪問層。
這個框架提供控制層給Model2 網頁應用。開發者經常使用這一層和其餘的標準的技術來構建業務,數據和永久層。
更多關於MVC的事情能夠查看:

Business Logic Frameworks

商業邏輯框架
不少團隊在POJOs(plain old JavaBeans )構建它們本身的商業邏輯層。因此商業層框架開始出現,包括:
 

Data Access Frameworks

數據訪問框架
大多數時候,業務層和數據訪問層分離,有的團隊會開發它們本身的數據訪問對象,可是不少的團隊轉向使用下面的數據訪問框架。一些流行的數據訪問框架以下:
相關文章
相關標籤/搜索