Don’t say much, just go to the code.
package org.bood.common.utils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* 用于处理HTTP请求的工具类
* 提供获取当前请求、响应、会话和参数等便捷方法
* 以及判断请求类型和响应渲染功能
*
* @author bood
* @since 2020/9/23
*/
public class ServletUtils {
private ServletUtils() {
}
/**
* 获取当前线程绑定的HttpServletRequest对象
*
* @return {@link HttpServletRequest }
* @author bood
* @since 2024/01/31
*/
public static HttpServletRequest getRequest() {
return getRequestAttributes().getRequest();
}
/**
* 获取当前线程绑定的HttpServletResponse对象
*
* @return {@link HttpServletResponse }
* @author bood
* @since 2024/01/31
*/
public static HttpServletResponse getResponse() {
return getRequestAttributes().getResponse();
}
/**
* 获取当前线程绑定的HttpSession对象
*
* @return {@link HttpSession }
* @author bood
* @since 2024/01/31
*/
public static HttpSession getSession() {
return getRequest().getSession();
}
/**
* 获取请求的字符串参数
*
* @param name 参数名
* @return {@link String }
* @author bood
* @since 2024/01/31
*/
public static String getParameter(String name) {
return getRequest().getParameter(name);
}
/**
* 获取请求的字符串参数,带默认值
*
* @param name 参数名
* @param defaultValue 如果参数不存在或为空时使用的默认值
* @return {@link String }
* @author bood
* @since 2024/01/31
*/
public static String getParameter(String name, String defaultValue) {
return getRequest().getParameter(name) != null ? getRequest().getParameter(name) : defaultValue;
}
/**
* 获取请求的整数类型参数
*
* @param name 参数名
* @return {@link Integer }
* @author bood
* @since 2024/01/31
*/
public static Integer getParameterToInt(String name) {
try {
return Integer.valueOf(getRequest().getParameter(name));
} catch (NumberFormatException e) {
return null;
}
}
/**
* 获取请求的整数类型参数,带默认值
*
* @param name 参数名
* @param defaultValue 如果参数不存在或无法转换时使用的默认值
* @return {@link Integer }
* @author bood
* @since 2024/01/31
*/
public static Integer getParameterToInt(String name, Integer defaultValue) {
try {
return Integer.valueOf(getRequest().getParameter(name));
} catch (NumberFormatException e) {
return defaultValue;
}
}
/**
* 将字符串渲染到客户端
*
* @param response 待渲染的HttpServletResponse对象
* @param string 待渲染的字符串
* @author bood
* @since 2024/01/31
*/
public static void renderString(HttpServletResponse response, String string) {
try {
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().print(string);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 判断请求是否是Ajax异步请求
*
* @param request 待判断的HttpServletRequest对象
* @return boolean
* @author bood
* @since 2024/01/31
*/
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");
return "XMLHttpRequest".equals(xRequestedWith);
}
/**
* 获取当前请求属性
*
* @return {@link ServletRequestAttributes }
* @author bood
* @since 2024/01/31
*/
private static ServletRequestAttributes getRequestAttributes() {
return (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
}
}