1. 程式人生 > >【SSH】---【Struts2、Hibernate5、Spring4】【散點知識】

【SSH】---【Struts2、Hibernate5、Spring4】【散點知識】

作用域 才會 進行 namespace sci 3.2 對象關系映射 工作 XML


一、Struts2
1.1、Struts2的概念
Struts2是一個用來開發MVC應用程序的框架,它提供了Web應用程序開發過程中的一些常見問題的解決方案:
->對來自用戶的輸入數據進行合法性驗證;
? ->統一的布局;
? ->可擴展性;
? ->國際化和本地化;
? ->支持Ajax
? ->表單的重復提交
? ->文件的上傳下載(文件上傳中文件的類型不是普通類型,而是多媒體數據類型【*.txt、*.doc、*.xls等】,由於表單中存放的不是普通數據,所以表單類型也隨之概念,在上傳的時候表單的一個屬性enctype的值必須是multipart/form-data)


1.2、Struts2的核心
->過濾器StrutsPrepareAndExecuteFilter(概念、工作業務流程)
1.3、Struts2的訪問請求路徑後綴
->*.action
->*.do
->*.input(自定義)
具體做法:<constant name="struts.action.extension" value="action,jsp,input" />
1.4、在Strus2中訪問Web資源的方法/方式
1.4.1、什麽是Web資源?
HttpServletRequest、HttpSession、ServletContext等原生的Servlet API。
1.4.2、為什麽要訪問Web資源?
B/S的應用 Controller中必然要訪問WEB資源:如向域對象中讀寫屬性,讀寫Cookie等。
域對象中讀寫屬性(域對象就是四個作用域):request.setAttribute("xxx")
1.4.3、訪問Web資源的方式:
1.4.3.1、通過要與Servlet API(application program interface)解耦的方式進行訪問
1.4.3.1.1、通過com.opensymphony.xwork.ActionContext
1.4.3.1.2、通過Action實現如下的接口
->org.apache.struts2.interceptor.ApplicationAware
->org.apache.struts2.interceptor.RequestAware
->org.apache.struts2.interceptor.SessionAware
1.4.3.2、通過要與Servlet API(application program interface)耦合的方式進行訪問
1.4.3.2.1、org.apache.struts2.ServletActionContext
1.4.3.2.2、通過實現對應的ServletxxxAware接口(ServletRequestAware,ServletContextAware,ServletResponseAware)
1.4.4、四個作用域範圍:
1.4.4.1、page(作用域範圍是當前頁面有效)
1.4.4.2、request(作用域範圍是一次請求,什麽叫一次請求?當我們使用瀏覽器打開網絡上的一個資源就算一次請求),應用場景舉例:向服務器提交數據,如註冊人人網賬號等。
1.4.4.3、session(作用域的範圍是一次會話,會話的概念就是當我們通過瀏覽器去真正的去訪問上網絡當中的一個資源(JSP/SERVLET/……)直到我們關閉瀏覽器這段時間就算一次請求),應用場景舉例:跟蹤用戶會話狀態。
1.4.4.4、application(作用域的範圍是服務器範圍(也就是服務器從開啟開始到服務器關閉結束)),應用場景舉例:檢測當前網站的在線人數。
1.5、struts.xml配置相關
1.5.1、package—用來劃分系統模塊,相當於我們java包
1.5.2、action—配置請求要訪問的行為類(行為是什麽,java裏面有屬性和行為/方法的概念)
1.5.3、id—前臺提交數據到後臺action的請求路徑
1.5.4、class—前臺提交數據到後臺action的請求路徑(這裏指類的全名)
1.5.5、method—前臺提交數據具體要執行的方法/行為
1.5.6、extends—struts給我們提供了部分功能,如重定向、內部跳轉等等
1.5.7、type—相應類型(具體來說有以下幾種:chain、dispatcher、redirect、redirectAction)
? Chain:表示轉發到一個Action
? Dispatcher:表示轉發(默認值)
? Redirect:表示重定向
? redirectAction:表示重定向到一個action(通過redirect的結果相應類型也可以重定向到action)

1.5.8、name—action業務執行完畢要跳轉的邏輯路徑,一般是配合type使用
1.5.9、namespace—命名空間(可以跨命名空間訪問請求路徑)
1.5.10、result—action的一個子節點/請求路徑
1.6、action中具體action的訪問方法
1.6.1、通過通配符訪問方式
1.6.2、通過動態方法調用(Struts2的動態方法調用默認處於禁用狀態,如果要使用,必須開啟,方法如下,在Struts.xml中配置: strict-method-invocation="false")
1.7、國際化
國際化的作用是為了同一套程序在不同的語言環境下能夠正常顯示,如在中國編寫的中文網頁如果想在島國能夠正常顯示,那麽就需要能夠在日文環境下顯示的native2ascii編碼。
另外需要註意的是關於英文的顯示,建議采用美式英語,而不是英式英語。
1.8、Struts2的表單標簽,我們一般用JSTL替代
1.9、Struts2的工作流程(切記一定要去記憶)
二、Hibernate5
2.1、Hibernate5核心思想?
2.1.1、Object-Relational-Mapping(對象關系映射)
2.2、怎麽做到ORM的?
2.2.1、要求有以下幾點:
2.2.1.1、實體類的屬性必須要和數據庫表的字段一一對應;
2.2.1.2、實體類中必須有一個字段能夠體現數據庫行的唯一性,hibernate要求是自增的;
2.2.1.3、要求要和數據庫表映射的實體類必須有相應的映射文件;
2.3、hibernate核心配置文件具體要配置哪些內容?
2.3.1、數據源(包括驅動地址、連接地址、用戶名、密碼)
2.3.2、方言 工作中一定要註意你用的是什麽數據庫平臺以及版本(切記切記)
2.3.3、hbm2ddl 工作中我們都用update
2.3.4、加載實體類與表的映射文件
2.3.4.1、方式一、XML方式(寫法是:<mapping resource="類的全路徑,路徑必須用/表示"/>)
2.3.4.2、方式二、Annotation方式(寫法是:<mapping class="類的全路徑,路徑必須用.表示">)
2.3.5、此外還可以配置是否讓hibernate顯示和格式化sql
2.3.5.1、顯示的寫法:show_sql 值是:true
2.3.5.2、格式化的寫法:format_sql 值是:true
2.4、Hibernate5的核心api
2.4.1、Configuration—作用是用來加載核心配置文件,官方建議核心配置文件的文件名和路徑分別是hibernate.cfg.xml,路徑是src下。
2.4.2、SessionFactory—作用是用來創建sessionFactory,他的對象是由Configuration來創建。
2.4.3、Session—作用是用來創建session,他的對象是由SessionFactory來創建,相當於jdbc裏面的connection
2.4.4、Transaction—事務,表示哪些方法處於事務的控制之下(如果對事務有所疑問去問度娘,但是必須得知道有四個屬性ACID-原子性、隔離性、持久性、一致性)
2.5、hibernate的主鍵生成策略(這裏僅指出需要大家記住的)
2.5.1、native(根據數據庫底層機制來進行自增)
2.5.2、uuid(由hibernate生成一個由32位字符組成的字符串,這個生成的時候采用當前時間,當前電腦網卡MAC地址以及時間戳來綜合生成,所以是唯一的)
2.6、緩沖
2.6.1、緩沖概念(自己看去吧)
2.6.2、一級緩沖(session級別緩沖)
2.6.3、二級緩沖(工作中我們采用第三方緩沖機制實現,常用的有Shiro、Redis、Memcached)
2.6.4、緩沖特性(在獲取數據的時候首先找的是緩沖,如果能找到就返回數據,如果找不到就去數據庫裏面去查詢,查到後緊接著放到緩沖裏面,下一次再找同樣還是直接找緩沖)
2.7、Hibernate事務
2.7.1、事務概念,特性
2.7.2、如何使用事務
2.7.2.1、通過在spring的核心配置文件中配置
2.7.2.2、通過annotation的方式去使用(記住這個也得配置一部分xml)
2.8、Hiberante常用API
2.8.1、Query
2.8.2、Criteria
2.8.3、SQLQuery(知道即可,我們從來不用)
2.9、Hibernate關系映射(一定記住hibernate是雙向關系維護的)
2.9.1、one-to-many
2.9.2、many-to-many
2.9.3、實現方式
2.9.3.1、XML配置
2.9.3.2、Annotation
2.9.4、級聯操作(cascade)
2.9.5、維護權限放棄(inverse)
2.10、hibernate查詢方式
2.10.1、對象導航圖
2.10.2、OID(對象ID查詢)
2.10.3、HQL
2.10.4、QBC
2.10.5、本地SQL
2.11、hibernate檢索策略
2.11.1、get(只要一執行程序馬上就會發送SQL語句給數據庫去執行)
2.11.2、load(執行後不會馬上發送sql語句給數據庫執行,而是用到對象裏面的具體屬性的時候才會發送,相當於延遲加載)
2.11.3、批量抓取
2.11.4、Lazy(盡量少用)
2.11.4.1、true(延遲)-要用
2.11.4.2、false(不延遲)-不用
2.11.4.3、extra(相當滴延遲)-不用
2.12、數據庫連接池(我們不用,因為我們框架集成要交給spring管理)
2.13、hibernate工作流程
三、Spring4
3.1、Spring的工作流程
3.2、Spring的兩大核心
3.2.1、AOP—面向切面編程
3.2.2、IOC/DI—(IOC控制反轉/反轉控制,目的是把對對象的創建交給spring進行管理,DI依賴註入,可以註入的屬性包括基本屬性和對象屬性)
3.3、bean標簽
3.3.1、id—類的對象的名稱
3.3.2、class—類的全名
3.3.3、name—功能和id是一樣的,但是已經拋棄,不用了。只是一個遺留的屬性,為了兼容struts1.
33.4、scope—單例和多例(需要大家知道因為我們采用struts的action操作,action是多例的,所以在開發的時候scope的值是prototype)
3.4、bean實例化的三種方式
3.4.1、通過無參構造方法(必須得會)
3.4.2、通過靜態工廠類(必須得會)
3.4.3、通過實例化工廠(了解即可)
備註:對bean的實例化有兩種方式:1、XML;2、Annotation
3.5、事務配置
3.5.1、首先得有數據源(前提條件)
2.5.2、配置事務sessionFactory、註入DataSource、註入hibernatetemplate(如果使用的話)
3.6、配置連接池(我們常用c3p0)

2017-08-18  18:49:37

【SSH】---【Struts2、Hibernate5、Spring4】【散點知識】