首页 > 编程知识 正文

servletrequest获取请求内容,request对象获取请求信息的方法是

时间:2023-05-04 04:38:14 阅读:146922 作者:1757

译文: 3359 www.cn blogs.com/Winston ehome/p/13576385.html

RequestContextHolder可以检索当前http servlet request

htpservletrequestrequest=((servletrequestattributes ) requestcontextholder.getrequest attributes ).getrequest () ) 实现原理ThreadLocal ThreadLocal是本地线程的复制变量工具类。 主要用于映射专用线程及其维护的复制副本对象,每个线程之间的变量互不干扰,可以在高并发场景中进行无状态调用,特别是对于每个线程依赖于不同的变量值完成操作的场景

每个线程内部都存在数据结构为Map的ThreadLocals变量,线程变量及其对应值以ThreadLocal、Value的形式保存。

有些线程每次获取复制值时,另一个线程都无法获取当前线程的复制值,从而形成复制隔离,且彼此不干扰。

公共语音集(tvalue ) { Thread t=Thread.currentThread ); threadlocalmapmap=getmap(t; //当前线程为条目,当前线程的threadLocals变量if (映射!=null ()//参与为this,即key为ThreadLocal对象map.set(this,value ); 电子表格(t,value ); } public T get () { Thread t=Thread.currentThread ); threadlocalmapmap=getmap(t; //当前线程是条目,获取当前线程的热本地if (映射)!=null ()//参与为this,即key为threadlocalthreadlocalmap.entrye=map.get entry (this ); if(e!=null (@ suppress warnings (' unchecked ' ) tresult=(t ) e.value; 返回结果; } }返回集初始化值(); }threadlocalmapgetmap(threadt ) { return t.threadLocals; //threadLocals是线程的变量}私有密钥(thread local? key () inti=key.thread local hashcode (table.length-1 ); 输入e=table [ I ]; if(e!=nulle.get(==key ) return e; elsereturngetentryaftermiss (密钥,I,e ); //避免内存泄漏。 提到以下。 } Set () :

获取当前线程的线程局部。 类型是Map,将此值包含在此Map的结构变量中。 key是ThreadLocal对象,value是存储的值。 get(: )

检索到当前线程的ThreadLocals将ThreadLocal对象作为Key来检索Value值。 由于ThreadLocal对象充当Map中的键,因此一个ThreadLocal对象只能包含一个值。 如果存储了多个,新值将复盖旧值。

个人博客: https://www.xiaoxuya.top/

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。