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

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

生活随笔

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

编程问答

open Session In View和过滤器配置

發(fā)布時(shí)間:2025/7/25 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 open Session In View和过滤器配置 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Open Session In View模式的主要思想是:當(dāng)Web Request(瀏覽器請(qǐng)求)開(kāi)始時(shí),自動(dòng)打開(kāi)Session,當(dāng)Web Request結(jié)束時(shí),自動(dòng)關(guān)閉Session。也就是說(shuō),Session的生命周期與頁(yè)面請(qǐng)求保持同步。


?實(shí)現(xiàn)步驟:(分層架構(gòu))(web工程)

  1.entity層(實(shí)體層)

  2.dao層(數(shù)據(jù)訪(fǎng)問(wèn)層)

  3.util層(工具層)

  4.biz層(業(yè)務(wù)邏輯層)

  5.filter層(過(guò)濾器)

  6.進(jìn)行過(guò)濾器在網(wǎng)站xml的配置

結(jié)構(gòu)圖如下:

?


?1.entity層


?  《1》.進(jìn)行封裝字段,小配置書(shū)寫(xiě)。

?實(shí)體類(lèi):


?


?Emp.hbm.xml:?



2. dao層:


?


?3.util層(工具層)


?

package cn.hq.util;import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;public class HibernateUtils {//getCurrentSession()底層實(shí)現(xiàn)原理//ThreadLocal變量public static final ThreadLocal<Session> threadTL=new ThreadLocal<Session>();//我想直接調(diào)用一個(gè)方法,獲取Session//定義一個(gè)sessionFactory對(duì)象private static SessionFactory factory;private static Configuration cfg;static{cfg=new Configuration().configure();factory=cfg.buildSessionFactory();}//提供一個(gè)靜態(tài)方法public static Session currentSession(){Session session=threadTL.get();if(session==null){ //當(dāng)前線(xiàn)程中沒(méi)有session對(duì)象session=factory.openSession();threadTL.set(session);}return session;}//關(guān)閉sessionpublic static void closeSession(){//獲取線(xiàn)程中的sessionSession session = threadTL.get();if (session!=null) {threadTL.set(null);session.close();}}}

4.biz層(業(yè)務(wù)邏輯層)


??


?5.filter層(過(guò)濾器)


?

@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {Session session = null;Transaction tx = null;try {session = HibernateUtils.currentSession();System.out.println("filter\t"+session.hashCode());tx = session.beginTransaction();// 執(zhí)行請(qǐng)求處理鏈 chain.doFilter(request, response);// 返回響應(yīng)時(shí),提交事務(wù) tx.commit();} catch (HibernateException e) {e.printStackTrace();tx.rollback();} finally {// 關(guān)閉session HibernateUtils.closeSession();}}

6.進(jìn)行過(guò)濾器在網(wǎng)站xml的配置


web.xml進(jìn)行配置:


index.jsp界面:


實(shí)現(xiàn)效果:


注意:(常見(jiàn)問(wèn)題)

?

解決方案:

查看一下biz層是否開(kāi)啟事務(wù)以下界面:

如果是將其事務(wù)開(kāi)啟與提交進(jìn)行注釋。在這不用重復(fù)進(jìn)行事務(wù)操作。


?

轉(zhuǎn)載于:https://www.cnblogs.com/hq-123/p/5839466.html

總結(jié)

以上是生活随笔為你收集整理的open Session In View和过滤器配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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