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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 普通类获取session_如何在Java的普通类中获取Session以及request对象

發布時間:2023/12/4 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 普通类获取session_如何在Java的普通类中获取Session以及request对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

展開全部

你是指你的 web 項目中使用到一個工具性的類,它的e69da5e6ba9062616964757a686964616f31333337613865形參中沒有 HttpRequest 或 HttpSession 參數?

如果是這樣的話,我們需要使用一個 ThreadLocal 變量,我們把當前 ?request 的變量綁定到里面,在一個 request 請求的生命周期內我們在方法調用的各個更深的層次中都可以直接使用它而不需要在每個方法中都傳遞這個 request 參數,保存在某個地方就容易導致因為多個請求共用同一個實例而出問題,所有 context 相關的變量不保存在任何業務類相關并且可能被多線程共用的對象實例中才是保證不會出現線程安全問題的途徑。

例如,這個例子中我們只要把 web.xml 中配置好 ContextFilter 后它就會自動在請求開始時綁定一個 context,結束后自動銷毀,在這中間的任何時刻我們都可以通過 MyWebContext.getCurrentContext() 得到我們的 HttpServletRequest 實例和其它相關的 context 變量://?MyWebContext?記錄當前?Request?的所有?context?變量。因為?servlet?是一個請求綁定一個線程的,我們用?ThreadLocal?不會有線程安全問題。

class?MyWebContext?{

private?static?final?ThreadLocal?contexts?=?new?ThreadLocal();

//?拿出當前線程綁定的?context

public?static?MyWebContext?getCurrentContext()?{

return?(MyWebContext)?contexts.get();

}

public?static?MyWebContext?createContext()?{

return?new?MyWebContext();

}

//?綁定一個?context?到當前線程

public?static?void?setContext(MyWebContext?context)?{

contexts.set(context);

}

public?static?void?clearContext()?{

contexts.set(null);

}

private?HttpRequest?request;

public?void?setRequest(HttpRequest?request)?{

this.request?=?request;

}

public?HttpRequest?getRequest()?{

return?this.request;

}

}

class?ContextFilter?implements?Filter?{

public?void?doFilter(ServletRequest,?SerlvetResponse,?FilterChain?chain)?{

//?創建并綁定我們的?context

MyWebContext?context?=?MyWebContext.createContext();

context.setRequest(request);

MyWebContext.setContext(context);

try?{

chain.doFilter(request,?response);

}?finally?{

//?銷毀?context

MyWebContext.clearContext();

}

}

}

class?MyToolClassWithoutRequestParameter?{

public?static?String?getFileUploadPath()?{

//?其它方法只要它是工作在?servlet?請求調用鍵中間的某個時刻,它就肯定能拿到?Filter?綁定進去的?Request,這樣我們就不必要在每次方法調用中都額外地傳遞一個?HttpRequest?參數,當調用層次很深時這能明顯減少復雜性。

MyWebContext?contex?=?MyWebContext.getCurrentContext();

HttpRequest?request?=?context.getRequest();

HttpServletContext?servletContext?=?...;

HttpSession?session?=?request.getSession(false);

...

}

}

總結

以上是生活随笔為你收集整理的java 普通类获取session_如何在Java的普通类中获取Session以及request对象的全部內容,希望文章能夠幫你解決所遇到的問題。

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