java– 不区分大小写的查询字符串请求参数

java– 不区分大小写的查询字符串请求参数,第1张

概述我的目标是以下所有URI都应该有效HTTPS://休息/ XYZ排序=名称HTTPS://休息/ XYZ排序=名称HTTPS://休息/ XYZ过滤器=名称=值HTTPS://休息/ XYZ过滤器=名称=值为此,我创建了自定义过滤器来覆盖传递给FilterChain的HttpServletRequest.以下是此方法的链接:http://forum.spri

我的目标是以下所有URI都应该有效

httpS://休息/ XYZ排序=名称

httpS://休息/ XYZ排序=名称

httpS://休息/ XYZ过滤器=名称=值

httpS://休息/ XYZ过滤器=名称=值

为此,我创建了自定义过滤器来覆盖传递给FilterChain的httpServletRequest.以下是此方法的链接:

http://forum.springsource.org/archive/index.php/t-87433.html

我的代码:

import java.io.IOException;import java.util.Map;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.servletexception;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.httpServletRequest;import javax.servlet.http.httpServletRequestWrapper; public class httpCustomParamFilter implements Filter{    private static class httpServletRequestCustomeWrapper extends httpServletRequestWrapper    {        private String[] parameterValues;        @OverrIDe        public String[] getParameterValues(String name)        {            Map

在这段代码中,我重写了getParameterValues(String name)方法并实现了请求参数的大小写不敏感,但不确定我是否需要覆盖任何其他方法.

我的疑惑:

>我还需要覆盖其他方法,如getParameter()和getParameternames()吗?
>这对内部实施有何影响?
>哪个类我可以看到getParameter(),getParameternames()和getParameterValues()的代码实现?最佳答案首先,让我说出我的平安:我不认为修改httpServletRequestWrapper是要走的路.我甚至不确定你将如何使用它,因为我的理解是它是特定于App Server的.作为旁注,this article具体说明如何使用httpServletRequest来获取不区分大小写的查询参数,而无需自己滚动.

但是,本着回答你的问题的精神:

>你需要覆盖getParameter()和getParameternames()吗?你可以,因为它会让你有能力 *** 纵案件.事实上,我认为使查询参数不区分大小写的最安全的方法是仅覆盖那些方法.使getParameter()调用对字符串名称执行不区分大小写的等号.不确定你会用getParameternames()做什么,也许会返回所有可能的情况,但这似乎是多余的.
>这会影响哪些内部实施?我不确定. httpServletRequest几乎是所有内容的核心,如果您的代码不是100%可靠,那么无法告诉您可以引入什么.例如,Spring有一个SecurityContextHolderAwareRequestWrapper,这是否意味着你刚刚打破了Spring Security?没有很多测试就没有告诉.
>我可以在哪个类中看到getParameter(),getParameternames()和getParameterValues()的代码实现?根据JavaDocs,httpServletRequestWrapper是httpServletRequest接口的唯一实现.此类的实际实现取决于您的应用程序容器.例如,在我的应用程序中它的weblogic.servlet.internal.ServletRequestImpl,因为我使用Web Logic.希望您使用的是具有现成代码的开源应用服务器.我发现这个的方法是在我的一个Controller处理程序方法中放置一个中断,该方法定义了httpServletRequest并在调试器中查看它的getClass()响应. 总结

以上是内存溢出为你收集整理的java – 不区分大小写的查询字符串请求参数全部内容,希望文章能够帮你解决java – 不区分大小写的查询字符串请求参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1253570.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)