content: /*
   *
   *  Licensed to the Apache Software Foundation (ASF) under one or more
   *  contributor license agreements.  See the NOTICE file distributed with
   *  this work for additional information regarding copyright ownership.
   *  The ASF licenses this file to You under the Apache License, Version 2.0
   *  (the "License"); you may not use this file except in compliance with
   *  the License.  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   *
   */
  
  package org.dinky.utils;
  
  import java.io.IOException;
  
  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 cn.hutool.core.convert.Convert;
  
  /** 客户端工具类 */
  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);
      }
  
      /** 获取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 待渲染的字符串
       * @return null
       */
      public static String 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();
          }
          return null;
      }
  
      /**
       * 是否是Ajax异步请求
       *
       * @param request
       */
      public static boolean isAjaxRequest(HttpServletRequest request) {
          String accept = request.getHeader("accept");
          if (accept != null && accept.indexOf("application/json") != -1) {
              return true;
          }
  
          String xRequestedWith = request.getHeader("X-Requested-With");
          if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) {
              return true;
          }
  
          String uri = request.getRequestURI();
          if (uri.endsWith(".json") || uri.endsWith(".xml")) {
              return true;
          }
  
          String ajax = request.getParameter("__ajax");
          //        if (StringUtils.inStringIgnoreCase(ajax, "json", "xml"))
          if (uri.endsWith("json") || uri.endsWith("xml")) {
              return true;
          }
          return false;
      }
  }
  