首页 文章

HttpServletRequest属性和parms变得“迷失”? 1.6 JavaEE规范?

提问于
浏览
3

我们的代码 - 没有改变,在JavaEE1.4中的行为与在HttpServletRequest属性和参数方面的1.6中的行为不同 . 然而,这种不同的行为并非(始终)一致 . 我们也在使用BEA Weblogic 10(与版本8相比,它仍然有效) .

例如:在某些情况下,当我们执行“request.setAttribute(name,value)”并稍后执行“request.getAttribute(name)”时 - 请求中似乎没有这样的“名称” - 如如果我们从未设定它 . 我在8v3和Ja11中通过我们的Eclipse调试器运行了这个,我确实在8v3中看到了这个属性但是在Ja11中找不到它,这与代码的行为方式一致 .

我们的代码在至少一种情况下始终失败,其中“name”和“value”的值都被定义为“public final static String;”

我已经通过“request.getPathInfo”获取我需要的信息来编码这一个特定的实例行,但是我怀疑我们的代码中其他地方发生了相同或类似的问题 - 但在另一个这样的实例中它完全是SPORADIC我在调试模式下(甚至在放入Sysout语句时)无法重新创建它,因此无法捕获问题所在的行 . 在另一个例子中,也是一个我无法明确陷阱 - 我相信它是request.getParameter(name),即使jsp表单上存在“name”,也没有返回任何内容,带有数据 .

(请注意,我稍微简化了代码的实际外观,因为我们有一个完整的RequestContext类,它实现了HmplepSvvvvlet的一个请求周期的所有相关数据和方法 - 即HttpServletRequest,HttpServletResponse,HttpSession,HttpServlet

无论如何,我听说Java Servlet规范在1.6中已经有了一些变化 - 但它是否在某些地方明确说明了这些差异是什么,或者我真的需要拉出它旁边的1.4规范并做我自己的比较???

我承认自己并不精通处理HttpServeltRequest,但是这段代码已经工作了很长时间 - 很难相信像get / setAttribute和getParameter这样基本/常见的东西会发生变化......

1 回答

  • 0

    Servlet不是线程安全的,不会根据请求重新创建 . 所有请求都由同一个servlet对象提供服务 . 您是否将变量存储在servlet类的公共静态最终字段中?

相关问题