日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

freemarker的测试结果框架_java必背综合知识点总结(框架篇)

發(fā)布時(shí)間:2025/3/11 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 freemarker的测试结果框架_java必背综合知识点总结(框架篇) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

框架篇

一、Struts1的運(yùn)行原理

在啟動(dòng)時(shí)通過(guò)前端總控制器ActionServlet加載struts-config.xml并進(jìn)行解析,當(dāng)用戶在jsp頁(yè)面發(fā)送請(qǐng)求被struts1的核心控制器ActionServlet接收,ActionServlet在用戶請(qǐng)求時(shí)將請(qǐng)求參數(shù)放到對(duì)應(yīng)的ActionForm對(duì)象中的成員變量中,然后ActionServlet則會(huì)根據(jù)struts-config.xml中的映射關(guān)系找到相應(yīng)的Action中的方法,將對(duì)應(yīng)的ActionForm一并傳給這個(gè)Action中的方法里,然后執(zhí)行相應(yīng)的業(yè)務(wù)邏輯操作,最后就根據(jù)ActionMapping的findforward方法返回一個(gè)ActionForward,之后在struts-config.xml中找到與之對(duì)應(yīng)的forward標(biāo)簽,根據(jù)它的配置路徑找到對(duì)應(yīng)的jsp頁(yè)面。

二、Struts2的運(yùn)行原理

1、tomcat 啟動(dòng)的時(shí)候會(huì)加載 web.xml 、核心控制器 FilterDispatcher 會(huì)加載并解析 struts.xml

2、客戶端會(huì)發(fā)送一個(gè)請(qǐng)求到 action 、FilterDispatcher 會(huì)根據(jù)后綴名進(jìn)行攔截

3、FilterDispatcher根據(jù) struts.xml 的配置文件信息 找到 某個(gè)action 對(duì)應(yīng)的某個(gè)類里的指定方法

4、執(zhí)行相關(guān)的業(yè)務(wù)邏輯最后返回 一個(gè)String

5、 里配置 name的屬性值與返回的String 進(jìn)行匹配,跳轉(zhuǎn)到指定的jsp 頁(yè)面

三、struts2的體系結(jié)構(gòu)

1、客戶端向Servlet容器(例如Tomcat)發(fā)送一個(gè)請(qǐng)求;

2、這個(gè)請(qǐng)求經(jīng)過(guò)一系列的過(guò)濾器(Filter);

3、接著FilterDispatcher被調(diào)用,FilterDispatcher詢問(wèn)ActionMapper來(lái)決定這個(gè)請(qǐng)求是否需要調(diào)用某個(gè)Action;

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

5、ActionProxy通過(guò)Configuration Manager詢問(wèn)框架的配置文件,找到需要調(diào)用的Action類;

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

7、ActionInvocation在調(diào)用Action的過(guò)程前后,涉及到相關(guān)攔截器(Intercepter)的調(diào)用。

8、一旦Action執(zhí)行完畢,ActionInvocation負(fù)責(zé)根據(jù)struts.xml中的配置找到對(duì)應(yīng)的返回結(jié)果。返回結(jié)果通常是jsp或者FreeMarker的模版。(體系結(jié)構(gòu)圖見(jiàn)下一頁(yè))

四、Spring MVC運(yùn)行原理

整個(gè)處理過(guò)程從一個(gè)HTTP請(qǐng)求開(kāi)始:

1.Tomcat在啟動(dòng)時(shí)加載解析web.xml,找到spring mvc的前端總控制器DispatcherServlet,并且通過(guò)DispatcherServlet來(lái)加載相關(guān)的配置文件信息。

2.DispatcherServlet接收到客戶端請(qǐng)求,找到對(duì)應(yīng)HandlerMapping,根據(jù)映射規(guī)則,找到對(duì)應(yīng)的處理器(Handler)。

3.調(diào)用相應(yīng)處理器中的處理方法,處理該請(qǐng)求后,會(huì)返回一個(gè)ModelAndView。

4.DispatcherServlet根據(jù)得到的ModelAndView中的視圖對(duì)象,找到一個(gè)合適的ViewResolver(視圖解析器),根據(jù)視圖解析器的配置,DispatcherServlet將要顯示的數(shù)據(jù)傳給對(duì)應(yīng)的視圖,最后顯示給用戶。

五、Struts1.x與Struts2.x的區(qū)別

Struts 2以WebWork為核心,

采用攔截器的機(jī)制來(lái)處理用戶的請(qǐng)求,struts1嚴(yán)重依賴于servletAPI,

屬于侵入性框架,struts2不嚴(yán)重依賴于servletAPI,屬于非侵入型框架。

線程模型方面:

Struts1的Action是單實(shí)例的,

一個(gè)Action的實(shí)例處理所有的請(qǐng)求。

Struts2的Action是一個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)實(shí)例(每次請(qǐng)求時(shí)都新new出一個(gè)對(duì)象),

沒(méi)有線程安全方面的問(wèn)題

封裝請(qǐng)求參數(shù):

Struts1中強(qiáng)制使用ActionForm對(duì)象封裝請(qǐng)求的參數(shù)。

Struts2可以選擇使用POJO類來(lái)封裝請(qǐng)求的參數(shù),或者直接使用Action的屬性。

struts1的前端總控制器(核心總控制器)為ActionServlet,

struts2的前端總控制器(核心總控制器)為FilterDispather

六、Spring MVC、struts1和struts2區(qū)別

1.spring mvc 單例 非線程安全

struts1單例 非線程安全

struts2線程安全對(duì)每個(gè)請(qǐng)求都產(chǎn)生一個(gè)實(shí)例

2.spring mvc的入口是servlet,而struts2是filter

spring 的前端總控制器為 DispatcherServlet

struts2 的前端總控制器為 FilterDispatcher

struts1 的前端總控制器為 actionServlet

3. 參數(shù)傳遞:struts是在接受參數(shù)的時(shí)候,

可以用屬性來(lái)接受參數(shù),這就說(shuō)明參數(shù)是讓多個(gè)方法共享的。

springmvc 用方法來(lái)接受參數(shù)

4.spring mvc是基于方法的設(shè)計(jì),而sturts是基于類

七、Struts2中result中的type類型

1.dispatcher:它是默認(rèn)的,用來(lái)轉(zhuǎn)向頁(yè)面,通常處理JSP

2.redirect:將用戶重定向到一個(gè)已配置好的URL

3.redirectAction:將用戶重定向到一個(gè)已定義好的action

4.chain:將action和另外一個(gè)action鏈接起來(lái)

5.freemarker:呈現(xiàn)Freemarker模板

6.httpheader:返回一個(gè)已配置好的HTTP頭信息響應(yīng)

7.stream:向?yàn)g覽器發(fā)送InputSream對(duì)象對(duì)下載的內(nèi)容和圖片非常有用

8.velocity:呈現(xiàn)Velocity模板

9.xslt:該XML可以通過(guò)XSL模板進(jìn)行轉(zhuǎn)換

10.plaintext:顯示原始文件內(nèi)容,例如文件源代碼

八、Struts2標(biāo)簽

首先需要引用

1. 判斷標(biāo)簽 后面可跟

2. 迭代標(biāo)簽

3. 引入標(biāo)簽 可以把一個(gè)JSP頁(yè)面或者servlet引入一個(gè)頁(yè)面中

4. 輸出標(biāo)簽

5. 標(biāo)簽賦予變量一個(gè)特定范圍內(nèi)的值

6.

表單標(biāo)簽

7. 文本域標(biāo)簽

8. 下拉標(biāo)簽

9. 聲明一個(gè)url的路徑

最常用的是:

判斷

循環(huán)

輸出

九、SSI整合

1、Action繼承于Actionsupport

2、引入struts-spring-plugin.jar包,從而完成struts和spring的整合

3、在struts2的action中注入service,保證service的名字和配置文件中的一致,并生成get,set方法

4、Dao層繼承于SqlMapClientDaoSupport

5、在dao層的配置文件中注入sqlMapClient

十、SSH整合

1.首先在web.xml中通過(guò)ContextLoaderListener來(lái)融入spring,

并加載spring的相關(guān)配置文件

2.同樣配置sturts2的前端總控制器filterDispatcher來(lái)過(guò)濾相關(guān)的

請(qǐng)求并且加載struts.xml

3.action繼承ActionSupport,然后通過(guò)引入struts-spring-plugin.jar

包并且根據(jù)配置文件中service的id生成get,set方法來(lái)注入service層。

4.dao層繼承于HibernateDaoSupport,并且在dao的配置文件中注入sessionFactory.

5.通過(guò)spring中的配置文件加載hibernate.cfg.xml文件從而融入hibernate.

在ssh框架中是怎么整合spring?

首先在web.xml中通過(guò)ContextLoaderListener來(lái)融入spring,

并加載spring的相關(guān)配置文件

在ssh框架中是怎么整合hibernate?

通過(guò)spring中的配置文件加載hibernate.cfg.xml文件從而融入hibernate

dao層繼承于HibernateDaoSupport,并且在dao的配置文件中注入sessionFactory

在ssh框架中是怎么整合struts2?

配置sturts2的前端總控制器filterDispatcher來(lái)過(guò)濾相關(guān)的

請(qǐng)求并且加載struts.xml

十、Spring MVC整合

1.首先,要在web.xml里面配置SpringMVC的核心控制器,DispatcherServlet,對(duì)指定的后綴請(qǐng)求進(jìn)行攔截。

2.Controller層要加 @Controller注解,表明該類是MVC的控制層。

3.創(chuàng)建Service接口,給接口加上注解 @Component或者 @Service 表明這是Service業(yè)務(wù)處理層

4.在Controller層聲明Service變量(屬性),給變量(屬性) 加上 @Autowired注解,通過(guò)自動(dòng)綁定機(jī)制將Service注入到Controller。 (注:@Autowired默認(rèn)是ByType,如果想根據(jù)屬性名注入,那么就再加上注解 @Resource(name=“屬性名”))

5.在Controller層的方法上加上注解 @RequestMapping(“requestAddress”) 表明該方法的請(qǐng)求地址

6.Dao層要加上注解 @Repository 表明這是數(shù)據(jù)庫(kù)持久層

7.同樣將dao實(shí)例注入到service層中。

8.配置視圖解析器 “InternalResourceViewResolver”,對(duì)處理后的跳轉(zhuǎn)進(jìn)行統(tǒng)一配置。

十一、Hibernate 中g(shù)et 和 load的區(qū)別

加載方式:

load為延遲加載(返回的是一個(gè)只有id屬性的代理,只有使用該對(duì)象屬性時(shí),才發(fā)出sql語(yǔ)句);

get為立即加載(執(zhí)行時(shí),會(huì)立即向數(shù)據(jù)庫(kù)發(fā)出sql語(yǔ)句)

返回結(jié)果:

load檢索不到記錄時(shí),會(huì)拋ObjectNotFoundException異常

get檢索不到記錄時(shí),會(huì)返回null

十二、Hibernate、Ibatis、Jdbc三者的區(qū)別

Hibernate屬于全自動(dòng), Ibatis屬于半自動(dòng),Jdbc屬于手動(dòng),從開(kāi)發(fā)效率上講hibernate較高,ibatis居中,jdbc較低,從執(zhí)行效率上講hibernate較低,ibatis居中,jdbc較高,因?yàn)閖dbc是手工寫(xiě)sql語(yǔ)句,程序員對(duì)sql的控制能力更大,可以根據(jù)業(yè)務(wù)需要進(jìn)行優(yōu)化,而ibatis雖然也可以對(duì)sql進(jìn)行優(yōu)化,但是他里面將resultset封裝為實(shí)體的過(guò)程中采用了反射機(jī)制所以一定程度上影響了性能,而hibernate因?yàn)楦叨确庋b所以開(kāi)發(fā)效率相對(duì)較高,但正因?yàn)檫@個(gè)原因,所以程序員在對(duì)sql語(yǔ)句的控制和優(yōu)化方面相對(duì)比較弱,而且在將resultset封裝成實(shí)體的過(guò)程中也采用了反射機(jī)制,所以在性能方面較低

十三、Hibernate的運(yùn)行原理

首先通過(guò)configuration去加載hibernate.cfg.xml這個(gè)配置文件,根據(jù)

配置文件的信息去創(chuàng)建sessionFactory,sessionFactory是線程安全的,

是一個(gè)session工廠,用來(lái)創(chuàng)建session,session是線程不安全的,相當(dāng)于

jdbc的connection,最后通過(guò)session去進(jìn)行數(shù)據(jù)庫(kù)的各種操作,在進(jìn)行操作

的時(shí)候通過(guò)transaction進(jìn)行事務(wù)的控制。

十四、Hibernate五大核心(類/接口)簡(jiǎn)述

1 .Configuration接口的作用是對(duì)Hibernate進(jìn)行配置,以及對(duì)它進(jìn)行啟動(dòng)。(加載hibernate.cfg.xml)并創(chuàng)建一個(gè)SessionFactory對(duì)象。

2 .SessionFactory接口

SessionFactory接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象。SessionFactory是線程安全的。

3 .Session接口

Session(會(huì)話)接口是Hibernate應(yīng)用使用的主要接口。Session接口負(fù)責(zé)執(zhí)行被持久化對(duì)象的CRUD操作(增刪改查)。Session對(duì)象是非線程安全的。Session 相當(dāng)于jdbc的connection

4 .Query與Criteria接口

總之Query和Criteria接口負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫(kù)查詢。

5 .Transaction接口

Transaction(事務(wù))負(fù)責(zé)操作相關(guān)的事務(wù)。

十五、Hibernate與JDBC的區(qū)別

1、hibernate和jdbc主要區(qū)別就是,hibernate先檢索緩存中的映射對(duì)象( 即hibernate操作的是對(duì)象),而jdbc則是直接操作數(shù)據(jù)庫(kù).

2、Hibernate是JDBC的輕量級(jí)的對(duì)象封裝,它是一個(gè)獨(dú)立的對(duì)象持久層框架。Hibernate可以用在任何JDBC可以使用的場(chǎng)合

3、Hibernate是一個(gè)和JDBC密切關(guān)聯(lián)的框架,所以Hibernate的兼容性和JDBC驅(qū)動(dòng),和數(shù)據(jù)庫(kù)都有一定的關(guān)系,但是和使用它的Java程序,和App Server沒(méi)有任何關(guān)系,也不存在兼容性問(wèn)題。

4、如果正確的使用JDBC技術(shù),它的執(zhí)行效率一定比hibernate要好,因?yàn)閔ibernate是基于jdbc的技術(shù).

5、JDBC使用的是SQL語(yǔ)句,Hibernate使用的是HQL語(yǔ)句,但是HQL語(yǔ)句最終還會(huì)隱式轉(zhuǎn)換成SQL語(yǔ)句執(zhí)行。

十六、Hibernate中的兩大配置文件

.hbm.xml:主鍵生成策略,映射關(guān)系,一對(duì)多,一對(duì)一的關(guān)系。

Hibernate.cfg.xml:方言(用哪個(gè)數(shù)據(jù)庫(kù)),數(shù)據(jù)庫(kù)連接信息,包含.hbm.xml內(nèi)容,映射文件,也可以配事務(wù)。

十七、Hibernate事務(wù)處理

開(kāi)啟事務(wù) session.beginTransaction();

執(zhí)行相關(guān)的操作,如果成功則session.getTransaction().commit();

執(zhí)行操作失敗則 session.getTransaction.rollback();

十八、Hibernate的三種狀態(tài)以及狀態(tài)的轉(zhuǎn)換

Transient(臨時(shí))

new 一個(gè)初始化對(duì)象后,并沒(méi)有在數(shù)據(jù)庫(kù)里保存數(shù)據(jù),處于臨時(shí)狀態(tài);

Persistent(持久化)

當(dāng)執(zhí)行save()方法,調(diào)用session.close()方法之前,內(nèi)存中的對(duì)象與數(shù)據(jù)庫(kù)有 對(duì)應(yīng)關(guān)系處于持久化狀態(tài);

Detached(托管/游離)

當(dāng)執(zhí)行session.close()之后,處于托管狀態(tài);

狀態(tài)的轉(zhuǎn)換

處于托管狀態(tài)下,調(diào)用update()方法后,轉(zhuǎn)換為持久化狀態(tài);

在持久化狀態(tài)下,執(zhí)行delete()方法后,轉(zhuǎn)換為臨時(shí)狀態(tài);

在未初始化對(duì)象之前,調(diào)用get(),load(),find(),iterate()之后,直接進(jìn)入持久化狀態(tài)。

十九、分頁(yè)步驟

①前臺(tái)封裝一個(gè)顯示分頁(yè)的組件

②查詢總條數(shù)

③后臺(tái)封裝分頁(yè)工具類,計(jì)算開(kāi)始位置、結(jié)束位置、總頁(yè)數(shù)

④后臺(tái)寫(xiě)支持分頁(yè)的sql語(yǔ)句

⑤前臺(tái)包含分頁(yè)組件,實(shí)現(xiàn)分頁(yè)效果

注意:

查詢總條數(shù)的where和查詢列表信息的where條件要保證一致。

二十、hibernate緩存概述

hibernate分為一級(jí)緩存即session緩存也叫事務(wù)級(jí)別的緩存以及

二級(jí)緩存sessionFactory即應(yīng)用級(jí)別的緩存,還有查詢緩存即三級(jí)緩存.

一級(jí)緩存的生命周期和session的生命周期保持一致,

hibernate默認(rèn)就啟用了一級(jí)緩存,

不能將其關(guān)閉,可以通過(guò)session.clear()和session.evict(object)來(lái)管理一級(jí)緩存。其中g(shù)et,load,iterate都會(huì)使用一級(jí)緩存,一級(jí)緩存緩存的是對(duì)象。

二級(jí)緩存的生命周期和sessionFactory的生命周期保持一致,可以跨session,被多個(gè)session共享,hibernate3默認(rèn)開(kāi)啟二級(jí)緩存,也可以手動(dòng)開(kāi)啟并指定緩存插件如ehcache,oscache

等。二級(jí)緩存也只能緩存對(duì)象。

三級(jí)緩存也叫查詢緩存,查詢緩存是針對(duì)普通屬性結(jié)果集的緩存,

對(duì)實(shí)體對(duì)象的結(jié)果集只緩存id。對(duì)query.list()起作用,query.iterate不起作用,也就是query.iterate不使用查詢緩存

二十一、Ssh的概述:

ssh是web開(kāi)發(fā)中常見(jiàn)的一種框架

s-struts

s-spring

h-hibernate

其中struts在框架中充當(dāng)控制器,實(shí)現(xiàn)MVC,主要用來(lái)處理用戶的請(qǐng)求,和跳轉(zhuǎn)頁(yè)面。使項(xiàng)目結(jié)構(gòu)清晰,開(kāi)發(fā)者只需要關(guān)注業(yè)務(wù)邏輯的實(shí)現(xiàn)即可。

spring在ssh充當(dāng)粘合劑,粘合struts-sping-hibernate,主要用來(lái)進(jìn)行事物的控制,

hibernate-充當(dāng)數(shù)據(jù)庫(kù)持久層,主要用它來(lái)與數(shù)據(jù)庫(kù)交互,提高開(kāi)發(fā)效率,減輕程序員sql控制要求,而且hibernate通過(guò)反射機(jī)制,有靈活的映射性,還支持各種關(guān)系,一對(duì)一,一對(duì)多,多對(duì)多。

在進(jìn)行ssh整合的時(shí)候,我們應(yīng)該注意:

  • Action繼承于ActionSupport
  • 引入struts-spring-plugin.jar包,從而完成struts和spring的整合
  • 在struts2的action中注入service,保證service的名字和配置文件中的一致,并生成get,set方法
  • Dao層繼承于hibernateDaoSupport
  • 在dao層的配置文件中注入sessionFactory
  • 二十二、防止表單重復(fù)提交

    針對(duì)于重復(fù)提交的整體解決方案:

    1.用redirect來(lái)解決重復(fù)提交的問(wèn)題

    2.點(diǎn)擊一次之后,按鈕失效

    3.通過(guò)loading

    4.自定義重復(fù)提交過(guò)濾器

    5.解決struts2重復(fù)提交

    可以結(jié)合s:token標(biāo)簽來(lái)解決重復(fù)提交問(wèn)題

    利用token的原理:

    1.在前端的jsp頁(yè)面中加入s:token標(biāo)簽,在訪問(wèn)該頁(yè)面時(shí)就會(huì)生成

    隱藏域,該隱藏域中包含一個(gè)隨機(jī)生成的字符串,并把該字符串

    存入session中

    2.在struts2的配置文件中加入token攔截器后,當(dāng)正常訪問(wèn)action

    的時(shí)候,會(huì)從session中取出該字符串,然后和頁(yè)面隱藏域中提交

    字符串做對(duì)比,如果一致則正常執(zhí)行并刪除session中存儲(chǔ)的字符串。

    二十三、JSP標(biāo)簽:

    1.JSP include動(dòng)作

    jsp:include 動(dòng)作

    以“ ” 結(jié)束

    比如:

    2.JSP指令:

    以“ ” 結(jié)束。比如:

    3.JSP輸出表達(dá)式:

    輸出變量的值,后邊不能加

    4.JSP Scriptlet【腳本】:

    例子:

    5.JSP聲明:

    例子:

    String getHello(String name) {

    return “Hi,” + name + “!”;

    }

    %>

    6.迭代標(biāo)簽:

    Jstl中的核心標(biāo)簽(core)

    7.JSP注釋:

    8.el表達(dá)式:${}

    9.jsp:include動(dòng)作是在運(yùn)行時(shí)動(dòng)態(tài)包含。

    @include指令是在編譯時(shí)包含。

    它們兩個(gè)都只能包含本項(xiàng)目的相關(guān)文件,不能包含其他項(xiàng)目的。

    如果要包含其他項(xiàng)目的文件可以使用c:import

    二十四、過(guò)濾器

    filter的概述:

    filter是一個(gè)過(guò)濾器,用來(lái)在請(qǐng)求前和響應(yīng)后進(jìn)行數(shù)據(jù)的處理。

    filter的生命周期是:

    實(shí)例化—>初始化(init)–>進(jìn)行過(guò)濾(doFilter)—>銷毀(destroy)–>釋放資源

    一個(gè)Filter必須實(shí)現(xiàn)javax.servlet.Filter接口

    在項(xiàng)目中我們通常通過(guò)filter進(jìn)行編碼轉(zhuǎn)換,

    進(jìn)行安全驗(yàn)證,進(jìn)行重復(fù)提交的判斷。

    了解(不需要主動(dòng)說(shuō))

    filter 相當(dāng)于 攔截器 相當(dāng)于Spring AOP

    servlet+jsp+javabean+jdbc+filter

    encodingFilterorg.leopard.filter.EncodingFilterencodeutf-8encodingFilter*

    二十五、攔截器的理解

    什么是攔截器:

    攔截器是AOP中的概念,它本身是一段代碼,可以通過(guò)定義“織入點(diǎn)”,來(lái)指定攔截器的代碼在“織入點(diǎn)”的前后執(zhí)行,從而起到攔截的作用

    正如上面 Struts2的Reference中講述的,Struts2的Interceptor,其攔截的對(duì)象是Action代碼,可以定義在Action代碼之前或者之后執(zhí)行攔截器的代碼。

    在項(xiàng)目中,我們經(jīng)常用來(lái)攔截通過(guò)非正常程序而進(jìn)行的訪問(wèn)

    Struts2的攔截器和Servlet過(guò)濾器類似。在執(zhí)行Action的execute方法之前,Struts2會(huì)首先執(zhí)行在struts.xml中引用的攔截器,在執(zhí)行完所有引用的攔截器的intercept方法后,會(huì)執(zhí)行Action的execute方法。

    其中intercept方法是攔截器的核心方法,所有安裝的攔截器都會(huì)調(diào)用之個(gè)方法。在Struts2中已經(jīng)在struts-default.xml中預(yù)定義了一些自帶的攔截器,如timer、params等。如果在標(biāo)簽中繼承struts-default,則當(dāng)前package就會(huì)自動(dòng)擁有struts-default.xml中的所有配置。代碼如下:

    攔截器是Struts2框架的核心,它主要完成解析請(qǐng)求參數(shù)、將請(qǐng)求參數(shù)賦值給Action屬性、執(zhí)行數(shù)據(jù)校驗(yàn)、文件上傳等工作

    在struts-default.xml中有一個(gè)默認(rèn)的引用,在默認(rèn)情況下(也就是中未引用攔截器時(shí))會(huì)自動(dòng)引用一些攔截器。struts2中默認(rèn)的攔截器是defaultStack.

    自定義攔截器需要特別注意的是不要忘記引入struts2默認(rèn)的攔截器。為了實(shí)現(xiàn)某些操作,我們可以自定義攔截器,

    自定義攔截器有三種方式定義。分別為實(shí)現(xiàn)Interceptor接口,繼承抽象類AbstractInterceptor,繼承MethodFilterInteceptor類。

    攔截器在項(xiàng)目中的運(yùn)用:

    同時(shí)可以減輕代碼冗余,提高重用率。

    如果要求用戶密碼、權(quán)限等的驗(yàn)證,就可以用自定義的攔截器進(jìn)行密碼驗(yàn)證和權(quán)限限制。對(duì)符合的登入者才跳轉(zhuǎn)到正確頁(yè)面。

    二十六、Spring融入框架

    我們通過(guò)在web.xml中配置ContextLoaderListener這個(gè)監(jiān)聽(tīng)器也加載

    spring的配置文件,從而融入到項(xiàng)目框架中。

    二十七、項(xiàng)目的部署方式

    1、如果項(xiàng)目單獨(dú)部署到tomcat中的時(shí)候,應(yīng)該看tomcat中的server.xml;

    2、如果和eclipse結(jié)合使用進(jìn)行項(xiàng)目部署的時(shí)候,應(yīng)該看eclipse里面的server.xml.

    總結(jié)

    以上是生活随笔為你收集整理的freemarker的测试结果框架_java必背综合知识点总结(框架篇)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。