0

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

ここでは、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を知りません。また、これを行うためのより良い方法があれば教えてください。

ありがとうございました!

4

1 に答える 1

1

セッションを有効にしましたか?

https://developers.google.com/appengine/docs/java/config/appconfig#Enabling_Sessions

于 2012-04-26T19:40:17.567 に答える