久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Spring、SpringMVC,、Shiro面試題

 自然科學(xué)思維 2017-05-26

  這些Spring面試題是從尚硅谷http://www.的JavaEE面試題整理出來的,,希望對你有幫助!


1. 開發(fā)中主要使用 Spring 的什么技術(shù) ?
  ①. IOC 容器管理各層的組件
  ②. 使用 AOP 配置聲明式事務(wù)
  ③. 整合其他框架.


2. 簡述 AOP 和 IOC 概念
  AOP: Aspect Oriented Program, 面向(方面)切面的編程;Filter(過濾器)也是一種   AOP.  AOP  是一種新的方法論 ,  是對傳統(tǒng)   OOP(Object-Oriented Programming, 面向?qū)ο缶幊? 的補充. AOP 的主要編程對像是切面(aspect), 而切面模塊化橫切關(guān)注點.可以舉例通過事務(wù)說明.
  IOC: Invert Of Control, 控制反轉(zhuǎn). 也成為 DI(依賴注入)其思想是反轉(zhuǎn)資源獲取的方向. 傳統(tǒng)的資源查找方式要求組件向容器發(fā)起請求查找資源.作為回應(yīng), 容器適時的返回資源. 而應(yīng)用了 IOC 之后, 則是容器主動地將資源推送給它所管理的組件,組件所要做的僅是選擇一種合適的方式來接受資源. 這種行為也被稱為查找的被動形式.


3. 在 Spring 中如何配置 Bean ?
   Bean 的配置方式: 通過全類名 (反射),、 通過工廠方法 (靜態(tài)工廠方法 & 實例工廠方法),、FactoryBean


4. IOC 容器對 Bean 的生命周期:
  ①. 通過構(gòu)造器或工廠方法創(chuàng)建 Bean 實例
  ②. 為 Bean 的屬性設(shè)置值和對其他 Bean 的引用
  ③. 將Bean實例傳遞給Bean后置處理器的postProcessBeforeInitialization 方法
  ④. 調(diào)用 Bean 的初始化方法(init-method)
  ⑤. 將Bean實例傳遞給Bean后置處理器的postProcessAfterInitialization 方法
  ⑦. Bean 可以使用了
  ⑧. 當(dāng)容器關(guān)閉時, 調(diào)用 Bean 的銷毀方法(destroy-method)


5.說一下struts2-hibernate-Spring 的工作流程?

  1). Struts2 負(fù)責(zé)顯示頁面和接受請求
  2). Spring 的 IOC 容器管理各個組件: 整合 Struts2,,Hibernate 和 其他組件,,AOP 完成聲明式事務(wù)
  3). Hibernate 提供 DAO 操作.

6. Spring 如何整合 Struts2 ?

  整合 Struts2, 即由 IOC 容器管理 Struts2 的 Action:
    > 安裝 Spring 插件: 把 struts2-spring-plugin-2.2.1.jar 復(fù)制到
  當(dāng)前 WEB 應(yīng)用的 WEB-INF/lib 目錄下
    > 在 Spring 的配置文件中配置 Struts2 的 Action 實例
    > 在 Struts 配置文件中配置 action,  但其 class 屬性不再指向該Action 的實現(xiàn)類, 而是指向 Spring 容器中 Action 實例的 ID


7. Spring 如何整合 Hibernate
  整合  Hibernate,  即由  IOC  容器生成  SessionFactory  對象,  并使用Spring 的聲明式事務(wù)
    > 利用 LocalSessionFactoryBean 工廠 Bean, 聲明一個使用 XML 映射文件的 SessionFactory 實例.
    > 利用 HibernateTransactionManager 配置 Hibernate 的事務(wù)管理器


8. Spring MVC 比較 Struts2
  ①. Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter
  ②. Spring MVC 會稍微比 Struts2 快些. Spring MVC 是基于方法設(shè)計, 而 Sturts2 是基于類, 每次發(fā)一次請求都會實例一個 Action.
  ③. Spring MVC 使用更加簡潔, 開發(fā)效率 Spring MVC 確實比 struts2 高: 支持 JSR303, 處理 ajax 的請求更方便
  ④. Struts2 的 OGNL 表達(dá)式使頁面的開發(fā)效率相比 Spring MVC 更高些. 


9. Spring MVC 的運行流程
  ①. 在整個 Spring MVC 框架中, DispatcherServlet 處于核心位置,,負(fù)責(zé)協(xié)調(diào)和組織不同組件以完成請求處理并返回響應(yīng)的工作
  ②. SpringMVC 處理請求過程:
    >  若一個請求匹配  DispatcherServlet 的請求映射路徑(在  web.xml 中指定), WEB 容器將該請求轉(zhuǎn)交給 DispatcherServlet 處理
    > DispatcherServlet 接收到請求后, 將根據(jù)請求信息(包括 URL,、 HTTP 方法、 請求頭,、 請求參數(shù),、 Cookie 等)及 HandlerMapping 的配置找到處理請求的處理器(Handler). 可將 HandlerMapping 看成路由控制器, 將 Handler 看成目標(biāo)主機,。
    > 當(dāng) DispatcherServlet 根據(jù) HandlerMapping 得到對應(yīng)當(dāng)前請求的Handler 后,,通過 HandlerAdapter 對 Handler 進行封裝,,再以統(tǒng)一的適配器接口調(diào)用 Handler。
    >  處 理 器 完 成 業(yè) 務(wù) 邏 輯 的 處 理 后 將 返 回 一 個   ModelAndView  給DispatcherServlet, ModelAndView 包含了視圖邏輯名和模型數(shù)據(jù)信息
    > DispatcherServlet 借助 ViewResoler 完成邏輯視圖名到真實視圖對象的解析
    > 得到真實視圖對象 View 后, DispatcherServlet 使用這個 View 對ModelAndView 中的模型數(shù)據(jù)進行視圖渲染


10. 說出 Spring MVC 常用的 5 個注解:
  @RequestMapping ,、 @PathVariable ,、 @RequestParam 、 @RequestBoy ,、@ResponseBody


11. 如何使用 SpringMVC 完成 JSON 操作:
  ①. 配置 MappingJacksonHttpMessageConverter
  ②. 使用 @RequestBody 注解或 ResponseEntity 作為返回值


12.比較 SpringSecurity 和 Shiro

  相比 Spring Security, Shiro 在保持強大功能的同時, 使用簡單性和靈活性
    > SpringSecurity: 即使是一個一個簡單的請求,,最少得經(jīng)過它的 8 個Filter
    > SpringSecurity 必須在 Spring 的環(huán)境下使用
    > 初學(xué) Spring Security, 曲線還是較大, 需要深入學(xué)習(xí)其源碼和框架, 配置起來也較費力.


13.Shiro 的優(yōu)點

  > 簡單的身份認(rèn)證, 支持多種數(shù)據(jù)源
  > 對角色的簡單的授權(quán), 支持細(xì)粒度的授權(quán)(方法級)
  > 支持一級緩存,以提升應(yīng)用程序的性能,;
  > 內(nèi)置的基于 POJO 企業(yè)會話管理, 適用于 Web 以及非 Web 的環(huán)境
  > 非常簡單的加密 API
  > 不跟任何的框架或者容器捆綁, 可以獨立運行


14.簡述 Shiro 的核心組件

  Shiro 架構(gòu) 3 個核心組件:
    > Subject: 正與系統(tǒng)進行交互的人, 或某一個第三方服務(wù).
    所有 Subject 實例都被綁定到(且這是必須的)一個SecurityManager 上,。
    > SecurityManager: Shiro 架構(gòu)的心臟, 用來協(xié)調(diào)內(nèi)部各安全組件, 管理內(nèi)部組件實例, 并通過它來提供安全管理的各種服務(wù).
    當(dāng) Shiro 與一個 Subject 進行交互時, 實質(zhì)上是幕后的 SecurityManager 處理所有繁重的 Subject 安全操作。
    > Realms: 本質(zhì)上是一個特定安全的 DAO. 當(dāng)配置 Shiro 時, 必須指定至少一個 Realm 用來進行身份驗證和/或授權(quán).
    Shiro 提供了多種可用的 Realms 來獲取安全相關(guān)的數(shù)據(jù). 如關(guān)系數(shù)據(jù)庫(JDBC), INI 及屬性文件等.
    可以定義自己 Realm 實現(xiàn)來代表自定義的數(shù)據(jù)源,。

15.Shiro認(rèn)證過程

  ①. 應(yīng)用程序代碼調(diào)用 Subject.login 方法,,傳遞創(chuàng)建好的包含終端用戶的 Principals(身份)和 Credentials(憑證)的 AuthenticationToken 實例
  ②. Subject 實例: 通常為 DelegatingSubject(或子類)委托應(yīng)用程序的 SecurityManager 通過調(diào)用securityManager.login(token) 開始真正的驗證。
  ③. SubjectManager 接收 token,,調(diào)用內(nèi)部的 Authenticator 實例調(diào)用 authenticator.authenticate(token).Authenticator 通常是一個 ModularRealmAuthenticator 實例, 支持在身份驗證中協(xié)調(diào)一個或多個Realm 實例
  ④. 如果應(yīng)用程序中配置了一個以上的 Realm, ModularRealmAuthenticator 實例將利用配置好的AuthenticationStrategy 來啟動 Multi-Realm 認(rèn)證嘗試. 在Realms 被身份驗證調(diào)用之前, 期間和以后,AuthenticationStrategy 被調(diào)用使其能夠?qū)γ總€Realm 的結(jié)果作出反應(yīng).
  ⑤. 每個配置的 Realm 用來幫助看它是否支持提交的 AuthenticationToken. 如果支持, 那么支持 Realm 的 getAuthenticationInfo 方法將會伴隨著提交的 token 被調(diào)用. getAuthenticationInfo 方法有效地代表一個特定 Realm 的單一的身份驗證嘗試,。
Shiro認(rèn)證過程.png


16.Shiro授權(quán)過程

  ①. 應(yīng)用程序或框架代碼調(diào)用任何 Subject 的hasRole*, checkRole*, isPermitted*,或者checkPermission*方法的變體, 傳遞任何所需的權(quán)限
  ②. Subject 的實例—通常是 DelegatingSubject(或子類), 調(diào)用securityManager 的對應(yīng)的方法.
  ③. SecurityManager 調(diào)用 org.apache.shiro.authz.Authorizer 接口的對應(yīng)方法.默認(rèn)情況下,,authorizer 實例是一個 ModularRealmAuthorizer 實例, 它支持協(xié)調(diào)任何授權(quán)操作過程中的一個或多個Realm 實例
  ④. 每個配置好的 Realm 被檢查是否實現(xiàn)了相同的 Authorizer 接口. 如果是, Realm 各自的 hasRole*, checkRole*,isPermitted*,,或 checkPermission* 方法將被調(diào)用。

Shiro授權(quán)過程.png


17.Shiro 如何自實現(xiàn)認(rèn)證

  Shiro 的認(rèn)證過程由 Realm 執(zhí)行, SecurityManager 會調(diào)用 org.apache.shiro.realm.Realm 的 getAuthenticationInfo(AuthenticationToken token) 方法. 實際開發(fā)中, 通常提供 org.apache.shiro.realm.AuthenticatingRealm 的實現(xiàn)類, 并在該實現(xiàn)類中提供 doGetAuthenticationInfo(AuthenticationToken token)方法的具體實現(xiàn)

18.如何實現(xiàn)自實現(xiàn)授權(quán)

  實際開發(fā)中, 通常提供  org.apache.shiro.realm.AuthorizingRealm 的實現(xiàn)類,
  并提供 doGetAuthorizationInfo(PrincipalCollection principals) 方法的具體實現(xiàn)

19.如何配置在 Spring 中配置使用 Shiro

  ①. 在 web.xml 中配置 Shiro 的 Filter
  ②. 在 Spring 的配置文件中配置  Shiro:
    > 配置自定義 Realm:實現(xiàn)自定義認(rèn)證和授權(quán)
    > 配置 Shiro 實體類使用的緩存策略
    > 配置 SecurityManager
    > 配置保證 Shiro 內(nèi)部 Bean 聲明周期都得到執(zhí)行的 Lifecycle Bean 后置處理器
    > 配置AOP 式方法級權(quán)限檢查
    > 配置 Shiro Filter

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多