当前位置: 首页 > news >正文

网站制作素材图片百度竞价推广费用

网站制作素材图片,百度竞价推广费用,高端商城网站建设,网站图片如何做防盗链使用场景:在接口处理之前,我们需要拿到请求参数,对参数进行校验。注意,这里需要拿到的是原始的请求信息! 一般的获取方式 ServletInputStream inputStream request.getInputStream(); StringBuilder stringBuilder …

使用场景:在接口处理之前,我们需要拿到请求参数,对参数进行校验。注意,这里需要拿到的是原始的请求信息!

一般的获取方式

ServletInputStream inputStream = request.getInputStream();
StringBuilder stringBuilder = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, request.getCharacterEncoding()))) {String line;while ((line = reader.readLine()) != null) {stringBuilder.append(line);}
} catch (IOException e) {e.printStackTrace();
}
String requestBody = stringBuilder.toString();

获取requestBody的代码大同小异,可自行搜索。代码没有问题,但是无法获取到requestBody,就要考虑接口方法是否使用了@RequestBody。

在Spring MVC框架中,当你使用@RequestBody注解时,Spring会在将请求转发到控制器方法之前,从HTTP请求体中读取数据并将其反序列化为Java对象。这一处理过程是由HttpMessageConverter完成的,它负责将请求体中的JSON、XML或其他格式的数据转换为Java对象。

请求体只能被读取一次:HTTP请求体是一个输入流,它只能被读取一次。一旦HttpMessageConverter读取了请求体,输入流就被“消耗”掉了,无法再次被读取。因此,当切面尝试访问请求体时,它发现输入流已经为空或不可用。

解决方法:

import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;public class CachedBodyHttpServletRequestWrapper extends HttpServletRequestWrapper {private final byte[] cachedBody;public CachedBodyHttpServletRequestWrapper(HttpServletRequest request) throws IOException {super(request);ByteArrayOutputStream outputStream = new ByteArrayOutputStream();InputStream inputStream = request.getInputStream();byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);}cachedBody = outputStream.toByteArray();}@Overridepublic ServletInputStream getInputStream() throws IOException {final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(cachedBody);return new ServletInputStream() {@Overridepublic boolean isFinished() {return byteArrayInputStream.available() == 0;}@Overridepublic boolean isReady() {return true;}@Overridepublic void setReadListener(ReadListener readListener) {}@Overridepublic int read() throws IOException {return byteArrayInputStream.read();}};}public String getCachedBody() {return new String(cachedBody, StandardCharsets.UTF_8);}
}
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 java.io.IOException;public class CachedBodyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {if (request instanceof HttpServletRequest) {HttpServletRequest httpRequest = (HttpServletRequest) request;CachedBodyHttpServletRequestWrapper cachedBodyRequestWrapper = new CachedBodyHttpServletRequestWrapper(httpRequest);chain.doFilter(cachedBodyRequestWrapper, response);} else {chain.doFilter(request, response);}}@Overridepublic void destroy() {}
}
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class FilterConfig {@Beanpublic FilterRegistrationBean<CachedBodyFilter> loggingFilter(){FilterRegistrationBean<CachedBodyFilter> registrationBean = new FilterRegistrationBean<>();registrationBean.setFilter(new CachedBodyFilter());registrationBean.addUrlPatterns("/*");return registrationBean;    }
}

然后在切面里利用CachedBodyHttpServletRequestWrapper 去获取requestBody就可以了。

http://www.ritt.cn/news/2358.html

相关文章:

  • 设计公司网站建设费用自媒体视频发布平台
  • 滑县做网站太原今日新闻最新头条
  • 做外贸网站用什么软件自己手机怎么免费做网站
  • 网站扒下来了怎么做seo网站诊断分析报告
  • 网站开发培训课程成都网站优化平台
  • 淘宝上做网站SEO靠谱吗宝鸡seo
  • wordpress缩略图清理广州seo网站管理
  • 品牌网站建设联系方式公司网站建设
  • 学科网站建设方案竞价外包托管费用
  • 山东建设银行官网网站搜索引擎营销简称
  • 石家庄做网站网络公司最佳磁力吧ciliba磁力链
  • 女的和男的做那个视频网站微信搜一搜seo
  • 王者荣耀网站开发目的响应式网站模板的特点
  • 动易网站后台管理功能深圳关键词优化公司哪家好
  • 微信店铺如何优化关键词搜索排名
  • 如何建设赌博网站互联网域名交易中心
  • 自己做了个网站成品ppt网站国外
  • 网站安全建设工作总结最大的中文搜索引擎
  • 建个企业网站收费刷外链工具
  • 个体工商户可以做网站备案吗百度下载并安装最新版
  • 网站怎么做来卖东西企业网站推广可以选择哪些方法
  • 网站建设哪里google免登录网页版
  • 產品定制网站开发seo自学教程
  • 建设银行信用卡网站是哪个好头条发布视频成功显示404
  • 济南网站定制嘉兴百度seo
  • 建设开源社区网站什么意思重庆网站推广
  • 公众号制作模板网站万网域名交易
  • 冬季去黄山旅游攻略南宁百度快速排名优化
  • 毕设用别人网站做原型百度搜索竞价推广
  • 山东电力建设第一工程有限公司网站注册月入百万的游戏代理