过滤器类:

  1. package com.channel.filter;
  2. import java.io.IOException;
  3. import javax.servlet.Filter;
  4. import javax.servlet.FilterChain;
  5. import javax.servlet.FilterConfig;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.ServletOutputStream;
  8. import javax.servlet.ServletRequest;
  9. import javax.servlet.ServletResponse;
  10. import javax.servlet.http.HttpServletResponse;
  11. import com.channel.util.RsaEncryptUtil;
  12. /**
  13. * 返回值输出过滤器,这里用来加密返回值
  14. *
  15. * @Title: ResponseFilter
  16. * @Description:
  17. * @author kokJuis
  18. * @date 上午9:52:42
  19. */
  20. public class ResponseFilter implements Filter
  21. {
  22. @Override
  23. public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
  24. throws IOException, ServletException
  25. {
  26. ResponseWrapper wrapperResponse = new ResponseWrapper((HttpServletResponse)response);//转换成代理类
  27. // 这里只拦截返回,直接让请求过去,如果在请求前有处理,可以在这里处理
  28. filterChain.doFilter(request, wrapperResponse);
  29. byte[] content = wrapperResponse.getContent();//获取返回值
  30. //判断是否有值
  31. if (content.length > 0)
  32. {
  33. String str = new String(content, "UTF-8");
  34. System.out.println("返回值:" + str);
  35. String ciphertext = null;
  36. try
  37. {
  38. //......根据需要处理返回值
  39. }
  40. catch (Exception e)
  41. {
  42. e.printStackTrace();
  43. }
  44. //把返回值输出到客户端
  45. ServletOutputStream out = response.getOutputStream();
  46. out.write(ciphertext.getBytes());
  47. out.flush();
  48. }
  49. }
  50. @Override
  51. public void init(FilterConfig arg0)
  52. throws ServletException
  53. {
  54. }
  55. @Override
  56. public void destroy()
  57. {
  58. }
  59. }


配置很简单:

spring boot:

  1. /**
  2. * 配置过滤器,这里过滤器主要是对返回值做后继处理
  3. *
  4. * @return
  5. */
  6. @Bean
  7. public FilterRegistrationBean someFilterRegistration()
  8. {
  9. FilterRegistrationBean registration = new FilterRegistrationBean();
  10. registration.setFilter(new ResponseFilter());// 配置一个返回值加密过滤器
  11. registration.addUrlPatterns("/*");
  12. registration.addInitParameter("paramName", "paramValue");
  13. registration.setName("responseFilter");
  14. return registration;
  15. }


spring mvc 下直接在web.xml下添加配置即可

  1. <!-- 返回值过滤器 -->
  2. <filter>
  3. <filter-name>responseFilter</filter-name>
  4. <filter-class>com.im.filter.ResponseFilter</filter-class>
  5. </filter>
  6. <filter-mapping>
  7. <filter-name>responseFilter</filter-name>
  8. <url-pattern>/*</url-pattern>
  9. </filter-mapping>