FacesContext和“Servlet”上下文

时间:2010-09-20 18:30:22

标签: java jsf servlets facescontext

是否有任何与FacesContext等效的东西,但是在servlet环境中?

我有一些DAOSessionManager处理我的数据库的事务。当使用JSF编写当前页面时,我可以使用FacesContext来识别当前的http请求,但是关于servlet的那些呢?

我找不到任何方法来获取当前的Servlet上下文或httpRequest ...

感谢。

PS:是的,从我的DAO层引用FacesContext是一种耻辱,但这是一个开始。

2 个答案:

答案 0 :(得分:2)

这是ServletContext。它可以通过继承的getServletContext()方法在servlet类中使用。

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    ServletContext context = getServletContext();
    // ...
}

FacesContext的主要区别在于ServletContext不是ThreadLocal,因此您无法像FacesContext#getCurrentInstance()那样从当前线程中“静态地”获取它。你真的需要在任何需要的地方传递 {/ 1}}参考到DAO方法:

ServletContext

或者更好的是,为了避免紧密耦合,只需从中提取所需信息并传递它:

someDAO.doSomething(getServletContext());

答案 1 :(得分:-1)

ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();