SpringBoot 請(qǐng)求參數(shù)忽略大小寫的實(shí)例
我就廢話不多說了,大家還是直接看代碼吧~
import java.io.IOException;import java.util.Collections;import java.util.Enumeration;import java.util.Map; import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse; import org.springframework.core.annotation.Order;import org.springframework.util.LinkedCaseInsensitiveMap;import org.springframework.web.filter.OncePerRequestFilter; @Order(1)//重點(diǎn)@WebFilter(filterName = 'caseInsensitiveFilter', urlPatterns = '/*')public class CaseInsensitiveRequestParameterNameFilter extends OncePerRequestFilter { public CaseInsensitiveRequestParameterNameFilter() {System.out.println('CaseInsensitiveRequestParameterNameFilter.CaseInsensitiveRequestParameterNameFilter()');} @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { filterChain.doFilter(new CaseInsensitiveParameterNameHttpServletRequest(request), response); } public static class CaseInsensitiveParameterNameHttpServletRequest extends HttpServletRequestWrapper { private final LinkedCaseInsensitiveMap<String[]> map = new LinkedCaseInsensitiveMap<>(); public CaseInsensitiveParameterNameHttpServletRequest(HttpServletRequest request) { super(request); map.putAll(request.getParameterMap()); } @Override public String getParameter(String name) { String[] array = this.map.get(name); if (array != null && array.length > 0) return array[0]; return null; } @Override public Map<String, String[]> getParameterMap() { return Collections.unmodifiableMap(this.map); } @Override public Enumeration<String> getParameterNames() { return Collections.enumeration(this.map.keySet()); } @Override public String[] getParameterValues(String name) { return this.map.get(name); } } }
并在啟動(dòng)類上加入@ServletComponentScan注解
補(bǔ)充:springboot 接受大寫參數(shù)時(shí),接收值為空的解決
入?yún)ⅲ?p>{ 'title':'文章標(biāo)題1', 'content':'文章內(nèi)容22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222', 'DOI':'123', 'PMID':'1234', 'email':'121607691@qq.com'}springboot 接到的DOI和PMID 為null,頭字母改為小寫后正常。
原因及解決是spring 使用@requestbody 接收時(shí)遵循駝峰命名規(guī)則,如果希望接收非駝峰的參數(shù)可以在對(duì)映的屬性上添加注解
@JsonProperty(value = 'DOI')private String DOI;
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. CentOS郵箱服務(wù)器搭建系列——SMTP服務(wù)器的構(gòu)建( Postfix )2. PHP基礎(chǔ)之生成器4——比較生成器和迭代器對(duì)象3. ASP新手必備的基礎(chǔ)知識(shí)4. Docker 啟動(dòng)Redis 并設(shè)置密碼的操作5. asp文件用什么軟件編輯6. 通過IEAD+Maven快速搭建SSM項(xiàng)目的過程(Spring + Spring MVC + Mybatis)7. JS中6個(gè)對(duì)象數(shù)組去重的方法8. vue+element開發(fā)一個(gè)谷歌插件的全過程9. 利用CSS制作3D動(dòng)畫10. Vue axios獲取token臨時(shí)令牌封裝案例

網(wǎng)公網(wǎng)安備