Управление сеансами на стороне сервера в GWTP - PullRequest
3 голосов
/ 17 августа 2011

Здравствуйте, я использую GWTP для разработки приложений.В приложении мне нужен экземпляр сеанса на стороне сервера, чтобы поместить некоторые данные в этот экземпляр сеанса.Я видел несколько примеров GWT, где есть класс Action, который расширяет класс ActionSupport.В примерах есть некоторый метод, с помощью которого мы можем получить экземпляр сеанса на стороне сервера. Как ниже:

public HttpServletRequest getRequest() {
        return ServletActionContext.getRequest();
    }

public HttpServletResponse getResponse() {
    return ServletActionContext.getResponse();
}

public HttpSession getSession() {
    HttpSession session = getRequest().getSession();
    return session;
}

Но я не получаю подобную вещь в GWTP.Пожалуйста, помогите мне.Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 24 августа 2011

Наконец-то я получил кое-что, что помогает мне. Я делюсь этим здесь.

private Provider<HttpServletRequest> requestProvider;
private ServletContext servletContext;


@Inject
public LoginCallerActionHandler(
        Provider<HttpServletRequest> requestProvider,
        ServletContext servletContext) {
    super();
    this.requestProvider = requestProvider;
    this.servletContext = servletContext;
}

Вот мой класс обработчика действий. В котором я могу использовать сессию.

servletContext.setAttribute(SessionKeys.LOGGEDIN_USER.toString(), returnObject.getLoggedInUser());
1 голос
/ 17 августа 2011

Если вы используете Spring или Guice на своей стороне сервера, вы можете получить запрос / ответ, добавленный в ваше действие.Например, если вы используете GWTP DispatchServletModule , вы можете использовать функции ServletModule Гисе в качестве:

DispatchServletModule расширяет Guice ServletModule и отображает URL-адреса запросов на обработчикклассы.

Вот пример из Guice wiki :

@RequestScoped
class SomeNonServletPojo {

  @Inject
  SomeNonServletPojo(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
    ...
  }

}

Я не уверен, связывает ли GWTP обработчики в области действия Singleton или нет.Если он связывает его в синглтоне, вы должны вместо этого ввести провайдера.

...