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

合肥网站建设哪家好一手房发帖网站怎样做

合肥网站建设哪家好,一手房发帖网站怎样做,物流公司网站模板,网站建设大图由于项目需要使用拦截器对请求参数进行操作#xff0c;可是请求流只能操作一次#xff0c;导致后面方法不能再获取流了。 新建SpringBoot项目 1. 新建拦截器WebConfig.java /*** date: 2023/2/6 11:21* author: zhouzhaodong* description:*/ Configuration public class W… 由于项目需要使用拦截器对请求参数进行操作可是请求流只能操作一次导致后面方法不能再获取流了。 新建SpringBoot项目 1. 新建拦截器WebConfig.java /*** date: 2023/2/6 11:21* author: zhouzhaodong* description:*/ Configuration public class WebConfig implements WebMvcConfigurer {/*** 添加Web项目的拦截器*/Overridepublic void addInterceptors(InterceptorRegistry registry) {// 对所有访问路径都通过MyInterceptor类型的拦截器进行拦截// 放行登录页登陆操作静态资源registry.addInterceptor(new MyInterceptor()).addPathPatterns(/**).excludePathPatterns(/, /login, /index.html, /user/login, /css/**, /images/**, /js/**, /fonts/**);} }2. 获取请求参数并处理逻辑 /*** date: 2023/2/6 12:46* author: zhouzhaodong* description: 获取请求参数并处理*/ public class RequestWrapper extends HttpServletRequestWrapper {private final Logger logger LoggerFactory.getLogger(RequestWrapper.class);private final byte[] body;public RequestWrapper(HttpServletRequest request) {super(request);String sessionStream getBodyString(request);body sessionStream.getBytes(StandardCharsets.UTF_8);}public String getBodyString() {return new String(body, StandardCharsets.UTF_8);}/*** date: 2023/2/6 12:46* author: zhouzhaodong* description: 获取请求Body*/public String getBodyString(final ServletRequest request) {StringBuilder sb new StringBuilder();InputStream inputStream null;BufferedReader reader null;try {inputStream cloneInputStream(request.getInputStream());reader new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));String line ;while ((line reader.readLine()) ! null) {sb.append(line);}} catch (IOException e) {e.printStackTrace();} finally {if (inputStream ! null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if (reader ! null) {try {reader.close();} catch (IOException e) {e.printStackTrace();}}}logger.info(获取body请求参数: sb);return sb.toString();}/*** date: 2023/2/6 12:46* author: zhouzhaodong* description: 复制输入流*/public InputStream cloneInputStream(ServletInputStream inputStream) {ByteArrayOutputStream byteArrayOutputStream new ByteArrayOutputStream();byte[] buffer new byte[1024];int len;try {while ((len inputStream.read(buffer)) -1) {byteArrayOutputStream.write(buffer, 0, len);}byteArrayOutputStream.flush();} catch (IOException e) {e.printStackTrace();}return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());}Overridepublic BufferedReader getReader() {return new BufferedReader(new InputStreamReader(getInputStream()));}Overridepublic ServletInputStream getInputStream() {final ByteArrayInputStream bais new ByteArrayInputStream(body);return new ServletInputStream() {Overridepublic int read() {return bais.read();}Overridepublic boolean isFinished() {return false;}Overridepublic boolean isReady() {return false;}Overridepublic void setReadListener(ReadListener readListener) {}};} }3. 实现HandlerInterceptor接口 /*** date: 2023/2/6 11:19* author: zhouzhaodong* description: 实现HandlerInterceptor接口*/public class MyInterceptor implements HandlerInterceptor {private final Logger logger LoggerFactory.getLogger(MyInterceptor.class);/*** date: 2023/2/6 11:19* author: zhouzhaodong* description: 访问控制器方法前执行*/Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {logger.info(进入拦截器);logger.info(new Date() --preHandle: request.getRequestURL());logger.info(***************************【RequestBeginning】***************************);logger.info(----------------StartProcessingRequest----------------);try {long currentTime System.currentTimeMillis();SimpleDateFormat formatter new SimpleDateFormat(yyyy/MM/dd HH:mm:ss);Date date new Date(currentTime);logger.info(CurrentTime: {}, formatter.format(date));logger.info(ResponseTime: {}, (System.currentTimeMillis() - currentTime) ms);String requestUrl request.getRequestURI();logger.info(RequestURL: {} , requestUrl);logger.info(GetMethod: {}, handler);String method request.getMethod();logger.info(Method: {}, method);//获取请求参数RequestWrapper requestWrapper new RequestWrapper(request);//这里getBodyString()方法无参数logger.info(RequestBody: {}, requestWrapper.getBodyString());} catch (Exception e) {logger.error(MVC业务处理-拦截器异常, e);}logger.info(-------------------------End-------------------------);return true;}/*** date: 2023/2/6 12:46* author: zhouzhaodong* description: 访问控制器方法后执行*/Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {logger.info(new Date() --postHandle: request.getRequestURL());}/*** date: 2023/2/6 12:46* author: zhouzhaodong* description: postHandle方法执行完成后执行一般用于释放资源*/Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {logger.info(new Date() --afterCompletion: request.getRequestURL());} }4. application.yml spring:main:# 当出现相同名字的类进行注册时准许覆盖注册allow-bean-definition-overriding: true5. 启动类添加ServletComponentScan注解 6. 新建TestController.java /*** date: 2023/2/6 12:24* author: zhouzhaodong* description: 测试*/ RestController public class TestController {PostMapping(/one/abc)public String abc(RequestBody User user){return user.getName();} }7. 不进行处理先测试看结果 请求结果 控制台输出 可以看出流被读取了一次然后后台就获取不到了。 8. 通过过滤器获取参数然后传到后面程序中 /*** date: 2023/2/6 12:47* author: zhouzhaodong* description:*/ Component WebFilter(urlPatterns /*, filterName channelFilter) public class ChannelFilter implements Filter {private final Logger logger LoggerFactory.getLogger(ChannelFilter.class);Overridepublic void init(FilterConfig filterConfig) {}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {logger.info(进入过滤器);// 防止流读取一次后就没有了, 所以需要将流继续写出去HttpServletRequest httpServletRequest (HttpServletRequest) servletRequest;RequestWrapper requestWrapper new RequestWrapper(httpServletRequest);filterChain.doFilter(requestWrapper, servletResponse);}Overridepublic void destroy() {} }9. 流处理后再进行测试 请求结果 控制台输出 解决啦 源代码路径 https://github.com/zhouzhaodong/springboot/tree/master/springboot-interceptor
http://www.hkea.cn/news/14592161/

相关文章:

  • 网站特色页面建设手机网站建立免费平台
  • h5做怎么做微网站网站建设时间进度表模板
  • 给菠菜网站做支付建设企业银行u盾如何使用
  • 北京专业做网站设计公司网络维护员
  • 福州优秀网站建设公司网站运营外包协议
  • 网站怎么做背景广东商城网站建设公司
  • 手机网站建设免费空间兰州市网络公司
  • 网站建设与管理自考本公司网站如何备案
  • 网站客户运营jetty网站开发
  • 哪里有建设网站中的视频下载网站建设那家做的好
  • 那个网站百度收录快企业管理咨询包括哪些
  • 哪些网站专做自媒体的如何做h5简历制作网站
  • 广东建设官方网站湖南省军区强军网网站群建设项目
  • 物流网站建设工作岗位wordpress 显示纯文字
  • 佛山做网站开发自助建站营销招商
  • 重庆网站建设公司是什么意思东莞寮步二手房
  • 林芝网站建设装饰公司网站建设流程
  • 广州专门做seo的公司网站seo思路
  • 网站建设什么专业广州网站建设排行
  • 注册网站后怎么建设阳江招聘网鹏程
  • 帝国cms二手网站模板番禺区营销型网站建设
  • 西安商城网站建设网站域名的意思
  • 衣服网站设计做网站的岗位好吗
  • 动漫网站在线免费观看萧县做网站
  • windows优化大师官方免费下载郑州企业网站优化排名
  • 响应式网站div居中天津市建设网站
  • iis网站下载太原提高网站排名
  • 如何提高网站的访问速度用阿里云服务器做盗版小说网站吗
  • 如何做自己的网站商城wordpress菜单参数设置
  • 建筑设计专业的网站网站建设请款报告