2013-08-05 6 views
0

를 다시로드 할 때까지 세션은 내가 가진 다음 서블릿으로 유지되지 servlets이 : 그것은 리디렉션 그 후 처음 loginServletuserService 객체를 사용 Gmail를 통해 사용자를 인증하고 세션에서 자격 증명 (username & password을) 지속 두 번째 서블릿 HomeServletsession에 저장된 데이터를 표시하는 데 사용됩니다.구글 앱 엔진 - 내가

내 문제는 데이터가 처음으로 session에 저장되면 두 번째 파일 ()에 다시 검색 할 수 없다는 것입니다. 때까지 firstServlet.

public class LoginServlet extends HttpServlet { 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) { 
    // initialize user authentification service 
    UserService userService = UserServiceFactory.getUserService(); 

    Boolean isConnected = (userService.getCurrentUser() != null); 
    if (isConnected) { 
     // save credentials in a session 
     HttpSession session = req.getSession(); 
     session.setAttribute("username", userService.getCurrentUser().getNickname()); 
     session.setAttribute("email", userService.getCurrentUser().getEmail()); 
     session.setAttribute("isConnected", isConnected); 

     // forward to login view 
     resp.sendRedirect("/"); 
    } 
    else 
     // redirect to 'gmail' login page 
     resp.sendRedirect(userService.createLoginURL("/")); 

    } 
} 

둘째 서블릿이다 :

제 서블릿은

public class GuestbookServlet extends HttpServlet { 
    static { 
    ObjectifyService.register(Message.class); 
    } 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) { 
    try { 
     List<Message> messages = ofy().load().type(Message.class).list(); 
     req.setAttribute("messages", messages); 

     this.getServletContext().getRequestDispatcher("/WEB-INF/index.jsp").forward(req, resp); 
    } catch (ServletException e) { 
     e.printStackTrace(); 
    } 
    } 

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    Message message = new Message(req.getParameter("name"), req.getParameter("message")); 
    ofy().save().entity(message).now(); 
    resp.sendRedirect("/"); 
    } 
} 

'/' 번째 서블릿 GuestbookServlet 경로이다.

+0

일부 코드를 보지 않고는 당신을 도울 수 없습니다. – Uooo

+0

오키 추가하겠습니다. – h4k1m

답변

0

LoginServletif statement은 처음 로그인 할 때 절대로 액세스되지 않으므로 아무 것도 session에 쓰여지지 않았습니다.

아직 존재하지 않는다면 session을 두 번째 서블릿에 저장해야합니다.