您好,我正在使用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中没有得到类似的东西。请帮帮我。
最后我得到了一些帮助我的东西。我在这里分享。
private Provider<HttpServletRequest> requestProvider;
private ServletContext servletContext;
@Inject
public LoginCallerActionHandler(
Provider<HttpServletRequest> requestProvider,
ServletContext servletContext) {
super();
this.requestProvider = requestProvider;
this.servletContext = servletContext;
}
这是我的动作处理程序类。其中我可以使用session.
servletContext.setAttribute(SessionKeys.LOGGEDIN_USER.toString(), returnObject.getLoggedInUser());
如果你在服务器端使用Spring或Guice,你可以将请求/响应注入到你的Action中。例如,如果你正在使用GWTP的DispatchServletModule,你可以使用Guice的ServletModule的特性:
DispatchServletModule扩展Guice ServletModule并映射请求到处理程序类的url。
下面是一个来自Guice wiki的例子:
@RequestScoped
class SomeNonServletPojo {
@Inject
SomeNonServletPojo(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
...
}
}
我不确定GWTP是否在单例范围内绑定处理程序。如果它以单例绑定,你应该注入一个Provider。