ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

获取当前线程中的HttpServletRequest对象

2022-06-25 18:31:07  阅读:185  来源: 互联网

标签:HttpServletRequest web springframework 获取 线程 import org null


1、使用spring注解自动注入也是线程安全的参考了:https://mbd.baidu.com/ug_share/mbox/4a83aa9e65/share?product=smartapp&tk=9f5b9a1e513c2f82715d65bf455d2129&share_url=https%3A%2F%2Fyebd1h.smartapps.cn%2Fpages%2Fblog%2Findex%3FblogId%3D80885270%26_swebfr%3D1%26_swebFromHost%3Dbaiduboxapp&domain=mbd.baidu.com

@Autowired
private HttpServletRequest httpServletRequest;

1.1 通过接口调用处理的类使用其获取参数是正常的

1.2 如果是通过spring的监听或者定时任务发起的请求HttpServletRequest不为空,但是使用其获取参数的时候 62行会抛出异常(原因是@Autowired注入的是代理类每次执行时会从当前线程获取具体的对象,但是定时任务发起的请求没有HttpServletRequest所以校验报错)

org.springframework.web.context.request.RequestContextHolder#currentRequestAttributes

 

 

 

2、提取内部获取逻辑自己实现的工具类避免报错的问题

package com.hdx.common.hdxspringinit.utils;

import org.springframework.stereotype.Controller;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

@Controller
public class HttpServerletRequestUtils {

/**
* 获取当前线程HttpServletRequest对象
*
* @return HttpServletRequest
*/
public HttpServletRequest getServerRequest(){
HttpServletRequest httpServletRequest = null;
try {
RequestAttributes requestattributes = RequestContextHolder.getRequestAttributes();
if (requestattributes == null) {
return null;
}
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestattributes;
if (servletRequestAttributes == null) {
return null;
}
httpServletRequest = servletRequestAttributes.getRequest();
} catch (Exception exception) {
// 打印异常信息
exception.printStackTrace();
}

return httpServletRequest;
}

}

标签:HttpServletRequest,web,springframework,获取,线程,import,org,null
来源: https://www.cnblogs.com/hu0529/p/16412167.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有