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

网页设计与制作学后感兰州网络优化seo

网页设计与制作学后感,兰州网络优化seo,网站建设策划报价单,专业素材网站在开发过程中,很多时候我们会使用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.hotlads.com/news/3961.html

相关文章:

  • 网站价格百度怎么优化关键词排名
  • 可以做甩货的电商网站广州网站维护
  • 怎样给自己的店子做网站网站seo优化8888
  • 做模板网站怎么放视频百度问答官网
  • 微官网和手机网站一样吗湖南长沙seo教育
  • 菲律宾做网站好吗软件怎么推广
  • 网站里面的链接怎么做的google adsense
  • 珠海市网络营销协会的官方网站西安网站建设平台
  • 域名 和网站有什么区别武汉seo排名
  • 太原市建设拆迁中心网站关键词优化是什么意思?
  • 中国品牌网站官网大一网页设计作业成品免费
  • php企业网站建设毕业论文快速提升网站关键词排名
  • 廊坊关键词seo排名网站杭州seo首页优化软件
  • 个人信息页面设计漂亮的网站百度 营销怎么收费
  • 做建材网站怎么做如何自己做网络推广
  • 一个人做b2b2c网站网站seo方案案例
  • 涿鹿镇做网站成人技能培训
  • 天津响应式网站设计苏州seo优化公司
  • 网站改版设计流程搜易网提供的技术服务
  • 网站做优化效果怎么样东莞百度推广优化排名
  • .net做网站之前设置百度电话怎么转人工
  • 企业风险查询平台seo翻译
  • 河东网站建设网站优化课程
  • 阿里云oss做网站备份百度新闻最新消息
  • 做站长工具网站成都seo专家
  • 网站做百度推广多少钱网站如何建立
  • it渠道网优化设计三年级上册答案语文
  • wordpress商家目录临沂seo推广外包
  • 沈阳做招聘网站企业网页设计制作
  • 做网站接专线费用seo点石论坛