まず第一に、私の英語で申し訳ありませんが、私は Google 翻訳を使用しています。
私は Google App Engine を初めて使用し、ユーザーを配置しますが、最初にユーザーが既に存在することを確認する必要があり、メールで「一意のキーです」と書き留め、正しい方法で行っているかどうかを知らせます。
擬似コードは次のようになります。
クラス NewUser
if not exist mail
put user to database
return true
else
return false
サーブレット挿入ユーザー:
if not NewUser.put
redirect login.jsp
else
redirect user.jsp
そして、これはコードです:
NewUser クラス:
public static boolean insert(String name, String mail, String password) {
DatastoreService datastore = DatastoreServiceFactory
.getDatastoreService();
Key k = KeyFactory.createKey(User.class.getSimpleName(), mail);
if (!userExist(k)) {
Entity user = new Entity(k);
user.setProperty("name", name);
user.setProperty("password", Encrypt.MD5(password));
datastore.put(user);
return true;
} else {
return false;
}
}
private static boolean userExist(Key key) {
DatastoreService datastore = DatastoreServiceFactory
.getDatastoreService();
Query q = new Query(key).setKeysOnly();
List<Entity> ent = datastore.prepare(q).asList(
FetchOptions.Builder.withDefaults());
return (ent.isEmpty() || ent == null) ? false : true;
}
そしてサーブレット:
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/plain");
resp.sendRedirect(NewUser.insert(req.getParameter("name"),
req.getParameter("mail"), req.getParameter("password")) ? "jsps/user.jsp"
: "jsps/login.jsp");
}
クエリなしでメールをチェックするようにできますか?
このコードは機能しますが、改善する方法についての提案を探しています。
前もって感謝します。