1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package com.yihu.ehr.cat;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletRequestWrapper;
- import java.util.*;
- /**
- * Wrapper - 添加请求头
- * Created by progr1mmer on 2018/9/4.
- */
- public class CatHeaderRequestWrapper extends HttpServletRequestWrapper {
- private final Map<String, String> customHeaders;
- CatHeaderRequestWrapper(HttpServletRequest request) {
- super(request);
- this.customHeaders = new HashMap<>();
- }
- void putHeader(String name, String value) {
- this.customHeaders.put(name, value);
- }
- @Override
- public String getHeader(String name) {
- // check the custom headers first
- String headerValue = customHeaders.get(name);
- if (headerValue != null){
- return headerValue;
- }
- // else return from into the original wrapped object
- return ((HttpServletRequest) getRequest()).getHeader(name);
- }
- @Override
- public Enumeration<String> getHeaders(String name) {
- if (customHeaders.containsKey(name)) {
- Set<String> set = new HashSet<>();
- set.add(getHeader(name));
- return Collections.enumeration(set);
- }
- return super.getHeaders(name);
- }
- @Override
- public Enumeration<String> getHeaderNames() {
- // create a set of the custom header names
- Set<String> set = new HashSet<>(customHeaders.keySet());
- // now add the headers from the wrapped request object
- Enumeration<String> e = ((HttpServletRequest) getRequest()).getHeaderNames();
- while (e.hasMoreElements()) {
- // add the names of the request headers into the list
- String n = e.nextElement();
- set.add(n);
- }
- // create an enumeration from the set and return
- return Collections.enumeration(set);
- }
- }
|