1. 程式人生 > >怎樣在filter中獲取ajax提交的資料

怎樣在filter中獲取ajax提交的資料

當使用Jquery的ajax提交資料時,後臺filter需要攔截其中的引數做處理,但是,使用request.getParameterMap()或request.getQueryString()是獲取不到引數的,測試了一下,只有使用form表單提交的引數才能用這兩種方式獲取到值。
那麼,當使用jquery的ajax提交資料時,要想在filter中獲取到引數,需要從request的原生流中獲取,程式碼如下:

   public void getVal(){
        String requestType =(String)request.getHeader("X-Requested-With"
); String queryUrl = ""; Map<String,String[]> params = new HashMap<String, String[]>(); Map<String,String[]> params = new HashMap<String, String[]>(); /**判斷是否是ajax提交方式*/ if (requestType != null && requestType.equals("XMLHttpRequest"
)) { //獲取request中的原生流 queryUrl = getRequestPayload(request); }else{ queryUrl = request.getQueryString(); params = request.getParameterMap(); } }
//獲取request原生流方法
    private String getRequestPayload(HttpServletRequest req) {  
        StringBuilder sb = new
StringBuilder(); try{ BufferedReader reader = req.getReader(); String line; while((line = reader.readLine()) != null) { sb.append(line); } reader.close(); }catch (IOException e) { e.printStackTrace(); } return sb.toString(); }

在這裡需要注意的一點是,可能每次請求會涉及到多次讀取request流,但是流是不可以重複讀取的,所以,實現這個功能之前,我們需要封裝一下request,將它變成可以供多次讀取的值,詳見:http://blog.csdn.net/hui_blank/article/details/52870133

相關推薦

怎樣在filter獲取ajax提交資料

當使用Jquery的ajax提交資料時,後臺filter需要攔截其中的引數做處理,但是,使用request.getParameterMap()或request.getQueryString()是獲取不到引數的,測試了一下,只有使用form表單提交的引數才能用這兩

Djangobutton的處理 & ajax提交資料時不走Form元件驗證

button分類: type=’submit’ 預設型別,會預設提交表單~ type=’button’ type=’reset’ 專案中出現的問題: ajax提交資料時不走Form元件驗

WebAPI的AuthorizeAttribute擴充套件類獲取POST提交資料

在WEBAPI中,AuthorizeAttribute類重寫時,如何獲取post資料是個難題,網上找資料也不好使,只能自己研究,通過研究發現,WEBAPI給了我們獲取POST資料的可能,下面介紹一下: //將POST資料以字串的形式讀取,例如post的j

WebAPI的AuthorizeAttribute擴展類獲取POST提交的數據

內容 等待 allow class 通過 newton inpu input count 在WEBAPI中,AuthorizeAttribute類重寫時,如何獲取post數據是個難題,網上找資料也不好使,只能自己研究,通過研究發現,WEBAPI給了我們獲取POST數據的可能

Oracle獲取Date型別資料,沒有時分秒

oralce資料庫中,獲取Date型別資料,發現數據的格式為:“yyyy-mm-dd”,而不是“yyyy-mm-dd hh24:mi:ss” 1,使用JDBC從oracle資料庫中取Date型別資料,當使用getDate(“欄位名”)方法取值時,只能獲取到日期,而無法獲

laravel Ajax 提交資料 需要驗證csrf 新增一下程式碼

1 .在頁面頭部加上csrf-token: <meta name="csrf-token" content="{{ csrf_token() }}"> 2 . 提交headers中增加 X-CSRF-TOKEN: $.ajaxSetup({ headers: { 'X-CSRF-T

ajax提交資料到後臺php接收(實現方法)

在網上看了很久,發現數據的利用ajax提交資料到後臺其實很簡單,但是很多講解的並不清楚,對於初學者來說,很多真的是看著有點糊塗,拿來直接用,又想去了解怎麼回事,其實利用ajax提交資料到後臺是非常的簡單的。 1 2 3 4 5 6 7 8 $.ajax({

基於ajax提交資料

  昨日回顧: 1 inclusion_tag -幹什麼用的?生成html的片段(動態,傳引數,傳資料) -app下新建一個模組,templatetags -建立一個py檔案(mytag.py) -from django.template import Library -register=Libr

如何在ServletResponse,HTTPServletResponse或者Filter獲取HTTP的內容

      由於HTTPServletResponse只提供了getWriter和getOutputStream方法,並未提供獲取報文體的方法。如果在開發時遇到相應需求,可以使用HTTPServletResponseWrapper重新構造response。具體方法如下所示,例

mapper.xml檔案獲取最新插入資料的主鍵

在開發過程中,我們常常用到在插入資料時,需要得到剛插入的資料的主鍵,MySQL中有以下做法: 1、推薦使用 <insert id="addVehicleParam" parameterType="com.corp.dto.VehicleParamAddDt

vue webpack使用ajax傳輸資料給後臺

在使用資料傳輸中,大多數採用的都是ajax技術,那麼在vue中怎樣使用ajax技術呢?本篇將帶你入門vue axios中ajax技術。1、基本配置   (1)首先在你的vue專案下配置對應的檔案axios    下載axios元件,最終放置在node_modules\axio

laraval使用post提交資料中報token的問題

在我們使用laravel框架做專案時,經常會使用post方法提交資料,例如檔案上傳,表單提交,或者處理一些大資料。 我相信大家對於用post提交表單資料時的token處理都懂,就是傳一個隱藏域 <input type="hidden" name="_token" va

如何避免ajax提交資料出現中文亂碼

當我們使用Eclipse做WEB專案的時候,通過Eclipse啟動Web專案需要有對應的伺服器,比如tomcat。 如果使用的不是Eclipse自帶的tomcat,那麼對於tomcat字符集的設定是這個位置的server.xml中,以下以需要 UTF-8字符集為例: 在po

在過濾器filter獲取spring管理bean的物件例項

有時我們需要在過濾器中獲取自動注入的物件的例項,如果在filter中也通過自動注入的方式往往得到的結果是null,如果通過new一個物件的話,有時可能是我們想要的結果,有時我們只是想獲取spring上下文中唯一的一個例項,spring預設是單例項模式,這樣的話通過自動注入和n

ajax提交資料到後臺php接收

在網上看了很久,發現數據的利用ajax提交資料到後臺其實很簡單,但是很多講解的並不清楚,對於初學者來說,很多真的是看著有點糊塗,拿來直接用,又想去了解怎麼回事,其實利用ajax提交資料到後臺是非常的簡單的。 $.ajax({ type: "POST", url:

框架類---spring---Filter獲取Spring容器的bean物件

@Override public void init(FilterConfig filterConfig) throws ServletException { //獲取w

ASP.NET MVC下通過JQuery$.ajax提交資料,控制器接收資料

今天在實現一個小功能時,這個是一個彈出的模態框,然後點選儲存的時候,通過Ajax將文字框中的內容傳到後臺控制器,控制器執行相應的操作,在將內容儲存到資料庫。然後問題就出在用Ajax傳到控制器的時候,控制器接收不到引數。因為寫MVC也比較少,這方面不是很會,所以還是記錄一下。一

ajax提交資料(修改、新增)到資料庫並重新整理資料

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%> <%@ include file="/WEB-INF/pages/commons

filter獲取spring容器的bean物件

在工作中的專案需要,要在filter中使用服務介面,但是採用傳統的new 和注入方式都是空指標異常,最後的解決方式是 @Override public void init(FilterConfig config) throws ServletExce

關於form表單使用ajax提交表單,ajax無法success的問題

問題背景:我的畢業設計是重構自己以前寫過的一個小網站,之前寫的時候沒有用任何框架,前後臺互動資料靠el表示式、form表單。在完成畢業設計時使用SpringMVC+Spring+MyBatis+JQuery,統一使用ajax來互動資料。 問題再現: html關鍵程式碼<