dromara/Sa-Token · error · NotWebContextException
非 web 上下文无法获取 HttpServletResponse
Error message
非 web 上下文无法获取 HttpServletResponse
What it means
Error "非 web 上下文无法获取 HttpServletResponse" thrown in dromara/Sa-Token.
Source
Thrown at sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SpringMVCUtil.java:55
* 获取当前会话的 request 对象
* @return request
*/
public static HttpServletRequest getRequest() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if(servletRequestAttributes == null) {
throw new NotWebContextException("非 web 上下文无法获取 HttpServletRequest");
}
return servletRequestAttributes.getRequest();
}
/**
* 获取当前会话的 response 对象
* @return response
*/
public static HttpServletResponse getResponse() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if(servletRequestAttributes == null) {
throw new NotWebContextException("非 web 上下文无法获取 HttpServletResponse");
}
return servletRequestAttributes.getResponse();
}
/**
* 判断当前是否处于 Web 上下文中
* @return /
*/
public static boolean isWeb() {
return RequestContextHolder.getRequestAttributes() != null;
}
}
View on GitHub (pinned to ac2c7f6e94)
Solutions
- 仅在 Web 请求线程(如 Controller、拦截器)中调用 SpringMVCUtil.getResponse(),不要在定时任务、异步线程、启动初始化等非 Web 上下文中调用。
- 调用前先使用 SpringMVCUtil.isWeb() 判断当前是否处于 Web 上下文。
- 如需在非 Web 场景输出数据,改用日志、消息队列等方式,而非直接操作 HttpServletResponse。
When it happens
Trigger: Thrown at sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SpringMVCUtil.java:55 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of dromara/Sa-Token@ac2c7f6e94 (2026-08-14).
Data as JSON: /api/errors/8925cc8759cf65ca.
Report an issue: GitHub.