2012-04-25 167 views
0

我正在谷歌應用程序引擎中創建用戶註冊系統,到目前爲止我可以開發應用程序的註冊端。但我無法登錄並創建HttpSession。谷歌App Engine用戶註冊系統

在這裏我做了什麼,我創建了login.jsp和兩個文本框來輸入電子郵件和密碼。

然後我創建Bean類和DAO類如下。 package com.myfirstguide.beans;

import javax.servlet.http.HttpSession; 

import com.google.appengine.api.datastore.DatastoreService; 
import com.google.appengine.api.datastore.DatastoreServiceFactory; 
import com.google.appengine.api.datastore.Entity; 
import com.google.appengine.api.datastore.PreparedQuery; 
import com.google.appengine.api.datastore.Query; 

public class UserDAO { 

public static UserBean login(UserBean bean){ 

    String email = bean.getEmail(); 
    String password = bean.getPassword(); 

    try{ 
     DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
     Query q = new Query("Account"); 
     q.addFilter("email", Query.FilterOperator.EQUAL, email); 
     q.addFilter("password", Query.FilterOperator.EQUAL, password); 

     PreparedQuery pq = datastore.prepare(q); 
     Entity result = pq.asSingleEntity(); 
     if(result != null){ 
      bean.setValid(true); 

     } 

     //return bean; 
    }catch(Exception e){ 

    } 
    return bean; 
} 

} 

這裏是Bean類。

package com.myfirstguide.beans; 

public class UserBean { 

private String username; 
private String password; 
private String firstName; 
private String lastName; 
private String email; 
public boolean valid; 

public String getFirstName() { 
    return firstName; 
} 

public void setFirstName(String newFirstName) { 
    firstName = newFirstName; 
} 

public void setEmail(String semail){ 
    email = semail; 
} 

public String getEmail(){ 
    return email; 
} 

public String getLastName() { 
    return lastName; 
} 

public void setLastName(String newLastName) { 
    lastName = newLastName; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(String newPassword) { 
    password = newPassword; 
} 

public String getUsername() { 
    return username; 
} 

public void setUserName(String newUsername) { 
    username = newUsername; 
} 

public boolean isValid() { 
    return valid; 
} 

public void setValid(boolean newValid) { 
    valid = newValid; 
} 
} 

這裏是Servlet。

package com.myfirstguide.users; 

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import com.myfirstguide.beans.UserBean; 
import com.myfirstguide.beans.UserDAO; 

public class SignIn extends HttpServlet{ 

@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
     throws ServletException, IOException { 

    String email = req.getParameter("email"); 
    String password = req.getParameter("password"); 

    try{ 
     UserBean ubean = new UserBean(); 
     ubean.setEmail(email); 
     ubean.setPassword(password); 

     ubean = UserDAO.login(ubean); 
     if(ubean.isValid()){ 
       HttpSession session = req.getSession(true);  
       session.setAttribute("currentSessionUser",ubean); 
       resp.sendRedirect("index.jsp?session=" + ubean.getFirstName()); //logged-in page  
     } 
    }catch(Throwable e){ 
     System.out.println(e); 
    } 

} 

} 

而且我不知道JPA。如果有更好的方法來做到這一點,請告訴我。

謝謝!

+0

「但我無法登錄,並創建一個HttpSession」根本不會什麼幫助。詳細闡述問題。其次,DAO類代碼在哪裏? – 2012-04-26 03:47:56

+0

看來你已經發布了兩次bean代碼,而不是dao代碼 – 2012-04-26 06:19:47

+0

是的,對不起。現在我糾正了它。 – Isuru 2012-04-26 22:20:01

回答