一旦碰到了一个模式,ServletRequest
就将其中和响应对象放入servlet的局部ThreadLocal
变量。Servlet类还具有获取当前请求和响应对象的方法。因此,为了获得这些对象,您仍然需要使用servlet对象。
这些ThrealLocal
局部变量的意义何在?
关键是将请求和响应对象放在本来没有类的类中(例如,它们不是servlet)。一个示例是JSF托管Bean-
它们的方法不带HttpServletRequest
参数,因此您可以通过来获取请求FacesContext
,该请求将它们包含在ThreadLocal
变量中。
之所以起作用,是因为每个请求都由一个单独的线程(由servlet容器)处理。所以线程=请求。但是需要注意的是-
容器倾向于使用线程池。因此,必须始终在threadlocal中设置一个新的请求,最好在之后将其清除(例如在中Filter
)。否则,您会得到一些意想不到的行为。
但是您应该在代码中真正避免这种情况。如果您需要请求或响应中的任何内容,请将其作为方法参数传递给周围。否则,您可能会违反层边界(例如,如果您倾向于在服务层中使用该请求)
本文向大家介绍关于ThreadLocal对request和response的用法说明,包括了关于ThreadLocal对request和response的用法说明的使用技巧和注意事项,需要的朋友参考一下 记得在一篇博文中看到描述threadLocal的一句话: ThreadLocal除了适用于多线程保证每条线程都有自己的变量副本外,还适用于在线程上下文中共享某些变量值。 这两种说法是有区别的。前者
我不明白为什么ServletRequest有一个setAttribute方法。如果我有一个包含一个文本框和一个提交按钮的jsp页面。。。 我的目标是当我提交时,我的名字应该显示在那个文本框中。问题:文本框中显示的任何内容都是来自servlet的响应,对吗? 但在我在servlet部分的作业中:这是一个书面请求。setAttribute(“名称”、“abc”); 在jsp端: 它是这样写的:
问题内容: 任何人都可以用C,C ++和Java清楚地解释一下。什么都在堆栈上,什么都在堆上以及何时分配。 我所知道的, 每个函数调用的所有局部变量(无论是基元,指针还是引用变量)都在新的堆栈框架上。 使用new或malloc创建的所有内容都会进入堆。 我对几件事感到困惑。 是在堆上创建的对象成员的引用/基元是否也存储在堆上? 以及在每个框架中递归创建的方法的那些本地成员呢?它们都在堆栈上吗?如果
这个问题涵盖了一个软件算法 我正在解决亚马逊软件问题中的一个面试问题,特别是< br >“给定一组点(x,y)和一个整数“n”,返回n个接近原点的点” 下面是这个问题的高级伪代码示例答案,来自示例答案 步骤1:设计一个名为point的类,它有三个字段-int x,int y,int distance 第2步:对于所有给定的点,找到它们与原点之间的距离 第一步:将值存储在二叉树中 我同意步骤1和2,
问题内容: 我想将Swift样式字符串数组保存到NSUserDefaults中,但是代码中的“ if”语句通常说returnValue始终为nil。 在稍后的代码中(iOS 8),我想使用“ food + = [” spaghetti“]添加新条目。 问题答案: 以下代码应帮助您解决问题: 但是,使用前面的代码,如果您设置,则会遇到问题,因为不会返回。为了避免这种情况,您可能更喜欢以下代码:
假设我们有三个熊对象:妈妈、爸爸和宝宝。我们创建一个“bears”ArrayList,并将指向三个bears的指针添加到ArrayList。 上面的代码生成文档中所示的内存结构。 请注意,行bears.add(妈妈)没有将妈妈熊对象的副本添加到ArrayList。相反,它只是向ArrayList添加了一个指向妈妈熊对象的指针。在Java中,有这样一个对象的“浅”指针是很常见的——有一个对象周围分布