2012-04-25 14 views
0

私はGoogle App Engineにユーザー登録システムを作成しています。これまでに、アプリケーションの登録側を開発することができました。しかし、私はログインしてHttpSessionを作成することはできません。Google App Engineユーザー登録システム

ここでは、login.jspと2つのテキストボックスを作成して電子メールとパスワードを入力しました。

次に、BeanクラスとDAOクラスを次のように作成しました。 パッケージ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; 
} 
} 

ここにサーブレットがあります。

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クラスコードはどこですか? –

+0

それはあなたがダーコードではなく、2回、ビーンコードを投稿したようだ –

+0

ええ、それについて申し訳ありません。今私はそれを修正しました。 – Isuru

答えて