当前位置: 首页 > 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.yayakq.cn/news/135913/

相关文章:

  • 网站举报12321电商云仓
  • 现在建网站赚钱吗手机浏览器 网站开发
  • 成都网站搭建公司哪家好南充做网站的
  • 昆明网站搜索引擎优化网站制作多少
  • 长沙网站建设制作修改自豪地采用wordpress
  • 如何把网站建设好中国100强排名企业名单
  • 网站建设准备蚂蚁建站
  • 政务网站建设发言材料北京网站建设设计公司
  • 威海企业做网站品品牌牌建建设设网站
  • 为什么很少用python做网站wordpress备案信息代码
  • 免费做图片的网站wordpress移除谷歌字体
  • 推销网站建设彩页印刷
  • 焦作公司做网站深圳宝安区哪里好玩
  • 网站后台 网页编辑器可以申请做cpa广告的网站
  • 天津手机版建站系统哪个好过年做哪些网站能致富
  • 网站设计一般用什么软件北京app制作公司
  • 教人做家务的网站定制化网站开发报价
  • 烟台理工学校网站wordpress ssl部署
  • 网站建设分金手指排名十一建设工程 法律 网站
  • 网站开发公司职位seo的全称是什么
  • 手机怎样建立网站松江佘山网站建设
  • 建设工程教育网站论坛dede网站404怎么做
  • 网站开发多少钱一天是珠海市规划建设局网站
  • 广西免费网站制作久久信息网
  • 手机怎么开网站wordpress私密文章权限设置
  • 旅游海外推广网站建设方案博客社区类网站模板
  • 知道网站域名怎么联系宁波网站制作设计
  • 网站开发人员选项网站建设与管理课程标准
  • 国外手做网站泗洪网页定制
  • 织梦的网站地图更新做网站就