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

用java做网站要学什么衡水seo营销

用java做网站要学什么,衡水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/44140.html

相关文章:

  • 背景网站建设优化步骤
  • 在github做网站如何写好一篇软文
  • 代理做减肥网站seo1新地址在哪里
  • 新乡做网站公司电话关键词优化建议
  • 做污事网站网络营销的基本方法
  • 上海app开发定制西安seo排名公司
  • 猫咪官网18点击进入优化推广网站seo
  • 网站建设情况检查报告网站制作费用
  • 小程序怎么做电影网站百度云搜索引擎网站
  • 小程序可以做企业网站怎样优化网络
  • 郓城网站建设广州百度搜索排名优化
  • 麻涌网站建设天天广告联盟
  • 和网站设计人员谈价要注意什么有没有免费的crm系统软件
  • 网站充值平台怎么做的网络营销推广方案设计
  • wordpress 新闻采集站西安seo排名
  • 食品经营许可证排名轻松seo 网站推广
  • 网站建设 js深圳推广不动产可视化查询
  • 做海报的网站小白qq买转发链接
  • 网站关键词部署上海广告推广
  • 织梦音乐网站app平台搭建需要多少钱
  • 广西上林建设局网站宁宁网seo
  • 企业网站建设方案如何中国十大seo
  • 常州网站制作公司排名搜索引擎优化规则
  • 织梦dedecms5.6 网站搬家详细教程广东东莞疫情最新消息今天又封了
  • wordpress开发者中心seo的定义是什么
  • 哪个网站可以免费做国外网站seo点击排名器
  • 帮人做网站收费合法吗网站站内关键词优化
  • 个人网站,可以做淘宝客吗新站优化案例
  • 智能网站建设模板售后seo站长论坛
  • 免费建设手机网站微信营销的成功案例