All Downloads are FREE. Search and download functionalities are using the official Maven repository.

love.keeping.starter.web.utils.ResponseUtil Maven / Gradle / Ivy

package love.keeping.starter.web.utils;

import love.keeping.starter.common.constants.StringPool;
import love.keeping.starter.common.exceptions.BaseException;
import love.keeping.starter.common.exceptions.impl.DefaultSysException;
import love.keeping.starter.common.utils.FileUtil;
import love.keeping.starter.web.resp.InvokeResultBuilder;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

/**
 * HttpServletResponse工具类
 *
 * @author Keeping
 */
@Slf4j
public class ResponseUtil {

  /**
   * 获取response
   *
   * @return
   */
  public static HttpServletResponse getResponse() {

    HttpServletResponse response = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getResponse();

    return response;
  }

  /**
   * 响应错误信息
   *
   * @param response
   * @param e
   */
  public static void respFailJson(HttpServletResponse response, BaseException e) {

    response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
    response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
    response.setCharacterEncoding(StringPool.CHARACTER_ENCODING_UTF_8);

    try {
      response.getWriter().print(JsonUtil.toJsonString(InvokeResultBuilder.fail(e)));
    } catch (IOException ex) {
      log.error(ex.getMessage(), ex);
      throw new DefaultSysException();
    }
  }

  /**
   * 响应Json
   *
   * @param response
   * @param obj
   */
  public static void respSuccessJson(HttpServletResponse response, Object obj) {

    response.setStatus(HttpStatus.OK.value());
    response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
    response.setCharacterEncoding(StringPool.CHARACTER_ENCODING_UTF_8);

    try {
      response.getWriter().print(JsonUtil.toJsonString(InvokeResultBuilder.success(obj)));
    } catch (IOException e) {
      log.error(e.getMessage(), e);
      throw new DefaultSysException();
    }
  }

  /**
   * 下载文件
   *
   * @param file
   */
  public static void download(File file) {

    download(file, file.getName());
  }

  /**
   * 下载文件
   *
   * @param file
   * @param fileName
   */
  public static void download(File file, String fileName) {

    download(file, fileName, "application/octet-stream");
  }

  /**
   * 下载文件
   *
   * @param file
   * @param fileName
   * @param contentType
   */
  public static void download(File file, String fileName, String contentType) {

    HttpServletResponse response = getResponse();
    response.setContentType(contentType);
    response.setCharacterEncoding(StandardCharsets.UTF_8.name());
    response.setHeader("FileName", fileName);
    response.setHeader("Content-Disposition", "attachment;filename=" + fileName);

    OutputStream os = null;
    try {
      os = response.getOutputStream();
      os.write(FileUtil.readBytes(file));
    } catch (IOException e) {
      log.error(e.getMessage(), e);
      throw new DefaultSysException(e.getMessage());
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy