擷取資料未整理
Spring精神
1、Spring是一個輕量級(Lightweight)的容器(Container)。
2、spring是鬆耦合性框架
3、Spring是實現IoC(Inversion of Control)容器和非入侵性(No intrusive)的框架。
4、Spring提供AOP(Aspect-oriented programming)概念的實現方式。
5、Spring提供對持久層(Persistence)、事物(Transcation)的支援。
6、Spring提供MVC Web框架的實現,並對一些常用的企業服務API(Application Interface)提供一致的模型封裝。
7、Spring提供了對現存的各種優秀框架(Structs、Hibernate、Ibatis、Webwork等)相整合的方案。
一、 物件導向是什麼?
* 封裝
即是將物件內部的資料隱藏起來,只能透過物件本身所提供的介面(interface)取得物件內部屬性或者方法,物件內部的細節資料或者邏輯則隱藏起來,其他物件即無法瞭解此物件的內部細節,若不經過允許之窗口(即此物件提供之方法)便無從更動此物件內之資料。簡白的說,對一件事情只需要理解他的外在就好,不需要了解裡面內部的構造。例如:由先前的例子,我們可以透過getInformation()取得車子資訊,然而我們並不需要知道他是如何取得資訊的
* 繼承
在某種情況下,一個類別會有「子類別」。子類別比原本的類別(稱為父類別)要更加具體化,也就是說子類別繼承了父類別。例如:計程車(子類別)繼承了汽車(父類別)原有的屬性以及方法,也新增了自己特有的屬性
* 多形
多型 (Polymorphism)
簡單來說就是相同名稱的方法(Method),多個相同名稱的方法,傳入不同的參數,會執行不同的敘述。多型(Polymorphism)則包含多載
(Overloading)和複寫(Overriding)。
多載(Overloading) — 是指說在相同類別中,定義名稱相同,但是參數個數不同,或是參數型態不同的函式,這樣就可以利用參數個數或者參數型態,呼叫到對應的方法。例如:一個計算面積的方法,如果傳入一個參數,就當正方形來算面積;傳入兩個參數,就當成長方形來算面積。複寫(Overriding) — 是指覆寫掉父類別中的函式。例如:動物類別(父類別) getLegs()方法被鳥類別(子類別)覆蓋。
類別(Class)
在程式語言中,類別定義一件事物的抽象特點。
類別的定義包含了資料的形式(屬性, Field)以及對資料的操作(方法, Method)。我們也可以想像成類別是汽車的設計藍圖(blueprint),其中我們可以在這張藍圖定義抽象的內容(也就是屬性、方法),例如汽車的廠牌、汽車的車名以及馬力和取得汽車資訊等。
物件(Object)
物件也就是類別的實例,也就是說有了類別這張藍圖我們可以在程式中產生許多汽車類別的資料,而這些資料彼此之間不互相影響,每一個皆是獨立的。
二、set list map 差別?
List:
List(列表):
List的特征是其元素以線性方式存儲,集合中可以存放重復物件。
1.可以允許重復的對象。
2.可以插入多個null元素。
3.是一個有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。
Set(集合):
Set 是最簡單的一種集合。集合中的物件不按特定的方式排序,並且沒有重復物件。
1.不允許重復對象
2. 無序容器
3. 只允許一個 null 元素
三、JavaBean是甚麼?
可以將多個物件封裝到一個物件(bean)中。
特點是可序列化,提供無參構造器,提供getter方法和setter方法的訪問物件屬性。
名字中的Bean是用於Java的可重用軟體元件的慣用叫法。
四、DAO是什麼? Service是甚麼?
dao一般是直接對資料庫的增刪改查,給service提供服務,service一般是做業務邏輯處理,需要操作資料庫時呼叫dao的方法
service負責業務邏輯,dao負責資料訪問。
五、甚麼是MVC結構?
模型(Model)、視圖(View)和控制器(Controller)。
M-Model(數據模型層):
1.功能:將從資料庫取出來的資料存入Model或者業務邏輯層中使用的的數據存到Model
V-View(層):
2.功能:呈現出Model數據的頁面,但是也可以沒有任何的Model單純展示頁面的一層(渲染頁面)
C-controller(控制層)
3.功能:不能層之間的交互傳遞控制
七、 session是甚麼?
八、cookie跟session差別?
Cookie就給客戶端們頒發一個通行證吧,每人一個,無論誰訪問都必須攜帶自己通行證。這樣伺服器就能從通行證上確認客戶身份。
SessionSession是另一種記錄客戶狀態的機制,Cookie保存在客戶端瀏覽器中,而Session保存在伺服器上。客戶端瀏覽器訪問伺服器的時候,伺服器把客戶端信息以某種形式記錄在伺服器上,這就是Session。
九、什麼是ORM
ORM 的一個特性為: 透過程式語言(Ruby, Java),去操作資料庫語言( 是在『資料庫』和『 Model 資料容器』兩者之間,
簡單來說,它是一個幫助使用者更簡便、安全的去從資料庫讀取資料
優點:
1. 安全性
簡化性
通用性
缺點
效能:多了『把程式語言轉譯成 SQL語言』這項工作
學習曲線高
複雜查詢維護性低
十、什麼是永續類別?
永續類別:它是一般的JAVA實體類,在Hibernate的JPA規範下,在類別上面加上@Entity註釋,
並使用@Table註釋將此映射到對應的資料庫表名,還有一個關鍵是在此類別中必須有一個欄位要加上@Id註釋,它會成為資料表的主鍵,這時就可以說此類別是受到Session管理的永續類別。
十一、什麼是Spring Bean?
Spring bean 表示受到Spring管理的對象。具體說來,它是被Spring框架容器初始化、配置和管理的對象。Spring bean是在Spring的配置文件中定義(現在也可以通過annotation註解來定義),在Spring容器中初始化,然後注入到應用程式中的。
十二、什麼是Spring 控制反轉IoC Inversion of Control ?
十三、什麼是Spring 依賴注入 Dependecy Injection ?
由外部控制的。建立好後,將其傳遞給主程式,這個動作稱為依賴注入(dependency injection,DI),是控制反轉的實現方式。
主元件所依賴的輔助元件,不需要自己寫程式碼「new」出來,而是交給框架的機制來建立,這屬於控制反轉的範疇。至於將輔助元件傳遞給主元件,則屬於依賴注入。
Ioc—Inversion of Control 控制反轉
控制反轉是一個設計思想 ,把對於某個物件的控制權移轉給第三方容器
DI—Dependency Injection 依賴注入
把被依賴物件注入被動接收物件中
十四、什麼是Spring AOP Aspect Oriented Programming ?
什麼是Spring AOP?
AOP是在「不用修改別人的程式」的條件下,「插入自己的程式」。
AOP的優勢在於可以快速的在指定的程式前後加入其他程式碼使用,另外可以輕易的變更、抽換方法,且對於原本的程式完全不需要修改變更。
十五、那些annotation可以取代Bean
十六、ApplicationContext哪三個層別實現
十七、你在這專題遇到什麼困難?
解決的都不是問題,只有目前還沒解決的
十八、你是怎麼解決的?
之前的問題,網路>書>同學。
十九、如果再從來一次 你要怎麼做專題
確立好功能,在上課時,關注老師講解每個功能都想想看是否可以套用到自己專題上,而不是,後期才依需求,回去翻上課內容。
Serializable序列化
在定義實體類時會繼承Serializable接口public class article implements Serializable{ }
什麼是Serializable接口
一個對象序列化的接口,一個類只有實現了Serializable接口,它的對象才能被序列化。
什麼是序列化?
序列化是將對象狀態轉換為可保持或傳輸的格式的過程。與序列化相對的是反序列化,它將流轉換為對象。這兩個過程結合起來,可以輕鬆地存儲和傳輸數據。
為什麼要序列化對象
把對象轉換為字節序列的過程稱為對象的序列化
把字節序列恢復為對象的過程稱為對象的反序列化
什麼情況下需要序列化?
當我們需要把對象的狀態信息通過網絡進行傳輸,或者需要將對象的狀態信息持久化,以便將來使用時都需要把對象進行序列化
那為什麼還要繼承Serializable。那是存儲對象在存儲介質中,以便在下次使用的時候,可以很快捷的重建一個副本。
访问JavaBean
<jsp:useBean> 标签可以在 JSP 中声明一个 JavaBean,然后使用。声明后,JavaBean 对象就成了脚本变量,可以通过脚本元素或其他自定义标签来访问。<jsp:useBean> 标签的语法格式如下:
<jsp:useBean id="bean 的名字" scope="bean 的作用域" typeSpec/>
JAVA三層架構,持久層,業務層,表現層的理解
SSH= Struts(表示層)+ Spring(業務層)+ Hibernate(持久層) Struts
Struts屬於VC層次,負責介面表現,負責MVC關係的分發。
Spring是一個業務層框架,是一個整合的框架,能夠很好地黏合表示層與持久層。
Hibernate是一個持久層框架,它只負責與關係資料庫的操作
表示層呼叫控制層,控制層呼叫業務層,業務層呼叫資料訪問層
request:用戶端請求,此請求會包含來自GET/POST 請求的參數;
response:網頁傳回用戶端的回應;
pageContext:網頁的屬性是在這裡管理;
session:與請求有關的會話期;
getAttribute得到的是物件,getParameter得到的是String
8、get 和post 的區別?
答:Form 中的get 和post 方法,在數據傳輸過程中分別對應了HTTP 協議中的GET 和POST 方法。二者主要區別如下:
1)Get 是用來從伺服器上獲得數據,而Post 是用來向伺服器上傳遞數據;
2)Get 將表單中數據按照variable=value 的形式,添加到action 所指向的URL 後面,並且兩者使用「?」連接,而各個變量之間使用「&」連接;Post 是將表單中的數據放在form 的數據體中,按照變量和值相對應的方式,傳遞到action所指向URL;
3)Get 是不安全的,因為在傳輸過程,數據被放在請求的URL 中;Post 的所有操作對用戶來說都是不可見的;
4)Get 傳輸的數據量小,這主要是因為受URL 長度限制;而Post 可以傳輸大量的數據,所以在上傳文件只能使用Post;
5)Get 限制Form 表單的數據集必須為ASCII 字符,而Post 支持整個ISO10646字符集;
6)Get 是Form 的默認方法。
9、什麼情況下調用doGet()和doPost()?
答:Jsp 頁面中的form 標籤里的method 屬性為get 時調用doGet(),為post時調用doPost()。
INNER JOIN (內部連接) 為內部合併查詢指令,可以取回2個資料表都共同存在合併欄位的記錄資料。也就是在「兩個資料表都有在 on 關鍵字所指定的欄位的值」這個條件下才取出想取的欄位。
select 想收尋的欄位(資料表A & B都可) from [資料表A] inner Join [資料表B] on [資料表A].[關聯鍵] =[資料表B].[關聯鍵]
left Join (左外部合併查訊)是在合併兩個資料表中,取回左邊資料表的所有紀錄,就算在右邊資料表沒有存在合併欄位的值,顯示結果會以左邊資料表為主。
select 想收尋的欄位(資料表A & B都可) from [資料表A] left Join [資料表B] on [資料表A].[關聯鍵] =[資料表B].[關聯鍵]
right Join (右外部合併查訊)是在合併兩個資料表中,取回右邊資料表的所有紀錄,就算在左邊資料表沒有存在合併欄位的值,顯示結果會以右邊資料表為主。
select 想收尋的欄位(資料表A & B都可) from [資料表A] right Join [資料表B] on [資料表A].[關聯鍵] =[資料表B].[關聯鍵]
full Join(完全外部合併)可以取回左右兩邊資料表的所有紀錄。
select 想收尋的欄位(資料表A & B都可) from [資料表A] full Join [資料表B] on [資料表A].[關聯鍵] =[資料表B].[關聯鍵]
留言
張貼留言