package com.zbooksoft.gdmis.filter; import com.alibaba.fastjson.JSON; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; /** * @Description 通过拦截UReport的相关方法 * @Author fsr * @Date 2021/4/6 **/ public class UReportFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("UReportFilter初始化成功..."); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest) request; UReportJson uReportJson = getUReportJson(); if(uReportJson == null) { filterChain.doFilter(request, response); } Map param = new HashMap(); if(uReportJson.getButton() != null && !"".equals(uReportJson.getButton())) { //控制操作按钮显示 param.put("_t", uReportJson.getButton()); } //_u=file:infrastructurePlanFormAndDetail2.ureport.xml String parameter = request.getParameter("_u"); if(uReportJson.getWatermark() != null && !"".equals(uReportJson.getWatermark()) && uReportJson.pattern(parameter)) { //添加水印 param.put("watermark", uReportJson.getWatermark()); param.put("watermarkFontSize", uReportJson.getWatermarkFontSize()); param.put("watermarkWidthSize", uReportJson.getWatermarkWidthSize()); param.put("watermarkHeightSize", uReportJson.getWatermarkHeightSize()); param.put("watermarkOpacity", uReportJson.getWatermarkOpacity()); } ParameterRequestWrapper pr = new ParameterRequestWrapper(httpServletRequest, param); filterChain.doFilter(pr, response); } @Override public void destroy() { } private UReportJson getUReportJson() { InputStream is = UReportFilter.class.getResourceAsStream("/ureport/ureport.json"); try { byte[] bytes = new byte[is.available()]; is.read(bytes); UReportJson uReportJson = JSON.parseObject(bytes, UReportJson.class); return uReportJson; } catch (Exception e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } }