大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 小白自學(xué)Java框架,框架的全面解析總結(jié)

小白自學(xué)Java框架,框架的全面解析總結(jié)

更新時(shí)間:2019-09-26 09:17:01 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2987次



  springmvc工作機(jī)制(原理)


  DispatcherServlet主要用作職責(zé)調(diào)度工作,本身主要用于控制流程

image.png

  1、springmvc將所有的請求都提交給DispatcherServlet,它會(huì)委托應(yīng)用系統(tǒng)的其他模塊負(fù)責(zé)對請求進(jìn)行真正的處理工作;


  2、DispatcherServlet查詢一個(gè)或多個(gè)


  HandlerMapping,找到處理請求的Controller;


  3、DispatcherServlet將請求提交到目標(biāo)Controller;


  4、Controller進(jìn)行業(yè)務(wù)邏輯處理后,會(huì)返回一個(gè)ModelAndView;


  5、DispathcherServlet查詢一個(gè)或多個(gè)ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象;


  6、視圖負(fù)責(zé)將結(jié)果顯示到客戶端;視圖對象負(fù)責(zé)渲染返回給客戶端。


  DispatcherServlet:前端控制器;(相當(dāng)于一個(gè)轉(zhuǎn)發(fā)器,中央處理器,調(diào)度)


  ModelAndView:模型和視圖的結(jié)合體;(Springmvc的底層對象)


  HandlerMapping:處理器映射器


  springmvc運(yùn)行原理


  1、客戶端請求提交到DispatcherServlet;


  2、由DispatcherServlet控制器查詢一個(gè)或多HandlerMapping,找到處理請求的Controller;


  3、DispatcherServlet將請求提交到Controller;


  4、Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView;


  5、DispatcherServlet查詢一個(gè)或多個(gè)ViewResoler視圖解析器,找到ModelAndView指定的視圖;


  6、視圖負(fù)責(zé)將結(jié)果顯示到客戶端。


  DispatcherServlet是整個(gè)SpringMVC的核心。它負(fù)責(zé)接收HTTP請求組織協(xié)調(diào)SpringMVC的各個(gè)組成部分。其主要工作有以下三項(xiàng):


  1、截獲符合特定格式的URL請求;


  2、初始化DispatcherServlet上下文對應(yīng)的WebApplicationContext,并將其與業(yè)務(wù)層、持久化層的WebApplicationContext建立關(guān)聯(lián);


  3、初始化SpringMVC的各個(gè)組成組件,并裝配到DispatcherServlet中。


  Hibernate工作原理及為什么要用?


  原理:


  1、讀取并解析配置文件


  2、讀取并解析映射信息,創(chuàng)建SessionFactory


  3、打開Sesssion


  4、創(chuàng)建事務(wù)Transation


  5、持久化操作


  6、提交事務(wù)


  7、關(guān)閉Session


  8、關(guān)閉SesstionFactory


  為什么要用:


  1、對JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復(fù)性代碼;


  2、Hibernate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。他很大程度的簡化DAO層的編碼工作;


  3、hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透明性;


  4、hibernate的性能非常好,因?yàn)樗莻€(gè)輕量級框架。映射的靈活性很出色。它支持各種關(guān)系數(shù)據(jù)庫,從一對一到多對多的各種復(fù)雜關(guān)系。


  Struts工作機(jī)制?為什么要使用Struts?


  工作機(jī)制:


  Struts的工作流程:


  在web應(yīng)用啟動(dòng)時(shí)就會(huì)加載初始化ActionServlet,ActionServlet從struts-config.xml文件中讀取配置信息,把它們存放到各種配置對象。


  當(dāng)ActionServlet接收到一個(gè)客戶請求時(shí),將執(zhí)行如下流程.


  (1)檢索和用戶請求匹配的ActionMapping實(shí)例,如果不存在,就返回請求路徑無效信息;


  (2)如果ActionForm實(shí)例不存在,就創(chuàng)建一個(gè)ActionForm對象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對象中;


  (3)根據(jù)配置信息決定是否需要表單驗(yàn)證.如果需要驗(yàn)證,就調(diào)用ActionForm的validate()方法;


  (4)如果ActionForm的validate()方法返回null或返回一個(gè)不包含ActionMessage的ActuibErrors對象,就表示表單驗(yàn)證成功;


  (5)ActionServlet根據(jù)ActionMapping所包含的映射信息決定將請求轉(zhuǎn)發(fā)給哪個(gè)Action,如果相應(yīng)的Action實(shí)例不存在,就先創(chuàng)建這個(gè)實(shí)例,然后調(diào)用Action的execute()方法;


  (6)Action的execute()方法返回一個(gè)ActionForward對,象,ActionServlet在把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指向的JSP組件;


  (7)ActionForward對象指向JSP組件生成動(dòng)態(tài)網(wǎng)頁,返回給客戶。


  為什么要用:


  JSP、Servlet,JavaBean技術(shù)的出現(xiàn)給我們構(gòu)建強(qiáng)大的企業(yè)應(yīng)用系統(tǒng)提供了可能。但用這些技術(shù)構(gòu)建的系統(tǒng)非常的繁亂,所以在此之上,我們需要一個(gè)規(guī)則、一個(gè)把這些技術(shù)組織起來的規(guī)則,這就是框架,Struts便應(yīng)運(yùn)而生。


  基于Struts開發(fā)的應(yīng)用由3類組件構(gòu)成:控制器組件、模型組件、視圖組件


  如何優(yōu)化Hibernate?


  1、使用雙向一對多關(guān)聯(lián),不使用單向一對多


  2、靈活使用單向一對多關(guān)聯(lián);


  3、不用一對一,用多對一取代;


  4、配置對象緩存,不使用集合緩存;


  5、一對多集合使用Bag,多對多集合使用Set;


  6、繼承類使用顯式多態(tài);


  7、表字段要少,表關(guān)聯(lián)不要怕多,有二級緩存撐腰。


  Spring工作原理


  Spring已經(jīng)用過一段時(shí)間了,感覺Spring是個(gè)很不錯(cuò)的框架。內(nèi)部最核心的就是IOC了,動(dòng)態(tài)注入,讓一個(gè)對象的創(chuàng)建不用new了,可以自動(dòng)的生產(chǎn),這其實(shí)就是利用java里的反射,反射其實(shí)就是在運(yùn)行時(shí)動(dòng)態(tài)的去創(chuàng)建、調(diào)用對象,Spring就是在運(yùn)行時(shí),跟xmlSpring的配置文件來動(dòng)態(tài)的創(chuàng)建對象,和調(diào)用對象里的方法的。


  Spring還有一個(gè)核心就是AOP這個(gè)就是面向切面編程,可以為某一類對象進(jìn)行監(jiān)督和控制(也就是在調(diào)用這類對象的具體方法的前后去調(diào)用你指定的模塊)從而達(dá)到對一個(gè)模塊擴(kuò)充的功能。這些都是通過配置類達(dá)到的。


  Spring目的:就是讓對象與對象(模塊與模塊)之間的關(guān)系沒有通過代碼來關(guān)聯(lián),都是通過配置類說明管理的(Spring根據(jù)這些配置內(nèi)部通過反射去動(dòng)態(tài)的組裝對象)


  Struts2框架本身大致可以分為3個(gè)部分:


  核心控制器FilterDispatcher、業(yè)務(wù)控制器Action和用戶實(shí)現(xiàn)的企業(yè)業(yè)務(wù)邏輯組件。


  核心控制器FilterDispatcher是Struts2框架的基礎(chǔ),包含了框架內(nèi)部的控制流程和處理機(jī)制。


  業(yè)務(wù)控制器Action和業(yè)務(wù)邏輯組件是需要用戶來自己實(shí)現(xiàn)的。


  用戶在開發(fā)Action和業(yè)務(wù)邏輯組件的同時(shí),還需要編寫相關(guān)的配置文件,供核心控制器FilterDispatcher來使用。


  Struts2的工作流程相對于Struts1要簡單,與WebWork框架基本相同,所以說Struts2是WebWork的升級版本。


  基本簡要流程如下:


  1、客戶端初始化一個(gè)指向Servlet容器的請求;


  2、這個(gè)請求經(jīng)過一系列的過濾器(Filter)(這些過濾器中有一個(gè)叫做ActionContextCleanUp的可選過濾器,這個(gè)過濾器對于Struts2和其他框架的集成很有幫助,例如:SiteMesh?Plugin)


  3、接著FilterDispatcher被調(diào)用,


  FilterDispatcher詢問ActionMapper來決定這個(gè)請求是否需要調(diào)用某個(gè)Action;


  4、如果ActionMapper決定需要調(diào)用某個(gè)Action,F(xiàn)ilterDispatcher把請求的處理交給ActionProxy;


  5、ActionProxy通過ConfigurationManager(配置管理器)詢問框架的配置文件,找到需要調(diào)用的Action類;


  6、ActionProxy創(chuàng)建一個(gè)ActionInvocation的實(shí)例;


  7、ActionInvocation實(shí)例使用命名模式來調(diào)用,在調(diào)用Action的過程前后,涉及到相關(guān)攔截器(Intercepter)的調(diào)用;


  8、一旦Action執(zhí)行完畢,ActionInvocation負(fù)責(zé)根據(jù)struts.xml中的配置找到對應(yīng)的返回結(jié)果。


  返回結(jié)果通常是(但不總是,也可?能是另外的一個(gè)Action鏈)一個(gè)需要被表示的JSP或者FreeMarker的模版。


  在表示的過程中可以使用Struts2?框架中繼承的標(biāo)簽。在這個(gè)過程中需要涉及到ActionMapper;


  9.響應(yīng)的返回是通過我們在web.xml中配置的過濾器;


  10、如果ActionContextCleanUp是當(dāng)前使用的,則FilterDispatecher將不會(huì)清理sreadlocal?ActionContext;


  如果ActionContextCleanUp不使用,則將會(huì)去清理。


  說下Struts的設(shè)計(jì)模式


  MVC模式:web應(yīng)用程序啟動(dòng)時(shí)就會(huì)加載并初始化ActionServler。用戶提交表單時(shí),一個(gè)配置好的ActionForm對象被創(chuàng)建,并被填入表單相應(yīng)的數(shù)據(jù),ActionServler根據(jù)Struts-config.xml文件配置好的設(shè)置決定是否需要表單驗(yàn)證,如果需要就調(diào)用ActionForm的Validate()驗(yàn)證后選擇將請求發(fā)送到哪個(gè)Action,如果Action不存在,ActionServlet會(huì)先創(chuàng)建這個(gè)對象,然后調(diào)用Action的execute()方法。Execute()從ActionForm對象中獲取數(shù)據(jù),完成業(yè)務(wù)邏輯,返回一個(gè)ActionForward對象,ActionServlet再把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指定的jsp組件,ActionForward對象指定的jsp生成動(dòng)態(tài)的網(wǎng)頁,返回給客戶。


  攔截器和過濾器的區(qū)別


  1、攔截器是基于java反射機(jī)制的,而過濾器是基于函數(shù)回調(diào)的。


  2、攔截器不依賴于servlet容器,過濾器依賴于servlet容器。


  3、攔截器只能對Action請求起作用,而過濾器則可以對幾乎所有請求起作用。


  4、攔截器可以訪問Action上下文、值棧里的對象,而過濾器不能。


  5、在Action的生命周期中,攔截器可以多次調(diào)用,而過濾器只能在容器初始化時(shí)被調(diào)用一次。


  struts1于struts2的比較


  1、Action類:


  Struts1要求Action類繼承一個(gè)抽象基類。Struts1的一個(gè)普遍問題是使用抽象類編程而不是接口。


  Struts2Action類可以實(shí)現(xiàn)一個(gè)Action接口,也可實(shí)現(xiàn)其他接口,使可選和定制的服務(wù)成為可能。


  Struts2提供一個(gè)ActionSupport基類去實(shí)現(xiàn)常用的接口。Action接口不是必須的,任何有execute標(biāo)識的POJO對象都可以用作Struts2的Action對象。


  2、線程模式:


  Struts1Action是單例模式并且必須是線程安全的,因?yàn)閮H有Action的一個(gè)實(shí)例來處理所有的請求。


  單例策略限制了Struts1Action能作的事,并且要在開發(fā)時(shí)特別小心。Action資源必須是線程安全的或同步的。


  Struts2Action對象為每一個(gè)請求產(chǎn)生一個(gè)實(shí)例,因此沒有線程安全問題。(實(shí)際上,


  servlet容器給每個(gè)請求產(chǎn)生許多可丟棄的對象,并且不會(huì)導(dǎo)致性能和垃圾回收問題)


  3、Servlet依賴:


  Struts1Action依賴于ServletAPI,因?yàn)楫?dāng)一個(gè)Action被調(diào)用時(shí)HttpServletRequest和HttpServletResponse被傳遞給execute方法。


  Struts2Action不依賴于容器,允許Action脫離容器單獨(dú)被測試。如果需要,Struts2Action仍然可以訪問初始的request和response。


  但是,其他的元素減少或者消除了直接訪問HttpServetRequest和HttpServletResponse的必要性。


  4、可測性:


  測試Struts1?Action的一個(gè)主要問題是execute方法暴露了servlet?API(這使得測試要依賴于容器)。


  一個(gè)第三方擴(kuò)展--StrutsTestCase--提供了一套Struts1的模擬對象(來進(jìn)行測試)


  Struts2Action可以通過初始化、設(shè)置屬性、調(diào)用方法來測試,“依賴注入”支持也使測試更容易。


  5、捕獲輸入:


  Struts1使用ActionForm對象捕獲輸入。所有的ActionForm必須繼承一個(gè)基類。因?yàn)槠渌鸍avaBean不能用作ActionForm,開發(fā)者經(jīng)常創(chuàng)建多余的類捕獲輸入。動(dòng)態(tài)Bean(DynaBeans)可以作為創(chuàng)建傳統(tǒng)ActionForm的選擇,但是,開發(fā)者可能是在重新描述(創(chuàng)建)已經(jīng)存在的JavaBean(仍然會(huì)導(dǎo)致有冗余的javabean)。


  Struts2直接使用Action屬性作為輸入屬性,消除了對第二個(gè)輸入對象的需求。輸入屬性可能是有自己(子)屬性的rich對象類型。


  Action屬性能夠通過web頁面上的taglibs訪問。Struts2也支持ActionForm模式。rich對象類型,包括業(yè)務(wù)對象,能夠用作輸入/輸出對象。


  這種ModelDriven特性簡化了taglib對POJO輸入對象的引用。


  6、表達(dá)式語言:


  Struts1整合了JSTL,因此使用JSTLEL。這種EL有基本對象圖遍歷,但是對集合和索引屬性的支持很弱。


  Struts2可以使用JSTL,但是也支持一個(gè)更強(qiáng)大和靈活的表達(dá)式語言--"ObjectGraphNotationLanguage"(OGNL).


  7、綁定值到頁面(view):


  Struts1使用標(biāo)準(zhǔn)JSP機(jī)制把對象綁定到頁面中來訪問。


  Struts2使用"ValueStack"技術(shù),使taglib能夠訪問值而不需要把你的頁面(view)和對象綁定起來。


  ValueStack策略允許通過一系列名稱相同但類型不同的屬性重用頁面(view)。


  8、類型轉(zhuǎn)換:


  Struts1ActionForm屬性通常都是String類型。Struts1使用Commons-Beanutils進(jìn)行類型轉(zhuǎn)換。每個(gè)類一個(gè)轉(zhuǎn)換器,對每一個(gè)實(shí)例來說是不可配置的。


  Struts2使用OGNL進(jìn)行類型轉(zhuǎn)換。提供基本和常用對象的轉(zhuǎn)換器。


  9、校驗(yàn):


  Struts1支持在ActionForm的validate方法中手動(dòng)校驗(yàn),或者通過CommonsValidator的擴(kuò)展來校驗(yàn)。


  同一個(gè)類可以有不同的校驗(yàn)內(nèi)容,但不能校驗(yàn)子對象。


  Struts2支持通過validate方法和XWork校驗(yàn)框架來進(jìn)行校驗(yàn)。XWork校驗(yàn)框架使用為屬性類類型定義的校驗(yàn)和內(nèi)容校驗(yàn),來支持chain校驗(yàn)子屬性.


  10、Action執(zhí)行的控制:


  Struts1支持每一個(gè)模塊有單獨(dú)的RequestProcessors(生命周期),但是模塊中的所有Action必須共享相同的生命周期。


  Struts2支持通過攔截器堆棧(InterceptorStacks)為每一個(gè)Action創(chuàng)建不同的生命周期。堆棧能夠根據(jù)需要和不同的Action一起使用。


  為什么要使用Struts2


  Struts2是一個(gè)相當(dāng)強(qiáng)大的JavaWeb開源框架,是一個(gè)基于POJO的Action的MVCWeb框架。它基于當(dāng)年的Webwork和XWork框架,繼承其優(yōu)點(diǎn),同時(shí)做了相當(dāng)?shù)母倪M(jìn)。


  1、Struts2基于MVC架構(gòu),框架結(jié)構(gòu)清晰,開發(fā)流程一目了然,開發(fā)人員可以很好的掌控開發(fā)的過程。


  2、使用OGNL進(jìn)行參數(shù)傳遞。


  OGNL提供了在Struts2里訪問各種作用域中的數(shù)據(jù)的簡單方式,你可以方便的獲取Request,Attribute,Application,Session,Parameters中的數(shù)據(jù)。大大簡化了開發(fā)人員在獲取這些數(shù)據(jù)時(shí)的代碼量。


  (OGNL是Object-GraphNavigationLanguage的縮寫,它是一種功能強(qiáng)大的表達(dá)式語言,通過它簡單一致的表達(dá)式語法,可以存取對象的任意屬性,調(diào)用對象的方法,遍歷整個(gè)對象的結(jié)構(gòu)圖,實(shí)現(xiàn)字段類型轉(zhuǎn)化等功能。它使用相同的表達(dá)式去存取對象的屬性。)


  3、強(qiáng)大的攔截器。


  Struts2的攔截器是一個(gè)Action級別的AOP,Struts2中的許多特性都是通過攔截器來實(shí)現(xiàn)的,例如異常處理,文件上傳,驗(yàn)證等。攔截器是可配置與重用的,可以將一些通用的功能如:登錄驗(yàn)證,權(quán)限驗(yàn)證等置于攔截器中。


  以完成一些Java?Web項(xiàng)目中比較通用的功能。在我實(shí)現(xiàn)的的一Web項(xiàng)目中,就是使用Struts2的攔截器來完成了系統(tǒng)中的權(quán)限驗(yàn)證功能。


  4.易于測試。


  Struts2的Action都是簡單的POJO,這樣可以方便的對Struts2的Action編寫測試用例,大大方便了5JavaWeb項(xiàng)目的測試。


  5、易于擴(kuò)展的插件機(jī)制在Struts2添加擴(kuò)展是一件愉快而輕松的事情,只需要將所需要的Jar包放到WEB-INF/lib文件夾中,在struts.xml中作一些簡單的設(shè)置就可以實(shí)現(xiàn)擴(kuò)展。


  6.模塊化管理。


  Struts2已經(jīng)把模塊化作為了體系架構(gòu)中的基本思想,可以通過三種方法來將應(yīng)用程序模塊化:將配置信息拆分成多個(gè)文件把自包含的應(yīng)用模塊創(chuàng)建為插件創(chuàng)建新的框架特性,即將與特定應(yīng)用無關(guān)的新功能組織成插件,以添加到多個(gè)應(yīng)用中去。


  7.全局結(jié)果與聲明式異常。


  為應(yīng)用程序添加全局的Result,和在配置文件中對異常進(jìn)行處理,這樣當(dāng)處理過程中出現(xiàn)指定異常時(shí),可以跳轉(zhuǎn)到特定頁面。


  他的如此之多的優(yōu)點(diǎn),是很多人比較的青睞,與spring,Hibernate進(jìn)行結(jié)合,組成了現(xiàn)在比較流行的ssh框架。


  struts2有哪些優(yōu)點(diǎn)


  1、在軟件設(shè)計(jì)上Struts2的應(yīng)用可以不依賴于ServletAPI和strutsAPI。Struts2的這種設(shè)計(jì)屬于無侵入式設(shè)計(jì);


  2、攔截器,實(shí)現(xiàn)如參數(shù)攔截注入等功能;


  3、類型轉(zhuǎn)換器,可以把特殊的請求參數(shù)轉(zhuǎn)換成需要的類型;


  4、多種表現(xiàn)層技術(shù),如:JSP、freeMarker、Velocity等;


  5、Struts2的輸入校驗(yàn)可以對指定某個(gè)方法進(jìn)行校驗(yàn);


  6、提供了全局范圍、包范圍和Action范圍的國際化資源文件管理實(shí)現(xiàn)。


  struts2是如何啟動(dòng)的?


  struts2框架是通過Filter啟動(dòng)的,即StrutsPrepareAndExecuteFilter,此過濾器為struts2的核心過濾器;


  StrutsPrepareAndExecuteFilter的init()方法中將會(huì)讀取類路徑下默認(rèn)的配置文件struts.xml完成初始化操作。


  struts2讀取到struts.xml的內(nèi)容后,是將內(nèi)容封裝進(jìn)javabean對象然后存放在內(nèi)存中,以后用戶的每次請求處理將使用內(nèi)存中的數(shù)據(jù),而不是每次請求都讀取struts.xml文件。


  struts2框架的核心控制器是什么?


  它有什么作用?


  1)Struts2框架的核心控制器是StrutsPrepareAndExecuteFilter。


  2)作用:負(fù)責(zé)攔截由<url-pattern>/*</url-pattern>指定的所有用戶請求,當(dāng)用戶請求到達(dá)時(shí),該Filter會(huì)過濾用戶的請求。


  默認(rèn)情況下,如果用戶請求的路徑不帶后綴或者后綴以.action結(jié)尾,這時(shí)請求將被轉(zhuǎn)入struts2框架處理。


  否則struts2框架將略過該請求的處理。可以通過常量"struts.action.extension"修改action的后綴。


  如:<constantname="struts.action.extension"value="do"/>


  如果用戶需要指定多個(gè)請求后綴,則多個(gè)后綴之間以英文逗號(,)隔開。


  <constantname="struts.action.extension"value="do,go"/>


  struts2配置文件的加載順序:


  struts.xml——>struts.properties常量可以在struts.xml或struts.properties中配置,如果在多個(gè)文件中配置了同一個(gè)常量,則后一個(gè)文件中配置的常量值會(huì)覆蓋前面文件中配置的常量值。


  struts.xml文件的作用:通知Struts2框架加載對應(yīng)的Action資源。


  struts2是如何管理action的?


  這種管理方式有什么好處?


  struts2框架中使用包來管理Action,包的作用和java中的類包是非常類似的。


  主要用于管理一組業(yè)務(wù)功能相關(guān)的action。在實(shí)際應(yīng)用中,我們應(yīng)該把一組業(yè)務(wù)功能相關(guān)的Action放在同一個(gè)包下。


  struts2默認(rèn)能解決get和post提交方式的亂碼問題嗎?


  不能。struts.i18n.encoding=UTF-8屬性值只能解析POST提交下的亂碼問題。


  ActionContext、ServletContext、pageContext的區(qū)別?


  1)ActionContext是當(dāng)前的Action的上下文環(huán)境,通過ActionContext可以獲取到request、session、ServletContext等與Action有關(guān)的對象的引用;


  2)ServletContext是域?qū)ο螅粋€(gè)web應(yīng)用中只有一個(gè)ServletContext,生命周期伴隨整個(gè)web應(yīng)用;


  3)pageContext是JSP中的最重要的一個(gè)內(nèi)置對象,可以通過pageContext獲取其他域?qū)ο蟮膽?yīng)用,同時(shí)它是一個(gè)域?qū)ο螅饔梅秶会槍Ξ?dāng)前頁面,當(dāng)前頁面結(jié)束時(shí),pageContext銷毀,生命周期是JSP四個(gè)域?qū)ο笾凶钚〉摹?/p>


  以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編介紹的“小白自學(xué)Java框架,框架的全面解析總結(jié)”的內(nèi)容,希望對大家有幫助,更多java最新資訊請繼續(xù)關(guān)注動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。

提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产福利不卡视频在免费播放 | 日韩欧美亚洲综合一区二区 | 日韩欧美亚洲国产精品字幕久久久 | 亚洲最新视频在线观看 | 国产二级毛片 | 黄色在线免费看 | 色综合视频在线 | 亚洲乱码在线观看 | 久久久网 | 成年人视频黄色 | 国产精品久久久 | 亚洲国产精品yw在线观看 | 精品欧美一区手机在线观看 | 欧美日韩在线成人 | a成人毛片免费观看 | 狠狠色噜狠狠狠狠色综合久 | 亚洲久久视频 | 亚洲国产欧美在线 | 日日噜噜爽爽狠狠视频 | 久久精品成人免费看 | 成人久久18网站 | 国产一极毛片 | 日日欧美 | 天天操夜夜操美女 | 天天射天天干天天 | 视频国产免费 | 亚洲成人伊人网 | 亚洲 国产精品 日韩 | 国产一区二区三区日韩欧美 | 亚洲二三区 | 欧美激情特级黄aa毛片 | 青青久久99久久99久久999 | 免费爱爱小视频 | 99在线观看视频免费 | 欧美午夜在线视频 | 男女性高清爱潮视频免费观看 | 亚洲精国产一区二区三区 | 免费观看a毛片一区二区不卡 | 在线观看精品视频一区二区三区 | 久久综合久久鬼色 | 这里只有久久精品视频 |