有没有与 FacesContext 等效的东西,但是在 servlet 环境中?
我有一些 DAOSessionManager 来处理我的数据库的事务。当当前页面是使用 JSF 编写时,我可以使用 FacesContext 来识别当前的 http 请求,但是 servlet 呢?
我找不到任何方法来获取当前的 Servlet 上下文或 httpRequest...
Thanks.
PS:是的,从我的 DAO 层引用 FacesContext 是一种耻辱,但这是一个开始。
这是ServletContext http://download.oracle.com/javaee/5/api/javax/servlet/ServletContext.html。它可以通过继承在 servlet 类内部使用getServletContext() http://download.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html#getServletContext%28%29 method.
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
ServletContext context = getServletContext();
// ...
}
主要区别是FacesContext
那是ServletContext
isn't ThreadLocal http://download.oracle.com/javase/6/docs/api/java/lang/ThreadLocal.html,所以你不能像这样从当前线程“静态”获取它FacesContext#getCurrentInstance() http://download.oracle.com/javaee/6/api/javax/faces/context/FacesContext.html#getCurrentInstance%28%29做。你真的需要pass the ServletContext
在您需要的地方参考 DAO 方法:
someDAO.doSomething(getServletContext());
或者更好的是,为了避免紧密耦合,只需从中提取所需的信息并传递它:
Object interestingData = getServletContext().getAttribute("interestingData");
someDAO.doSomething(interestingData);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)