博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Mvc Url和参数名称忽略大小写
阅读量:6151 次
发布时间:2019-06-21

本文共 3121 字,大约阅读时间需要 10 分钟。

在开发过程中Spring Mvc 默认 Url和参数名称都是区分大小写的

  比如:www.a.com/user/getUserInfo?userId=1 

     www.a.com/user/getuserInfo?userId=1 

       www.a.com/user/getUserInfo?userid=1 

            www.a.com/user/getuserinfo?userid=1 

  这些都认为不同的地址和参数,在实际中用户根本不区分这些,所以我们要忽略大小写

URL忽略大小写

import org.springframework.context.annotation.Configuration;import org.springframework.util.AntPathMatcher;import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;/** * Created by tianwei on 2017/6/22. */@Configurationpublic class SpringWebConfig extends WebMvcConfigurationSupport {    @Override    public void configurePathMatch(PathMatchConfigurer configurer) {        AntPathMatcher pathMatcher = new AntPathMatcher();        pathMatcher.setCaseSensitive(false);        configurer.setPathMatcher(pathMatcher);    }}

参数名称忽略大小写

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.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;import org.springframework.util.LinkedCaseInsensitiveMap;import org.springframework.web.filter.OncePerRequestFilter;public class CaseInsensitiveRequestParameterNameFilter extends OncePerRequestFilter {    @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
map = new LinkedCaseInsensitiveMap<>(); @SuppressWarnings("unchecked") 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
getParameterMap() { return Collections.unmodifiableMap(this.map); } @Override public Enumeration
getParameterNames() { return Collections.enumeration(this.map.keySet()); } @Override public String[] getParameterValues(String name) { return this.map.get(name); } }}

定义Bean

web.xml 增加Filter

caseInsensitiveRequestFilterProxy
org.springframework.web.filter.DelegatingFilterProxy
caseInsensitiveRequestFilterProxy
/*

到此再次运行项目就可以了,最上面的URL访问的是同一页面了

转载地址:http://nbmya.baihongyu.com/

你可能感兴趣的文章
Oracle执行计划发生过变化的SQL语句脚本
查看>>
使用SanLock建立简单的HA服务
查看>>
发现一个叫阿尔法城的小站(以后此贴为我记录日常常用网址的帖子了)
查看>>
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>
mysql做主从relay-log问题
查看>>
Docker镜像与容器命令
查看>>
批量删除oracle中以相同类型字母开头的表
查看>>
Java基础学习总结(4)——对象转型
查看>>
BZOJ3239Discrete Logging——BSGS
查看>>
SpringMVC权限管理
查看>>
spring 整合 redis 配置
查看>>
redhat6.1下chrome的安装
查看>>
cacti分组发飞信模块开发
查看>>
浅析LUA中游戏脚本语言之魔兽世界
查看>>
飞翔的秘密
查看>>
Red Hat 安装源包出错 Package xxx.rpm is not signed
查看>>
编译安装mysql-5.6.16.tar.gz
查看>>