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

第一部分 Java基礎(chǔ)
第二部分 Java進(jìn)階

Java struts2面試題及答案

1、簡單介紹一下Struts2?

Struts2框架是一個按照MVC設(shè)計模式設(shè)計的WEB層框架,是在Struts 1和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并的全新的框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)差別巨大。Struts 2以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設(shè)計也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開。

我們可以把Struts2理解為一個大大的Servlet,而這個Servlet就是ActionServlet。Struts2在處理客戶端請求時,會先讀取web.xml配置文件,根據(jù)前端控制器將符合條件的請求分給各個不同的Action處理。在此之前,ActionServlet會把數(shù)據(jù)封裝成一個JavaBean。

Struts2框架提供了許多的攔截器,在封裝數(shù)據(jù)的過程中,我們可以對數(shù)據(jù)進(jìn)行一些操作,例如:數(shù)據(jù)校驗等等。當(dāng)Action執(zhí)行完后要返回一個結(jié)果視圖,這個結(jié)果視圖可以跟據(jù)struts2的配置文件中配置,選擇轉(zhuǎn)發(fā)或者重定向。

2、Struts2的執(zhí)行流程了解么?

● 關(guān)于圖中的Key:

Servlet Filters:過濾器鏈,客戶端的所有請求都要經(jīng)過Filter鏈的處理。

● Struts Core:Struts2的核心部分

Interceptors:Struts2的攔截器。Struts2提供了很多默認(rèn)的攔截器,可以完成日常開發(fā)的絕大部分工作;而我們自定義的攔截器,用來實現(xiàn)實際的客戶業(yè)務(wù)需要的功能。

User Created:由開發(fā)人員創(chuàng)建的,包括struts.xml、Action、Template,這些是每個使用Struts2來進(jìn)行開發(fā)的人員都必須會的。

● FilterDispatcher是整個Struts2的調(diào)度中心,也就是MVC中的C(控制中心),根據(jù)ActionMapper的結(jié)果來決定是否處理請求,如果ActionMapper指出該URL應(yīng)該被Struts2處理,那么它將會執(zhí)行Action處理,并停止過濾器鏈上還沒有執(zhí)行的過濾器。

● ActionMapper會判斷這個請求是否應(yīng)該被Struts2處理,如果需要Struts2處理,ActionMapper會返回一個對象來描述請求對應(yīng)的ActionInvocation的信息。

● ActionProxy會創(chuàng)建一個ActionInvocation實例,位于Action和xwork之間,使得我們在將來有機會引入更多的實現(xiàn)方式,比如通過WebService來實現(xiàn)等。

● ConfigurationManager是xwork配置的管理中心,可以把它看做struts.xml這個配置文件在內(nèi)存中的對應(yīng)。

● struts.xml是開發(fā)人員必須光顧的地方。是Stuts2的應(yīng)用配置文件,負(fù)責(zé)諸如URL與Action之間映射關(guān)系的配置、以及執(zhí)行后頁面跳轉(zhuǎn)的Result配置等。

● ActionInvocation是真正調(diào)用并執(zhí)行Action,它擁有一個Action實例和這個Action所依賴的攔截器實例。

● ActionInvocation會按照指定的順序去執(zhí)行這些攔截器、Action以及相應(yīng)的Result。

● Interceptor(攔截器):是Struts2的基石,類似于JavaWeb的Filter,攔截器是一些無狀態(tài)的類,攔截器可以自動攔截Action,它們給開發(fā)者提供了在Action運行之前或Result運行之后來執(zhí)行一些功能代碼的機會。

● Action:用來處理請求,封裝數(shù)據(jù)。

3、Struts2中Action配置的注意事項有哪些?

● name包名稱,在struts2的配置文件中,包名不能重復(fù),name并不是真正包名,只是為了管理Action

● namespace和<action>的name屬性,決定Action的訪問路徑(以/開始)

● extends繼承哪個包,通常開發(fā)中繼承struts-default包(struts-default包在struts-default.xml中定義)

4、攔截器和過濾器有哪些區(qū)別?

● 攔截器是基于java的反射機制的,而過濾器是基于函數(shù)回調(diào)???????

● 攔截器不依賴與servlet容器,而過濾器依賴與servlet容器???????

● 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用???????

● 攔截器可以訪問action上下文、值棧里的對象,而過濾器不能???????

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

5、Struts2的封裝方式有哪些?

● 屬性封裝

在action中設(shè)置成員變量,變量名與表單中的name屬性值相同

生成變量的set方法???????

實例:獲取用戶輸入的用戶名和密碼

● jsp頁面如下:

<form action="hello" method="post">
userName<input type="text" name="userName">
userPwd<input type="password" name="userPwd">
<input type="submit" value="submit">
</form>

● java代碼如下:

private String userName;
private String userPwd;
public String excute() {
    System.out.println("userName" + " " + "userPwd");
    return NONE;
}
public void setUserName(String userName) {
    this.userName = userName;
}
public void setUserPwd(String userPwd) {
    this.userPwd = userPwd;
}

 ???????6、簡單介紹一下Struts2的值棧?

值棧是對應(yīng)每一個請求對象的數(shù)據(jù)存儲中心。Struts2的一個很重要的特點就是引入了值棧。之前我們通過緩存或者模型驅(qū)動在action和頁面之間傳遞數(shù)據(jù),數(shù)據(jù)混亂,并且難以管理,緩存還有時間和數(shù)量限制,使用起來非常的困難。值棧的引入解決了這個問題,它可以統(tǒng)一管理頁面和action之間的數(shù)據(jù),供action、result、interceptor等使用。我們大多數(shù)情況下不需要考慮值棧在哪里,里面有什么,只需要去獲取自己需要的數(shù)據(jù)就可以了,大大的降低了開發(fā)人員的工作量和邏輯復(fù)雜性。

???????7、SpringMVC 和 Struts2 的區(qū)別?

Struts2是類級別的攔截,一個類對應(yīng)一個request上下文,SpringMVC是方法級別的攔截,一個方法對應(yīng)一個request上下文,而方法同時又跟一個url對應(yīng),所以說從架構(gòu)本身上SpringMVC就容易實現(xiàn)Restful url,而Struts2的架構(gòu)實現(xiàn)起來要費勁,因為Struts2中Action的一個方法可以對應(yīng)一個url,而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標(biāo)識其所屬方法了。???????

● SpringMVC的方法之間基本上獨立的,獨享request response數(shù)據(jù),請求數(shù)據(jù)通過參數(shù)獲取,處理結(jié)果通過Model Map交回給框架,方法之間不共享變量,而Struts2搞的就比較亂,雖然方法之間也是獨立的,但其所有Action變量是共享的,這不會影響程序運行,卻給我們編碼讀程序時帶來麻煩,每次來了請求就創(chuàng)建一個Action,一個Action對象對應(yīng)一個request上下文。???????

● Struts2需要針對每個request進(jìn)行封裝,把request,session等servlet生命周期的變量封裝成一個一個Map,供給每個Action使用,并保證線程安全,所以在原則上,Struts2是比較耗費內(nèi)存的。???????

● 攔截器實現(xiàn)機制上,Struts2有以自己的interceptor機制,SpringMVC用的是獨立的AOP方式,這樣導(dǎo)致Struts2的配置文件量還是比SpringMVC大。???????

● SpringMVC的入口是Servlet,而Struts2是filter(這里要指出,filter和servlet是不同的),這就導(dǎo)致了二者的機制不同,這里就牽涉到servlet和filter的區(qū)別了。???????

● SpringMVC集成了Ajax,使用非常方便,只需一個注解@ResponseBody就可以實現(xiàn),然后直接返回響應(yīng)文本即可,而Struts2攔截器集成了Ajax,在Action中處理時一般必須安裝插件或者自己寫代碼集成進(jìn)去,使用起來也相對不方便。???????

● SpringMVC驗證支持JSR303,處理起來相對更加靈活方便,而Struts2驗證比較繁瑣,感覺太煩亂。Spring MVC和Spring是無縫的。從這個項目的管理和安全上也比Struts2高(當(dāng)然Struts2也可以通過不同的目錄結(jié)構(gòu)和相關(guān)配置做到SpringMVC一樣的效果,但是需要xml配置的地方不少)。???????

● 設(shè)計思想上,Struts2更加符合OOP的編程思想,SpringMVC就比較謹(jǐn)慎,是servlet上擴展。???????

● SpringMVC開發(fā)效率和性能高于Struts2,SpringMVC可以認(rèn)為已經(jīng)100%零配置。

8、Struts2中的#和%分別是做什么的?******

(1)使用#獲取 context 里面數(shù)據(jù)

<s:iterator value= "list"  var="user">
    <s:property value= "#user.username">
</s:iterator>

(2)向 request 域放值(獲取 context 里面數(shù)據(jù),寫 ognl 時候,首先添加符號#context 的 key 名稱.域?qū)ο竺Q)

(3)在頁面中使用 ognl 獲取

<s:property  value = "#request.req">

(4)%在 struts2 標(biāo)簽中表單標(biāo)簽

在 struts2 標(biāo)簽里面使用 ognl 表達(dá)式,如果直接在 struts2 表單標(biāo)簽里面使用 ognl 表達(dá)式不識別,只有%之后才會識別。???????

<s:textfield name="username" value="%{#request.req}">

9、???????Struts2中有哪些常用結(jié)果類型????????

● dispatcher:默認(rèn)的請求轉(zhuǎn)發(fā)的結(jié)果類型,Action轉(zhuǎn)發(fā)給JSP???????

● chain:Action轉(zhuǎn)發(fā)到另一個Action(同一次請求)???????

● redirect:重定向,重定向到一個路徑信息,路徑信息沒有限制(不在一個請求中),Action重定向到JSP 4)redirectAction:Action重定向到另一個Action???????

● stream:將原始數(shù)據(jù)作為流傳遞回瀏覽器端,該結(jié)果類型對下載的內(nèi)容和圖片非常有用。???????

● freemarker:呈現(xiàn)freemarker模板。???????

● plaintext:返回普通文本內(nèi)容。??????????????

全部教程
主站蜘蛛池模板: 狠狠色很很在鲁视频 | 99久久99久久精品国产 | 免费的性生活视频 | 一本伊大人香蕉高清在线观看 | 国内精品自在自线在免费 | 国产精品欧美一区二区 | 日本在线视频毛片 | 伊人网站在线 | 中文乱码字幕午夜无线观看 | 亚洲福利社 | 久久免费久久 | 精品一精品国产一级毛片 | 青草草在线观看 | 图片专区亚洲欧美另类 | 欧美做爰xxxⅹ性欧 欧美做爰xxxⅹ在线视频hd | 福利午夜国产网站在线不卡 | 91久久国产精品视频 | 夜精品a一区二区三区 | 国产精品尹人在线观看免费 | 国产一级爱c片免费播放 | 四虎avtom影院 | 国产精品久久大陆 | 久久综合九色婷婷97 | 国外成人在线视频 | 五月婷婷开心综合 | 日韩欧美亚洲国产精品字幕久久久 | 亚洲国产第一区二区三区 | 色婷婷精品大视频在线蜜桃视频 | 福利免费观看 | 99热r| 午夜按摩| 欧美午夜精品久久久久免费视 | 青青国产成人精品视频 | 亚洲欧美日韩国产vr在线观 | 天天摸天天爽天天澡视频 | 色老头成人免费视频天天综合 | 国产免费一级高清淫曰本片 | 99re久久资源最新地址 | 好看的一级毛片 | 欧美 国产 日本 | 久久综合九色综合欧洲 |