Guilherme Povala
unread,Aug 4, 2010, 5:54:43 PM8/4/10Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to gujsmo
Então, o problema que estou tendo é o seguinte:
Quero fazer uma tela de login (a verificação se existe no DB já fiz,
tudo funcionando), o único problema é que quero fazer com uma sessão
na página, para o usuário logar e quando atualizar continuar logado, e
não pedir novamente o login e a senha!
As classes que tenho são as seguintes...
Método que inicia
[...]
public void onModuleLoad() {
validarSessao();
}
//Evento do Botão
enviarButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
serviceModel = new LoginModel();
serviceModel.setUser(loginTextBox.getText());
serviceModel.setPasswd(senhaTextBox.getText());
LoginServiceAsync loginServiceAsync =
GWT.create(LoginService.class);
AsyncCallback<String> asyncCallback = new
AsyncCallback<String>() {
@Override
public void onSuccess(String result) {
if (result != null) {
RootPanel.get().clear();
RootPanel.get().add(new Main());
Cookies.setCookie("session", result, new
Date(System.currentTimeMillis() + TWO_MIN));
sessionId.setSessionId(result);
} else {
exibeLabel("Login ou Senha inválidos!");
}
}
@Override
public void onFailure(Throwable caught) {
Window.alert(caught.toString());
System.out.println(caught);
}
};
loginServiceAsync.login(serviceModel, asyncCallback);
}
});
private void validarSessao() {
SessionServiceAsync sessionServiceAsync =
GWT.create(SessionService.class);
AsyncCallback<SessionModel> asyncCallback = new
AsyncCallback<SessionModel>() {
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(SessionModel result) {
if
(sessionId.getSessionId().equals(result.getSessionId())) {
RootPanel.get().clear();
RootPanel.get().add(new Main());
} else if (result == null || !
sessionId.getSessionId().equals(result.getSessionId())) {
init();
RootPanel.get().add(criaFormulario());
}
}
};
sessionServiceAsync.session(sessionId, asyncCallback);
}
[/...]
public class SessionModel implements IsSerializable {
private static final long serialVersionUID = 4637358200152132934L;
private String sessionId = "";
public void setSessionId(String sessionId) {
if (sessionId == null) {
this.sessionId = "";
} else {
this.sessionId = sessionId;
}
}
public String getSessionId() {
return sessionId;
}
}
// No Lado do Servidor
public class LoginServiceImpl extends RemoteServiceServlet implements
LoginService {
private static final long serialVersionUID = 270628040929463623L;
@Override
public String login(LoginModel user) {
LoginServiceDAO service = new LoginServiceDAO();
if (user != null && service.select(user.getUser(),
user.getPasswd()) != null) {
HttpSession httpSession =
getThreadLocalRequest().getSession();
httpSession.setMaxInactiveInterval(1000 * 60 * 2);
return httpSession.getId();
}
return null;
}
}
public class SessionServiceImpl extends RemoteServiceServlet
implements SessionService {
private static final long serialVersionUID =
-6274876845484737659L;
@Override
public SessionModel session(SessionModel sessionId) {
HttpSession httpSession =
getThreadLocalRequest().getSession(false);
if (httpSession != null) {
try {
sessionId.setSessionId(httpSession.getId());
} catch (IllegalStateException e) {
sessionId.setSessionId("");
}
return sessionId;
}
return null;
}
}
Então, não sei como resolver esse problema! Se alguem conseguir...
Ficarei grato!