日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

open Session In View和过滤器配置

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

Open Session In View模式的主要思想是:Web Request(瀏覽器請求)開始時,自動打開Session,當Web Request結束時,自動關閉Session。也就是說,Session的生命周期與頁面請求保持同步。


?實現(xiàn)步驟:(分層架構)(web工程)

  1.entity層(實體層)

  2.dao層(數(shù)據(jù)訪問層)

  3.util層(工具層)

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

  5.filter層(過濾器)

  6.進行過濾器在網站xml的配置

結構圖如下:

?


?1.entity層


?  《1》.進行封裝字段,小配置書寫。

?實體類:


?


?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()底層實現(xiàn)原理//ThreadLocal變量public static final ThreadLocal<Session> threadTL=new ThreadLocal<Session>();//我想直接調用一個方法,獲取Session//定義一個sessionFactory對象private static SessionFactory factory;private static Configuration cfg;static{cfg=new Configuration().configure();factory=cfg.buildSessionFactory();}//提供一個靜態(tài)方法public static Session currentSession(){Session session=threadTL.get();if(session==null){ //當前線程中沒有session對象session=factory.openSession();threadTL.set(session);}return session;}//關閉sessionpublic static void closeSession(){//獲取線程中的sessionSession session = threadTL.get();if (session!=null) {threadTL.set(null);session.close();}}}

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


??


?5.filter層(過濾器)


?

@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í)行請求處理鏈 chain.doFilter(request, response);// 返回響應時,提交事務 tx.commit();} catch (HibernateException e) {e.printStackTrace();tx.rollback();} finally {// 關閉session HibernateUtils.closeSession();}}

6.進行過濾器在網站xml的配置


web.xml進行配置:


index.jsp界面:


實現(xiàn)效果:


注意:(常見問題)

?

解決方案:

查看一下biz層是否開啟事務以下界面:

如果是將其事務開啟與提交進行注釋。在這不用重復進行事務操作。


?

轉載于:https://www.cnblogs.com/hq-123/p/5839466.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。