content: package com.ruoyi.common.utils;
  
  import java.io.IOException;
  import java.io.UnsupportedEncodingException;
  import java.net.URLDecoder;
  import java.net.URLEncoder;
  import java.util.Collections;
  import java.util.HashMap;
  import java.util.Map;
  import javax.servlet.ServletRequest;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import javax.servlet.http.HttpSession;
  import org.springframework.web.context.request.RequestAttributes;
  import org.springframework.web.context.request.RequestContextHolder;
  import org.springframework.web.context.request.ServletRequestAttributes;
  import com.ruoyi.common.constant.Constants;
  import com.ruoyi.common.core.text.Convert;
  
  /**
   * 客户端工具类
   * 
   * @author ruoyi
   */
  public class ServletUtils
  {
      /**
       * 获取String参数
       */
      public static String getParameter(String name)
      {
          return getRequest().getParameter(name);
      }
  
      /**
       * 获取String参数
       */
      public static String getParameter(String name, String defaultValue)
      {
          return Convert.toStr(getRequest().getParameter(name), defaultValue);
      }
  
      /**
       * 获取Integer参数
       */
      public static Integer getParameterToInt(String name)
      {
          return Convert.toInt(getRequest().getParameter(name));
      }
  
      /**
       * 获取Integer参数
       */
      public static Integer getParameterToInt(String name, Integer defaultValue)
      {
          return Convert.toInt(getRequest().getParameter(name), defaultValue);
      }
  
      /**
       * 获取Boolean参数
       */
      public static Boolean getParameterToBool(String name)
      {
          return Convert.toBool(getRequest().getParameter(name));
      }
  
      /**
       * 获取Boolean参数
       */
      public static Boolean getParameterToBool(String name, Boolean defaultValue)
      {
          return Convert.toBool(getRequest().getParameter(name), defaultValue);
      }
  
      /**
       * 获得所有请求参数
       *
       * @param request 请求对象{@link ServletRequest}
       * @return Map
       */
      public static Map<String, String[]> getParams(ServletRequest request)
      {
          final Map<String, String[]> map = request.getParameterMap();
          return Collections.unmodifiableMap(map);
      }
  
      /**
       * 获得所有请求参数
       *
       * @param request 请求对象{@link ServletRequest}
       * @return Map
       */
      public static Map<String, String> getParamMap(ServletRequest request)
      {
          Map<String, String> params = new HashMap<>();
          for (Map.Entry<String, String[]> entry : getParams(request).entrySet())
          {
              params.put(entry.getKey(), StringUtils.join(entry.getValue(), ","));
          }
          return params;
      }
  
      /**
       * 获取request
       */
      public static HttpServletRequest getRequest()
      {
          return getRequestAttributes().getRequest();
      }
  
      /**
       * 获取response
       */
      public static HttpServletResponse getResponse()
      {
          return getRequestAttributes().getResponse();
      }
  
      /**
       * 获取session
       */
      public static HttpSession getSession()
      {
          return getRequest().getSession();
      }
  
      public static ServletRequestAttributes getRequestAttributes()
      {
          RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
          return (ServletRequestAttributes) attributes;
      }
  
      /**
       * 将字符串渲染到客户端
       * 
       * @param response 渲染对象
       * @param string 待渲染的字符串
       */
      public static void renderString(HttpServletResponse response, String string)
      {
          try
          {
              response.setStatus(200);
              response.setContentType("application/json");
              response.setCharacterEncoding("utf-8");
              response.getWriter().print(string);
          }
          catch (IOException e)
          {
              e.printStackTrace();
          }
      }
  
      /**
       * 是否是Ajax异步请求
       * 
       * @param request
       */
      public static boolean isAjaxRequest(HttpServletRequest request)
      {
          String accept = request.getHeader("accept");
          if (accept != null && accept.contains("application/json"))
          {
              return true;
          }
  
          String xRequestedWith = request.getHeader("X-Requested-With");
          if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest"))
          {
              return true;
          }
  
          String uri = request.getRequestURI();
          if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml"))
          {
              return true;
          }
  
          String ajax = request.getParameter("__ajax");
          return StringUtils.inStringIgnoreCase(ajax, "json", "xml");
      }
  
      /**
       * 内容编码
       * 
       * @param str 内容
       * @return 编码后的内容
       */
      public static String urlEncode(String str)
      {
          try
          {
              return URLEncoder.encode(str, Constants.UTF8);
          }
          catch (UnsupportedEncodingException e)
          {
              return StringUtils.EMPTY;
          }
      }
  
      /**
       * 内容解码
       * 
       * @param str 内容
       * @return 解码后的内容
       */
      public static String urlDecode(String str)
      {
          try
          {
              return URLDecoder.decode(str, Constants.UTF8);
          }
          catch (UnsupportedEncodingException e)
          {
              return StringUtils.EMPTY;
          }
      }
  }
  