国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot 參數(shù)統(tǒng)一處理

這篇具有很好參考價值的文章主要介紹了springboot 參數(shù)統(tǒng)一處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、普通參數(shù):ParameterRequestWrapper

二、HttpHelper請求處理字符串工具類

三、實體json參數(shù):RequestWrapper

四、過濾器:PostFilter

五、Controller

一、普通參數(shù):ParameterRequestWrapper
import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletRequestWrapper;

import java.util.Enumeration;

import java.util.Map;

import java.util.Vector;

/**

?* 普通參數(shù)設(shè)置

?*

?*/

public class ParameterRequestWrapper extends HttpServletRequestWrapper {

? ? private Map params;

? ? public ParameterRequestWrapper(HttpServletRequest request, Map newParams) {

? ? ? ? super(request);

? ? ? ? this.params = newParams;

? ? }

? ? @Override

? ? public Map getParameterMap() {

? ? ? ? return params;

? ? }

? ? @Override

? ? public Enumeration getParameterNames() {

? ? ? ? Vector l = new Vector(params.keySet());

? ? ? ? return l.elements();

? ? }

? ? @Override

? ? public String[] getParameterValues(String name) {

? ? ? ? Object v = params.get(name);

? ? ? ? if (v == null) {

? ? ? ? ? ? return null;

? ? ? ? } else if (v instanceof String[]) {

? ? ? ? ? ? return (String[]) v;

? ? ? ? } else if (v instanceof String) {

? ? ? ? ? ? return new String[]{(String) v};

? ? ? ? } else {

? ? ? ? ? ? return new String[]{v.toString()};

? ? ? ? }

? ? }

? ? @Override

? ? public String getParameter(String name) {

? ? ? ? Object v = params.get(name);

? ? ? ? if (v == null) {

? ? ? ? ? ? return null;

? ? ? ? } else if (v instanceof String[]) {

? ? ? ? ? ? String[] strArr = (String[]) v;

? ? ? ? ? ? if (strArr.length > 0) {

? ? ? ? ? ? ? ? return strArr[0];

? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? return null;

? ? ? ? ? ? }

? ? ? ? } else if (v instanceof String) {

? ? ? ? ? ? return (String) v;

? ? ? ? } else {

? ? ? ? ? ? return v.toString();

? ? ? ? }

? ? }

}

二、HttpHelper請求處理字符串工具類
import javax.servlet.ServletRequest;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.nio.charset.Charset;

/**

?* 請求處理工具類

?*

?*/

public class HttpHelper {

? ? public static String getBodyString(ServletRequest request) {

? ? ? ? StringBuilder sb = new StringBuilder();

? ? ? ? InputStream inputStream = null;

? ? ? ? BufferedReader reader = null;

? ? ? ? try {

? ? ? ? ? ? inputStream = request.getInputStream();

? ? ? ? ? ? reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-8")));

? ? ? ? ? ? String line = "";

? ? ? ? ? ? while ((line = reader.readLine()) != null) {

? ? ? ? ? ? ? ? sb.append(line);

? ? ? ? ? ? }

? ? ? ? } catch (IOException e) {

? ? ? ? ? ? LogUtils.error(e);

? ? ? ? } finally {

? ? ? ? ? ? if (inputStream != null) {

? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? inputStream.close();

? ? ? ? ? ? ? ? } catch (IOException e) {

? ? ? ? ? ? ? ? ? ? LogUtils.error(e);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? if (reader != null) {

? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? reader.close();

? ? ? ? ? ? ? ? } catch (IOException e) {

? ? ? ? ? ? ? ? ? ? LogUtils.error(e);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return sb.toString()/*.replaceAll(" ","")*/;

? ? }

}

三、實體json參數(shù):RequestWrapper
import com.hean.iot.platform.utils.HttpHelper;

import javax.servlet.ServletInputStream;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletRequestWrapper;

import java.io.BufferedReader;

import java.io.ByteArrayInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.nio.charset.Charset;

/**

?* 請求參數(shù)重寫

?*

?*/

public class RequestWrapper extends HttpServletRequestWrapper {

? ? private byte[] body;

? ? public RequestWrapper(HttpServletRequest request) {

? ? ? ? super(request);

? ? ? ? body = HttpHelper.getBodyString(request).getBytes(Charset.forName("UTF-8"));

? ? }

? ? @Override

? ? public BufferedReader getReader() throws IOException {

? ? ? ? return new BufferedReader(new InputStreamReader(getInputStream()));

? ? }

? ? /**

? ? ?* 重寫獲取 輸入流的方法,保證流可寫可讀多次

? ? ?* @return

? ? ?* @throws IOException

? ? ?*/

? ? @Override

? ? public ServletInputStream getInputStream() throws IOException {

? ? ? ? final ByteArrayInputStream bais = new ByteArrayInputStream(body);

? ? ? ? return new ServletInputStream() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public int read() throws IOException {

? ? ? ? ? ? ? ? return bais.read();

? ? ? ? ? ? }

? ? ? ? };

? ? }

? ? public byte[] getBody() {

? ? ? ? return body;

? ? }

? ? public void setBody(byte[] body) {

? ? ? ? this.body = body;

? ? }

}

四、過濾器:PostFilter
import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import com.hean.iot.platform.model.RequestWrapper;

import com.hean.iot.platform.session.SessionBeanService;

import org.springframework.context.annotation.Configuration;

import javax.servlet.*;

import javax.servlet.annotation.WebFilter;

import javax.servlet.http.HttpServletRequest;

import java.io.BufferedReader;

import java.io.IOException;

import java.util.HashMap;

/**

?* 過濾器

?*

?*/

@Configuration

@WebFilter(filterName = "authFilter", urlPatterns = {"/*"})

public class PostFilter implements Filter {

? ? @Override

? ? public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

? ? ? ? ? ? throws IOException, ServletException {

? ? ? ? /*

? ? ? ? ?* @Date: 2021/1/18 14:59

? ? ? ? ?* Step 1: 重寫 RequestWrapper,重寫獲取流的方法

? ? ? ? ?*/

? ? ? ? RequestWrapper requestWrapper = new RequestWrapper((HttpServletRequest) request);

? ? ? ? /*

? ? ? ? ?* @Date: 2021/1/18 14:59

? ? ? ? ?* Step 2: 讀取輸入流,將所需信息寫入

? ? ? ? ?* json形式參數(shù)填充(這里新增customerId的鍵值)

? ? ? ? ?*/

? ? ? ? StringBuffer buffer = new StringBuffer();

? ? ? ? String line = null;

? ? ? ? BufferedReader reader = null;

? ? ? ? reader = requestWrapper.getReader();

? ? ? ? while ((line = reader.readLine()) != null) {

? ? ? ? ? ? buffer.append(line);

? ? ? ? }

? ? ? ? JSONObject object = JSON.parseObject(buffer.toString());

? ? ? ? object.put("customerId", SessionBeanService.getCustomerId());

? ? ? ? requestWrapper.setBody(object.toString().getBytes());

? ? ? ? /*

? ? ? ? ?* @Date: 2021/1/18 15:00

? ? ? ? ?* Step 3: 普通形式參數(shù)填充(這里新增customerId的鍵值)

? ? ? ? ?*/

? ? ? ? HashMap parameterMap = new HashMap(requestWrapper.getParameterMap());

? ? ? ? parameterMap.put("customerId", new String[]{SessionBeanService.getCustomerId().toString()});

? ? ? ? ParameterRequestWrapper newRequest = new ParameterRequestWrapper(requestWrapper, parameterMap);

? ? ? ? /**

? ? ? ? ?* 過濾跳轉(zhuǎn)

? ? ? ? ?*/

? ? ? ? chain.doFilter(newRequest, response);

? ? }

? ? @Override

? ? public void destroy() {

? ? }

? ? @Override

? ? public void init(FilterConfig config) throws ServletException {

? ? }

}

五、Controller
@RequestMapping("/findDropDown.do")

@ResponseBody

public BaseResult findAlarmGradeDropDown(@RequestBody DropDownDto condition, String customerId) throws Exception {

? ? return rslt;

}

這樣,不管是@RequestBody 參數(shù),還是普通參數(shù),都能得到自己設(shè)置的值。

也就可以通過這樣的方式設(shè)置所有請求的公共參數(shù)。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-428119.html

到了這里,關(guān)于springboot 參數(shù)統(tǒng)一處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • SpringBoot 統(tǒng)一功能的處理

    SpringBoot 統(tǒng)一功能的處理

    1.1 最初用戶登錄驗證 從上述代碼中可以看出每個方法都相同的登錄權(quán)限校驗 , 這樣做的缺點是: 每個方法中都要單獨寫用戶登錄驗證的方法 , 即使封裝成公共方法 , 也一樣要在方法中傳參判斷. 添加控制器越多, 調(diào)用用戶登錄的方法也越多 , 這樣后期會增大維護成本. 用戶登錄

    2024年02月16日
    瀏覽(18)
  • SpringBoot統(tǒng)一功能的處理

    SpringBoot統(tǒng)一功能的處理

    目錄 SpringBoot攔截器 自定義攔截器 將自定義攔截器加入系統(tǒng)配置項 統(tǒng)一異常處理 創(chuàng)建異常處理類 ?實現(xiàn)業(yè)務(wù)方法 統(tǒng)一數(shù)據(jù)返回格式 為什么需要統(tǒng)一數(shù)據(jù)返回格式 統(tǒng)一數(shù)據(jù)返回格式的實現(xiàn) 返回String時的報錯愿意及處理方案 使用SpringBoot攔截器來實現(xiàn)用戶登錄權(quán)限的校驗. 如

    2024年02月08日
    瀏覽(18)
  • SpringBoot—統(tǒng)一功能處理

    SpringBoot—統(tǒng)一功能處理

    利用 AOP 的思想對一些特定的功能進行統(tǒng)一的處理, 包括 使用攔截器實現(xiàn)用戶登錄權(quán)限的統(tǒng)一校驗 統(tǒng)一異常的處理 統(tǒng)一數(shù)據(jù)格式的返回 通過一級路由調(diào)用多種方法, 需要保證這些方法的請求類型各不相同(GET, POST, PUT…) 使用 Spring AOP 可以實現(xiàn)統(tǒng)一攔截, 但 Spring AOP 的使用較為

    2024年02月13日
    瀏覽(15)
  • SpringBoot 統(tǒng)一功能處理

    SpringBoot 統(tǒng)一功能處理

    登錄、注冊頁面不攔截,其他頁面都攔截 當(dāng)?shù)卿洺晒懭?session 之后,攔截的頁面可正常訪問 調(diào)用順序: 正常情況下,程序會在調(diào)用 Controller 之前進行相應(yīng)的業(yè)務(wù)處理(我們在切面中定義的事務(wù)),業(yè)務(wù)通過后,才會調(diào)用Controller 層,然后就是Controller - Serrvice - Mapper - 數(shù)據(jù)

    2024年01月24日
    瀏覽(9)
  • springboot全局統(tǒng)一返回處理

    項目中一般都會有規(guī)定好的接口返回格式,無論成功與失敗,一般格式都是不變的,這樣是為了方便前后端統(tǒng)一處理,今天就來說下前后端統(tǒng)一處理的較為優(yōu)雅的方式; 一般而言都會有一個統(tǒng)一的返回類作為接口的返回數(shù)據(jù)的封裝,例如: 然后我們通過此類作為返回參數(shù)的統(tǒng)一封裝

    2024年02月13日
    瀏覽(22)
  • SpringBoot -05 SpringBoot web相關(guān)配置(靜態(tài)資源訪問、統(tǒng)一異常處理、文件上傳、攔截器、統(tǒng)一跨域請求處理)

    小總結(jié) SpringBoot是一個基于Spring的工具集,去幫我們完成了大量的配置。在SpringBoot中有一個約定大于配置的概念,就是他把我們很多第三方框架幫我們寫好了,而且把我們整個第三方框架所需要的依賴全都通過起步依賴加進去了。開發(fā)中只需要加入起步依賴就可以實現(xiàn)某個場

    2024年02月01日
    瀏覽(32)
  • 【Spring】SpringBoot 統(tǒng)一功能處理

    【Spring】SpringBoot 統(tǒng)一功能處理

    在日常使用 Spring 框架進行開發(fā)的時候,對于一些板塊來說,可能需要實現(xiàn)一個相同的功能,這個功能可以是驗證你的登錄信息,也可以是其他的,但是由于各個板塊實現(xiàn)這個功能的代碼邏輯都是相同的,如果一個板塊一個板塊進行添加的話,開發(fā)效率就會很低,所以 Spring

    2024年01月18日
    瀏覽(24)
  • springboot 統(tǒng)一異常處理 + 日志記錄

    springboot 統(tǒng)一異常處理 + 日志記錄

    ??????在項目的開發(fā)中,在某些情況下,比如非業(yè)務(wù)的操作,日志記錄,權(quán)限認證和異常處理等。我們需要對客戶端發(fā)出的請求進行攔截,常用的API攔截方式有Fliter,Interceptor,ControllerAdvice以及Aspect。先簡單介紹一下不同的攔截方式。 可以獲得Http原始的請求和響應(yīng)信息,

    2023年04月17日
    瀏覽(94)
  • SpringBoot第14講:SpringBoot 如何統(tǒng)一異常處理

    本文是SpringBoot第14講,SpringBoot接口如何對異常進行統(tǒng)一封裝,并統(tǒng)一返回呢?以上文的參數(shù)校驗為例, 如何優(yōu)雅的將參數(shù)校驗的錯誤信息統(tǒng)一處理并封裝返回呢

    2024年02月11日
    瀏覽(32)
  • SpringBoot統(tǒng)一功能處理(攔截器)

    SpringBoot統(tǒng)一功能處理(攔截器)

    1.1自定義攔截器 寫一個類去實現(xiàn) HandlerInterceptor接口 表示當(dāng)前類是一個攔截器,再 重寫HandlerInterceptor接口中的方法 , preHandle 為在方法 執(zhí)行前攔截 ,postHandle為方法執(zhí)行中攔截,afterCompletion為方法執(zhí)行中攔截.需要在什么時候攔截就重寫什么方法 2.1.配置攔截規(guī)則 實現(xiàn) WebMvcConfigur

    2024年02月14日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包