二十一、hibernate緩存概述
hibernate分為一級緩存即session緩存也叫事務(wù)級別的緩存以及
二級緩存sessionFactory即應(yīng)用級別的緩存,還有查詢緩存即三級緩存.
一級緩存的生命周期和session的生命周期保持一致,
hibernate默認(rèn)就啟用了一級緩存,
不能將其關(guān)閉,可以通過session.clear()和session.evict(object)來管理一級緩存。其中g(shù)et,load,iterate都會使用一級緩存,一級緩存緩存的是對象。
二級緩存的生命周期和sessionFactory的生命周期保持一致,可以跨session,被多個session共享,hibernate3默認(rèn)開啟二級緩存,也可以手動開啟并指定緩存插件如ehcache,oscache
等。二級緩存也只能緩存對象。
三級緩存也叫查詢緩存,查詢緩存是針對普通屬性結(jié)果集的緩存,
對實體對象的結(jié)果集只緩存id。對query.list()起作用,query.iterate不起作用,也就是query.iterate不使用查詢緩存
二十二、SSH的概述:
ssh是web開發(fā)中常見的一種框架
s-struts
s-spring
h-hibernate
其中struts在框架中充當(dāng)控制器,實現(xiàn)MVC,主要用來處理用戶的請求,和跳轉(zhuǎn)頁面。使項目結(jié)構(gòu)清晰,開發(fā)者只需要關(guān)注業(yè)務(wù)邏輯的實現(xiàn)即可。
spring在ssh充當(dāng)粘合劑,粘合struts-sping-hibernate,主要用來進(jìn)行事物的控制,
hibernate-充當(dāng)數(shù)據(jù)庫持久層,主要用它來與數(shù)據(jù)庫交互,提高開發(fā)效率,減輕程序員sql控制要求,而且hibernate通過反射機(jī)制,有靈活的映射性,還支持各種關(guān)系,一對一,一對多,多對多。
在進(jìn)行ssh整合的時候,我們應(yīng)該注意:
1. Action繼承于ActionSupport
引入struts-spring-plugin.jar包,從而完成struts和spring的整合
在struts2的action中注入service,保證service的名字和配置文件中的一致,并生成get,set方法
Dao層繼承于hibernateDaoSupport
在dao層的配置文件中注入sessionFactory
二十三、防止表單重復(fù)提交
針對于重復(fù)提交的整體解決方案:
1.用redirect來解決重復(fù)提交的問題
2.點擊一次之后,按鈕失效
3.通過loading
4.自定義重復(fù)提交過濾器
5.解決struts2重復(fù)提交
可以結(jié)合s:token標(biāo)簽來解決重復(fù)提交問題
利用token的原理:
1.在前端的jsp頁面中加入s:token標(biāo)簽,在訪問該頁面時就會生成
隱藏域,該隱藏域中包含一個隨機(jī)生成的字符串,并把該字符串
存入session中
2.在struts2的配置文件中加入token攔截器后,當(dāng)正常訪問action
的時候,會從session中取出該字符串,然后和頁面隱藏域中提交
字符串做對比,如果一致則正常執(zhí)行并刪除session中存儲的字符串。
二十四、JSP標(biāo)簽:
1.JSP include動作
jsp:include 動作
以“ ” 結(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動作是在運(yùn)行時動態(tài)包含。
@include指令是在編譯時包含。
它們兩個都只能包含本項目的相關(guān)文件,不能包含其他項目的。
如果要包含其他項目的文件可以使用c:import
二十五、過濾器
filter的概述:
filter是一個過濾器,用來在請求前和響應(yīng)后進(jìn)行數(shù)據(jù)的處理。
filter的生命周期是:
實例化--->初始化(init)-->進(jìn)行過濾(doFilter)--->銷毀(destroy)-->釋放資源
一個Filter必須實現(xiàn)javax.servlet.Filter接口
在項目中我們通常通過filter進(jìn)行編碼轉(zhuǎn)換,
進(jìn)行安全驗證,進(jìn)行重復(fù)提交的判斷。
了解(不需要主動說)
filter相當(dāng)于 攔截器 相當(dāng)于Spring AOP
servlet+jsp+javabean+jdbc+filter
encodingFilter
encode
utf-8
encodingFilter
*