当前位置: 首页 > news >正文

网站设计小技巧太原seo网站排名

网站设计小技巧,太原seo网站排名,如何开发网站平台,wordpress如何添加一个文章列表页在开发过程中,很多时候我们会使用ThreadLocal来临时缓存数据,当一次数据请求执行完成后需要主动执行释放当前ThreadLocal缓存数据资源,防止未能及时释放导致下一次访问时候ThreadLocal依然保持上一次缓存的数据。 spring提供两种方式去监听一…

在开发过程中,很多时候我们会使用ThreadLocal来临时缓存数据,当一次数据请求执行完成后需要主动执行释放当前ThreadLocal缓存数据资源,防止未能及时释放导致下一次访问时候ThreadLocal依然保持上一次缓存的数据。

spring提供两种方式去监听一次请求完成事件。
1、HandlerInterceptor -> afterCompletion 使用拦截方式,再执行完成后执行afterCompletion
2、ApplicationListener -> ServletRequestHandledEvent ,ApplicationListener 提供的是监听那种事件类型,ServletRequestHandledEvent 就是一次请求结束后的事件。

通过上述两种方式可以很方便的在一次请求完成移除当前线程ThreadLocal。

ThreadLocal 工具

public class ThreadLocal2UserSessionUtil {private static final ThreadLocal<Object> LOCAL = new ThreadLocal<>();/*** 设置数据** @param paramMap*/public static void set(Map<String, Object> paramMap) {LOCAL.set(paramMap);}/*** 获取值** @return*/public static Map<String, Object> get() {if (Objects.isNull(LOCAL.get())) {return new HashMap<>();} else {return (Map<String, Object>) LOCAL.get();}}/*** 获取值** @return*/public static Object get(String key) {Map<String, Object> resMap = (Map<String, Object>) LOCAL.get();if (null == resMap) {return null;}return (null != resMap.get(key)) ? resMap.get(key) : null;}/*** 每次取出数据后必须清空 否则就会出现值重复*/public static void remove() {LOCAL.remove();}/*** 获取app登录token** @return*/public static String getToken4App() {Map<String, Object> map = get();return (null == map) ? "" : (String) map.get(EncryptReqParamNameConstant.PARAM_TOKEN);}/*** 初始化数值** @return*/public static void pushUserToken4App(String appToken) {Map<String, Object> localMap = get();if (StringUtil.isNotBlank(appToken)) {localMap.put(EncryptReqParamNameConstant.PARAM_TOKEN, appToken);set(localMap);}}/*** 初始化数值** @return*/public static void pushUserId4App(Long userId) {Map<String, Object> localMap = get();if (null != userId) {localMap.put(EncryptReqParamNameConstant.USER_ID, userId);set(localMap);}}/*** 初始化数值  注意这里只有加解密才将用户id放入** @return*/public static Long getUserId4App() {Map<String, Object> map = get();return (null == map) ? null : (Long) map.get(EncryptReqParamNameConstant.USER_ID);}
}

HandlerInterceptor 方式

@Slf4j
@Component
public class ThreadLocalRemoveInterceptor implements HandlerInterceptor {@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {HandlerInterceptor.super.afterCompletion(request, response, handler, ex);ThreadLocal2UserSessionUtil.remove();}
}

在web控制器中加入监听器

@Configuration
public class PathPrefixMvcConfigurer implements WebMvcConfigurer {@Autowiredprivate ThreadLocalRemoveInterceptor threadLocalRemoveInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(threadLocalRemoveInterceptor).addPathPatterns("/*");}
}

2、通过监听器方式

@Slf4j
@Component
public class ServletRequestHandledEventListener implements ApplicationListener<ServletRequestHandledEvent> {@Overridepublic void onApplicationEvent(ServletRequestHandledEvent event) {ThreadLocal2UserSessionUtil.remove();}
}

完成

http://www.tj-hxxt.cn/news/41654.html

相关文章:

  • 公司做网站的费属于广告费么开发软件app需要多少钱
  • 企业门户网站怎么做天津seo网站管理
  • 推广app赚佣金企业seo自助建站系统
  • 公司网站备案条件平台推广广告宣传词
  • 宣传部总结网站建设电商平台哪个最好最可靠
  • 百度网站改版seo运营
  • 深圳建设网站服务网上网络推广
  • python网站开发论文1688关键词排名查询
  • 广安网站开发企业营销策略分析论文
  • 个人微商城怎么开通北京优化seo排名
  • 写的网站怎么做接口重庆seo网站管理
  • 大连做网站公司排行榜百度搜索广告收费标准
  • 商铺装修企业网站优化关键词
  • 做固定背景网站关键词数据分析工具有哪些
  • 国际企业网站建设怎么做网站排名
  • django网站开发过程优化大师免费版
  • 网站建设夬金手指花总什么是整合营销并举例说明
  • 网站的建设有没有推广app的平台
  • 自建外贸推广网站有哪些互联网推广中心
  • 网站建设做得好的公司我要安装百度
  • 做招聘网站怎么办营业执照全球疫情最新数据消息
  • 泰安网络推广公司怎么样seo推广软
  • 网站外链建设平台网站建设百度推广
  • 网站开发技术基础教程郑州高端网站建设哪家好
  • 河北提供网站建设公司哪家好百度新闻首页
  • wordpress 钩子教学广州优化网站排名
  • 客服网站b2b平台有哪几个
  • 有没有专业做二维码连接网站在软文营销的优势
  • 纯html静态网站seo快照推广
  • 网站开发工程师的职位百度推广按效果付费是多少钱