1. 程式人生 > >使用攔截器獲取HttpServletResponse 物件,HttpServletRequest物件

使用攔截器獲取HttpServletResponse 物件,HttpServletRequest物件

  1. 攔截器的配置說明
   <mvc:interceptors>   
        <bean class="interceptor.HttpServletResponseInterceptor" />
    </mvc:interceptors>
  1. 攔截器的實現
public class HttpServletResponseInterceptor extends HandlerInterceptorAdapter{

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws
Exception { RequestResponseContext.setResponse(response); return true; } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { RequestResponseContext.removeResponse(); } }
  1. 這裡儲存的Httpresponse物件必須是多執行緒的,使用threadlocal解決這個問題,其實我們的tomact容器中也是這麼處理的,這裡不僅可以使用攔截器,其實原生的過濾器也是可以這麼處理的。我們在使用的時候就可以直接的使用啦!
public class RequestResponseContext {

    private static ThreadLocal<HttpServletRequest> REQUEST_CHREADLOCAL = new ThreadLocal<HttpServletRequest>();

    private static
ThreadLocal<HttpServletResponse> REPONSE_THREADLOCAL = new ThreadLocal<HttpServletResponse>(); public static void setRequest(HttpServletRequest request) { REQUEST_CHREADLOCAL.set(request); } public static HttpServletRequest getRequest() { return REQUEST_CHREADLOCAL.get(); } public static void removeRequest() { REQUEST_CHREADLOCAL.remove(); } public static void setResponse(HttpServletResponse response) { REPONSE_THREADLOCAL.set(response); } public static HttpServletResponse getResponse() { return REPONSE_THREADLOCAL.get(); } public static void removeResponse() { REPONSE_THREADLOCAL.remove(); } }

相關推薦

使用攔截獲取HttpServletResponse 物件HttpServletRequest物件

攔截器的配置說明 <mvc:interceptors> <bean class="interceptor.HttpServletResponseInt

使用引數攔截通過註解直接從JSON物件獲取資料

場景:當前段傳過來的物件是JSON物件,當時我們使用的時候又是僅僅使用其中的部分欄位值的時候,可以通過實現引數攔截器來為我們自動將JSON中的key值賦值給引數 程式碼 1.自定義註解 @Target(ElementType.PARAMETER) @Retention(Re

【JFinal】JFinal的攔截獲取和修改controller返回的json物件

感謝JFinal框架作者老哥詹波的指點 public class JsonInterceptor implements Interceptor { @SuppressWarnings(

Unity編輯獲取資料夾下所有物件

有一次需要在Editor模式下獲取任意資料夾下的所有資源物件,包括子資料夾,我嘗試了AssetDatabase.LoadAllAssetsAtPath(string assetPath),理想中的Object[]沒有返回,而是給我返回了null;查閱google得知這個方法

Mybatis之攔截--獲取執行SQL實現多客戶端數據同步

gin sign factor 方便 完成後 動態代理 exc batis 包安裝 最近的一個項目是將J2EE環境打包安裝在客戶端(使用 nwjs + NSIS 制作安裝包)運行, 所有的業務操作在客戶端完成, 數據存儲在客戶端數據庫中. 服務器端數據庫匯總各客戶端的數據進

物件面向物件以及三大特徵

一、  類和物件 面向物件程式設計中兩個重要的概念:類和物件 1、簡單來說:物件的抽象化是類,類的具體化就是物件。類是一種抽象的概念,是對現實生活中事物的描述,類是對某一批物件的抽象,它不是實際存在的事物。物件是一個實際存在的實體,從這個意義上講,萬物都是物件。我們日常所說的人,都是人

魯棒圖的三元素:抽象物件實體物件和控制物件

魯棒圖簡介  ADMEMS方法推薦以魯棒圖來輔助初步設計。那麼,什麼是魯棒圖呢? 8.2.1  魯棒圖的3種元素 魯棒圖包含3種元素(如圖8-2所示),它們分別是邊界物件、控制物件、實體物件: 邊界物件對模擬外部環境和未來系統之間的互動進行建模。邊界物件負責接收外部輸入,處理內部內

向List中資料新增實體物件實體物件最後一個會把之前的內容覆蓋

錯誤的寫法:(這樣寫等於一直在操作同一個物件,物件中的內容都一樣) List<CommissionSystem> cList = new ArrayList<CommissionSystem>(); for (Goods goods : gList) {  

js中的內建物件宿主物件和自定義物件

JS中,可以將物件分為“內建物件”、“宿主物件”和“自定義物件”三種。 1,內建物件 js中的內建物件包括Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各種錯誤類物件,包括Erro

Java基礎---面向物件(面向物件物件匿名物件封裝建構函式構造程式碼塊thisstaticmain幫助文件靜態程式碼塊單例)

一. 面向物件概念: 面向物件其實是一種思考的思想,早期思想是面向過程。 面向過程注重的是過程,過程所涉及的行為,也就是功能。 【例項】:面向過程: 1. 把冰箱開啟 2. 把大象放入 3. 冰箱關起來      面向物件: 開啟冰箱,儲存,關閉都是對冰箱的操作,是冰箱的行為

Hibernates關於臨時物件持久化物件等等

org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1     at org

struts2使用AbstractInterceptor攔截 獲取引數以及修改引數的值

public class AppLoginInterceptor extends AbstractInterceptor{ @Override public String intercept(ActionInvocation invocation) throws Exc

運用攔截獲取@PathVariable的引數值

Map pathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);  String Id =&n

window物件navigator物件document文件物件以及window下的其他物件

Window物件 屬性 innerHeight                     &n

axios post 請求tomcat,攔截獲取不到getInputStream流中的資料

今天做專案,前端的大佬用axios傳送post請求,而我要利用過濾器和攔截器進行許可權的校驗,校驗的內容就是上送的某個欄位的內容,所以我們需要重寫request請求(request請求只能獲取一次,如果在攔截器中獲取,那麼控制器就獲取不到相應的引數),並且在攔截器中進行校驗,

angular4 使用HttpClient攔截 檢查token失效返回登入頁面

1、首先建立一個攔截器服務:InterceptorService.ts 2、在app.module.ts檔案裡引入攔截器 import {InterceptorService} from ‘./InterceptorService’; import {HTTP_INTERCEPTORS

攔截和過濾器區別Struts2與SpringMVC的區別

攔截器和過濾器 1.攔截器是基於java反射機制的,而過濾器是基於函式回撥的; 2.攔截器不依賴於servlet容器,而過濾器依賴於servlet容器; 3.攔截器只能對Action請求起作用,而過濾器則可以對幾乎所有請求起作用; 4.攔截器可以訪問Action上下文、值棧裡的物件,而過

陣列中巢狀物件根據物件的某個字對物件進行去重

// 陣列中巢狀物件,根據物件的某個欄位進行物件去重 function uniqObj(data, name) { var dataArr = []; var dataObj = {}; for (var i = 0; i < data.length; i+

ServletConfig物件ServletContext物件

ServletConfig物件 ServletConfig物件有什麼用? 通過此物件可以讀取web.xml中配置的初始化引數。 為什麼我們要把引數資訊放到web.xml檔案中呢?我們可以直接在程式中都可以定義引數資訊,搞到web.xml檔案中又有什麼好處呢? 好處就是:能

Springboot中自定義springmvc攔截;HandlerInterceptor中preHandlepostHandleafterCompletion解析

要實現自定義HandlerInterceptor 。通過 WebMvcConfigurer 的實現類屬性注入,完成springboot自定義攔截 自定義一個攔截器; package com.baidu.