FacesContext и контекст сервлета - PullRequest
3 голосов
/ 20 сентября 2010

есть ли эквивалент FacesContext, но в среде сервлета?

У меня есть DAOSessionManager, который обрабатывает транзакции в моей базе данных. Я могу использовать FacesContext для определения текущего http-запроса, когда текущая страница написана с использованием JSF, но как насчет сервлетов?

Я не могу найти способ получить текущий контекст сервлета или httpRequest ...

Спасибо.

PS: да, иметь ссылку на FacesContext из моего слоя DAO - это позор, но это только начало.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2010

Это ServletContext.Он доступен внутри классов сервлетов унаследованным getServletContext() методом.

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

Основное отличие с FacesContext состоит в том, что ServletContext не ThreadLocal, поэтому вы не можете получить его «статически» из текущего потока, как FacesContext#getCurrentInstance().Вам действительно нужно передать ссылку ServletContext в методы DAO везде, где вам это нужно:

someDAO.doSomething(getServletContext());

Или еще лучше, чтобы избежать тесной связи, просто извлеките нужную информацию изэто и передать его:

Object interestingData = getServletContext().getAttribute("interestingData");
someDAO.doSomething(interestingData);
0 голосов
/ 18 декабря 2012
ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
...