1. 程式人生 > >java面試--基礎6(框架)

java面試--基礎6(框架)

SpringMVC

Spring MVC處理請求流程

使用者發起請求--進入前端控制器(進入springmvc的入口也是一個Servlet)
前端控制器會根據使用者請求的不同調用對應的頁面控制器(Servlet)
頁面控制器呼叫biz,dao之後會得到一個數據model
將model和view檢視(僅僅只是名字)統一打包之後返回前端控制器
將資料Model渲染到view檢視中
最終將帶有資料的頁面返回給使用者

@RequestMapping的Ant和佔位符

*任意字元

在這裡插入圖片描述
http://localhost:9090/SpringMvc2/ant/bbbbb/ant1.html

**任意多層字元

在這裡插入圖片描述
http://localhost:9090/SpringMvc2/ant/a/b/c/d/e/ant2.html

?一個問號是一個字元,允許多個問號

在這裡插入圖片描述
http://localhost:9090/SpringMvc2/ant/ant3a.html
http://localhost:9090/SpringMvc2/ant/ant4aa.html

{xxx}佔位符,多級路徑

在這裡插入圖片描述
http://localhost:9090/SpringMvc2/abc/123/ant.html

Springmvc中獲取Servlet的原生物件

request和session

在這裡插入圖片描述

response

在這裡插入圖片描述

Cookie獲取和設定

在這裡插入圖片描述

SpringMVC中的轉發和重定向

SpringMVC預設的跳轉方式是轉發
在這裡插入圖片描述

SpringMVC支援Ajax

在這裡插入圖片描述

@controller和@restcontroller有什麼區別

@RestController註解相當於@ResponseBody + @Controller合在一起的作用

攔截器、過濾器、AOP

過濾器

Filter:過濾的是全部的請求,不能細緻到方法
在這裡插入圖片描述

攔截器

Interceptor:過濾可以細緻到某個類的中的某個方法,必須是進入springmvc控制層的才能過濾。
在這裡插入圖片描述
在這裡插入圖片描述

AOP

AOP:可以過濾全部請求的全部方法,細緻到任意層。

Rest風格

在這裡插入圖片描述
在這裡插入圖片描述

Mybatis

mybatis的工作原理

MyBatis先建立SqlSessionFactory,SqlSessionFactory在根據配置,配置來源於兩個地方,一處是配置檔案,一處是Java程式碼的註解,獲取一個SqlSession。SqlSession包含了執行sql所需要的所有方法,可以通過SqlSession例項直接執行對映的sql語句,完成對資料的增刪改查和事務提交等,用完之後關閉SqlSession。

JDBC、Mybatis、Hibernate的區別

JDBC:建立資料庫,建立表,建立欄位,開啟,關閉資料庫,SQL語句,
	查詢rs.next(rs.getxx)獲取每個欄位屬性
Mybatis:建立資料庫,建立表,建立欄位  SQL語句   
Hibernate:建立資料庫,呼叫提供的方法add update delete query,

瞬時狀態,持久狀態,託管狀態

瞬時狀態(new出來還沒有關聯到資料庫的),每次啟動執行完這個物件就銷燬了
持久狀態(關聯到資料庫),實體物件和資料庫同步
託管狀態:實體物件和資料庫中有關聯,但是session關閉了。
	只有重新獲取session變回持久狀態

外來鍵

在這裡插入圖片描述

集合

在這裡插入圖片描述

SqlSessionFactory、SqlSession

SqlSessionFactory:單例設計模式,從專案執行期間只有一個
	(專案和資料庫建立連結)
SqlSession:每次HTTP請求都建立一個新的連結,每次使用完畢都要關閉。
	(一次CRUD操作)

快取

一級快取

一級快取:儲存作用域為Session,當Session flush 或 close之後,該Session中的所有 Cache 就將清空。或者如果就算不close只要有進行其他的commit操作,session依然會失效。(幾乎不用)

二級快取

二級快取與一級快取其機制相同,不同在於其儲存作用域為Mapper(Namespace)就是一個配置檔案

快取的作用

提高效率不需要每次都進行查詢,證券股票(實時查詢不適合使用快取),快取必須支援髒資料

Mybatics中map對映的兩種方式

註解方式;xml的方式
*兩種有什麼區別?
---複雜的用xml;簡單的用註解方式直接寫sql語句

動態SQL

if

在這裡插入圖片描述

choose、when、otherwise

在這裡插入圖片描述

trim、where、set

在這裡插入圖片描述
在這裡插入圖片描述

foreach

在這裡插入圖片描述

bind

在這裡插入圖片描述

Spring

IOC和DI的區別

IOC:控制反轉:dao  biz不在類中進行建立和維護,
	交給外部容器進行建立。統一管理做到單例模式
DI: 依賴注入:dao  biz 不在類內部進行new,外部容器建立之後必須注入進來,
	由於是私有的屬性,所以可以通過構造方法也可以通過set方式注入
區別:
1.它們是spring核心思想的不同方面的描述。
2.依賴注入和控制反轉描述的角度不同。
	依賴注入是從應用程式的角度在描述,可以把依賴注入描述完整點:
	應用程式依賴容器建立並注入它所需要的外部資源;
	
 	控制反轉是從容器的角度在描述,描述完整點:容器控制應用程式,
	由容器反向的嚮應用程式注入應用程式所需要的外部資源。

依賴注入的兩種方式

構造方法注入
Set方式注入

@Autowired 與@Resource的區別

Spring預設支援的是@Autowired,@Autowired預設是根據型別進行查詢的
@Resource裝配順序
  1. 如果同時指定了name和type,則從Spring上下文中找到唯一匹配的bean進行
  裝配,找不到則丟擲異常
  2. 如果指定了name,則從上下文中查詢名稱(id)匹配的bean進行裝配,找不
  到則丟擲異常
  3. 如果指定了type,則從上下文中找到型別匹配的唯一bean進行裝配,找不到
  或者找到多個,都會丟擲異常
  4. 如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝
  配;如果沒有匹配,則回退為一個原始型別進行匹配,如果匹配則自動裝配

AOP

面向橫切的思想,思考入手點是橫向的,各個模組都需要使用到的功能,
統一出來編寫,不需要模組知道具體共同部分的細節,通過外部配置織入

AOP能幹什麼,也是AOP帶來的好處
1:降低模組的耦合度
2:使系統容易擴充套件

懶載入

bean預設啟動伺服器就全部建立,設定為懶載入後就是第一次使用該bean的時候才建立

Spring中的bean有幾種配置方式

傳統的XML配置方式
基於註解的配置
基於類的Java Config

Bean的作用域有幾個

單例(預設),每次建立,request ,session  application

Spring的配置檔案有哪些內容

 開啟事務註解驅動
 事務管理器
 開啟註解功能,並配置掃描包
 配置資料來源
 配置SQL會話工廠、別名、對映檔案