在Java Servlet API中,获取ServletContext
的唯一方法是通过HttpSession
(Javadoc)的实例。
如果我不想创建会话并且只需要servlet上下文怎么办?换句话说,为什么getServletContext()
类中没有HttpServletRequest
方法?
修改
我知道我可以从servlet本身获取ServletContext
,因为它在初始化期间收到它。但是,我无法单独从HttpServletRequest
获取它,即使它链接到servlet。那么如果我有一个请求但没有引用任何servlet怎么办?
答案 0 :(得分:8)
getServletContext()
是GenericServlet
的一部分,它是HttpServlet
的父类,因此您应该能够在servlet实现中调用它。
修改强>
从 servlet 3.0 开始, HttpServletRequest
从ServletRequest
继承getServletContext()
,所以看起来你必须传递一个上下文以及请求和响应对象你必须使用3.0之前的版本。
答案 1 :(得分:3)
只是每个处理请求的实体(服务器,过滤器,页面)都有自己的getServletContext
(或init()
)
答案 2 :(得分:1)
您的servlet类有一个getServletContext()方法,您无需转到该请求。
这是有道理的,servlet本身具有容器提供的上下文,这与任何特定请求无关。