Filter中获取传递参数方式(解决post请求参数问题)

编程之家收集整理的这篇文章主要介绍了Filter中获取传递参数方式(解决post请求参数问题)编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这篇文章主要介绍了Filter中获取传递参数方式(解决post请求参数问题),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

目录

Filter中获取传递参数

1. GET 传递

2. Post 传递

XyRequestWrapper 类

XySecurityFilter

Filter中获取传递参数

1. GET 传递

参数可以直接通过request.getParameter获取

2. Post 传递

产生不能过直接从request.getInputStream() 读取,必须要进行重新写。(request.getInputStream()只能够读取一次)

方式:

通过重写 HttpServletRequestWrapper 类 获取getInputStream中的流数据,然后在将body数据进行重新写入传递下去。

XyRequestWrapper 类

package com.xy.boot.cmiap.filter; import com.alibaba.fastjson.JSONObject; import com.xy.boot.common.util.StringUtils; import org.apache.catalina.servlet4preview.http.HttpServletRequestWrapper; import org.apache.commons.codec.Charsets; import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import java.io.*; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; /** * Created by fuwenshen * Date:2018/10/26 * Time:12:21 */ public class XyRequestWrapper extends HttpServletRequestWrapper { private String body; public XyRequestWrapper(HttpServletRequest request) throws IOException { super(request); StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = null; try { InputStream inputStream = request.getInputStream(); if (inputStream != null) { bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8")); char[] charBuffer = new char[128]; int bytesRead = -1; while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { stringBuilder.append(charBuffer, 0, bytesRead); } } else { stringBuilder.append(""); } } catch (IOException ex) { throw ex; } finally { if (bufferedReader != null) { try { bufferedReader.close(); } catch (IOException ex) { throw ex; } } } body = stringBuilder.toString(); } @Override public ServletInputStream getInputStream() throws IOException { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body.getBytes("UTF-8")); ServletInputStream servletInputStream = new ServletInputStream() { @Override public boolean isFinished() { return false; } @Override public boolean isReady() { return false; } @Override public void setReadListener(ReadListener readListener) { } @Override public int read() throws IOException { return byteArrayInputStream.read(); } }; return servletInputStream; } @Override public BufferedReader getReader() throws IOException { return new BufferedReader(new InputStreamReader(this.getInputStream(), Charsets.UTF_8)); } public String getBody() { return this.body; } @Override public String getParameter(String name) { return super.getParameter(name); } @Override public Map getParameterMap() { return super.getParameterMap(); } @Override public Enumeration getParameterNames() { return super.getParameterNames(); } @Override public String[] getParameterValues(String name) { return super.getParameterValues(name); } /** * 设置自定义post参数 // * * @param paramMaps * @return */ public void setParamsMaps(Map paramMaps) { Map paramBodyMap = new HashMap(); if (!StringUtils.isEmpty(body)) { paramBodyMap = JSONObject.parSEObject(body, Map.class); } paramBodyMap.putAll(paramMaps); body = JSONObject.toJSONString(paramBodyMap); } }

XySecurityFilter

package com.xy.boot.cmiap.filter; import com.alibaba.fastjson.JSONObject; import com.xy.boot.cmiap.bo.VerifyTokenResultBO; import com.xy.boot.cmiap.constant.HttpConstant; import com.xy.boot.cmiap.entity.enums.XyHttpCodeEnum; import com.xy.boot.cmiap.service.IXySecurityService; import com.xy.boot.cmiap.service.helper.XyHttpSecurityHelper; import com.xy.boot.common.util.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; /** * Created by fuwenshen * Date:2018/10/29 * Time:15:36 */ @Component @Slf4j @WebFilter(filterName = "xySecurityFilter", urlPatterns = {"/api/adv/*"}) public class XySecurityFilter implements Filter { @Value("${verify_token_switch}") private boolean tokenSwitch; @Value("${zy.app_secret}") privat上一篇:Spring如何解决单例bean线程不安全的问题下一篇:Javaweb EL自定义函数开发及代码实例 热门搜索

post请求参数 

参数传递方式 

参数值传递方式 

参数传递 

传递参数 

相关文章

Filter中获取传递参数方式(解决post请求参数问题)

2021-09-10阅读(8146)评论(0)推荐()

这篇文章主要介绍了Filter中获取传递参数方式(解决post请求参数问题),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Angularjs中$http以post请求通过消息体传递参数的实现方法

2021-10-09阅读(5360)评论(0)推荐()

这篇文章主要介绍了Angularjs中$http以post请求通过消息体传递参数的方法,结合实例形式分析了$http使用post请求传递参数的相关设置与使用技巧...

Java如何实现URL带请求参数(get/post)及得到get和post请求url和参数列表的方法

2021-10-19阅读(6886)评论(0)推荐()

本文给大家介绍Java如何实现URL带请求参数(get/post)及得到get和post请求url和参数列表的方法,涉及到 java获取post请求参数的方法,...

解决Python传递中文参数的问题

2021-10-07阅读(3065)评论(0)推荐()

这篇文章主要介绍了解决Python传递中文参数的问题的相关资料,需要的朋友可以参考下

jQuery发请求传输中文参数乱码问题的解决方

2021-11-12阅读(8640)评论(0)推荐()

这篇文章主要介绍了jQuery发请求传输中文参数乱码问题的解决方案,需要的朋友可以参考下

window.open 以post方式传递参数示例代码

2021-11-11阅读(8856)评论(0)推荐()

这篇文章主要介绍了window.open以post方式传递参数的方法,需要的朋友可以参考下

解决PHP使用CURL发送GET请求时传递参数的问题

2021-11-20阅读(3851)评论(0)推荐()

今天小编就为大家分享一篇解决PHP使用CURL发送GET请求时传递参数的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

取消

有人回复邮件通知

提交评论

© 2021 编程之家 

工信部备案号:琼ICP备2022000316号

总结

以上是编程之家为你收集整理的Filter中获取传递参数方式(解决post请求参数问题)全部内容,希望文章能够帮你解决Filter中获取传递参数方式(解决post请求参数问题)所遇到的程序开发问题。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

Java相关文章

使用SpringBoot2.x配置静态文件缓存
Java动态代理四种实现方式详解
Eclipse开发JavaWeb项目配置Tomcat的方法步骤
详解领域驱动设计之事件驱动与CQRS
SpringBoot全局配置long转String丢失精度的问题解决
springboot yml定义属性,下文中${} 引用说明
IDEA解决Java:程序包xxxx不存在的问题
编程语言榜单Java与Python并列第二!Julia下滑
MyBatis Log 插件无法显示SQL语句的原因解析
jsp response.sendRedirect()用法详解
使用springboot访问图片本地路径并映射成url
springboot文件虚拟路径映射方式