RequestUtlis.java

  1. package cn.home1.oss.lib.common;

  2. import static org.apache.commons.lang3.StringUtils.isBlank;

  3. import java.nio.charset.Charset;
  4. import java.nio.charset.StandardCharsets;

  5. import javax.servlet.ServletRequest;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletRequestWrapper;

  8. /**
  9.  * Created by zhanghaolun on 16/11/16.
  10.  */
  11. public abstract class RequestUtlis {

  12.   private RequestUtlis() {
  13.   }

  14.   public static Charset findCharset(final HttpServletRequest request) {
  15.     final String encoding = request.getCharacterEncoding();
  16.     final Charset result;
  17.     if (isBlank(encoding)) {
  18.       result = StandardCharsets.UTF_8;
  19.     } else {
  20.       result = Charset.forName(encoding);
  21.     }
  22.     return result;
  23.   }

  24.   @SuppressWarnings("unchecked")
  25.   public static <T extends HttpServletRequestWrapper> T findWrapper( //
  26.     final ServletRequest request, final Class<T> type //
  27.   ) {
  28.     final T result;
  29.     if (request != null) {
  30.       if (type.isAssignableFrom(request.getClass())) {
  31.         result = (T) request;
  32.       } else {
  33.         if (HttpServletRequestWrapper.class.isAssignableFrom(request.getClass())) {
  34.           return findWrapper(((HttpServletRequestWrapper) request).getRequest(), type);
  35.         } else {
  36.           result = null;
  37.         }
  38.       }
  39.     } else {
  40.       result = null;
  41.     }
  42.     return result;
  43.   }
  44. }