CatHeaderRequestWrapper.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.yihu.ehr.cat;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletRequestWrapper;
  4. import java.util.*;
  5. /**
  6. * Wrapper - 添加请求头
  7. * Created by progr1mmer on 2018/9/4.
  8. */
  9. public class CatHeaderRequestWrapper extends HttpServletRequestWrapper {
  10. private final Map<String, String> customHeaders;
  11. CatHeaderRequestWrapper(HttpServletRequest request) {
  12. super(request);
  13. this.customHeaders = new HashMap<>();
  14. }
  15. void putHeader(String name, String value) {
  16. this.customHeaders.put(name, value);
  17. }
  18. @Override
  19. public String getHeader(String name) {
  20. // check the custom headers first
  21. String headerValue = customHeaders.get(name);
  22. if (headerValue != null){
  23. return headerValue;
  24. }
  25. // else return from into the original wrapped object
  26. return ((HttpServletRequest) getRequest()).getHeader(name);
  27. }
  28. @Override
  29. public Enumeration<String> getHeaders(String name) {
  30. if (customHeaders.containsKey(name)) {
  31. Set<String> set = new HashSet<>();
  32. set.add(getHeader(name));
  33. return Collections.enumeration(set);
  34. }
  35. return super.getHeaders(name);
  36. }
  37. @Override
  38. public Enumeration<String> getHeaderNames() {
  39. // create a set of the custom header names
  40. Set<String> set = new HashSet<>(customHeaders.keySet());
  41. // now add the headers from the wrapped request object
  42. Enumeration<String> e = ((HttpServletRequest) getRequest()).getHeaderNames();
  43. while (e.hasMoreElements()) {
  44. // add the names of the request headers into the list
  45. String n = e.nextElement();
  46. set.add(n);
  47. }
  48. // create an enumeration from the set and return
  49. return Collections.enumeration(set);
  50. }
  51. }