GAEとJavaについて調べながらやった。
ログイン処理は3hほどで完成。できたけど、調べながらだから書き方があっているのか不安。
そもそもまともにJava書くのほぼ初めてだ。
明日本買ってこよう。
■ログイン
ログイン画面:login.jsp⇒ログイン判定:Login.java
ユーザクラス:Users.java
login.jsp
==========================================
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.util.List" %>
<%@ page import="javax.jdo.PersistenceManager" %>
<%@ page import="javax.servlet.http.HttpServlet" %>
<%@ page import="javax.servlet.http.HttpServletRequest" %>
<%@ page import="javax.servlet.http.HttpServletResponse" %>
<html>
<head><title>ログイン</title></head>
<body>
<%
%>
<form action="/login" method="POST">
<div>
ログイン ID:
<INPUT type="text" size="30" name="login_id">
</div>
<div>
ログイン パスワード:
<INPUT type="password" size="30" name="password">
</div>
<div><input type="submit" value="ログイン" /></div>
</form>
</body>
</html>
==========================================
Login.java
==========================================
import java.io.IOException;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class Login extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
// POSTパラメータ取得
String login_id = req.getParameter("login_id");
String password = req.getParameter("password");
// PMF
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
// 入力されたログインIDとパスワードのユーザがDBに存在するか
Query query = pm.newQuery(Users.class);
query.setFilter("login_id == paramId && password == paramPass");
query.declareParameters("String paramId, String paramPass");
List<Users> users = (List<Users>) query.execute(login_id, password);
resp.setContentType("text/html;charset=UTF-8");
if (!users.isEmpty()) {
// ログインOK
resp.getWriter().println("ログインOK!!");
}else{
// ログインNG
resp.getWriter().println("ログインNG!!");
}
} finally {
pm.close();
}
}
}
========================================
Users.java
========================================
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Users {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String login_id;
@Persistent
private String password;
public Users(String login_id, String password) {
this.login_id = login_id;
this.password = password;
}
// ログインID
public String getLoginId() {
return login_id;
}
public void setLoginId(String login_id) {
this.login_id = login_id;
}
// パスワード
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
================================
参照:
http://code.google.com/intl/ja/appengine/docs/java/datastore/
http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/usingdatastore.html
http://code.google.com/intl/ja/appengine/docs/java/datastore/queriesandindexes.html
http://d.hatena.ne.jp/a-know/20090809/1249815363
ソースをネットで晒すの初めてなきがしてきた。
ハズカシイ(/ω\)
明日はお仕事でEXPO。
見て回るだけだけど、折角行くんだから今後につなげよう。
未来は今から。
p.s.木枯らし1号。昔から1号とか呼んでたっけ。
最近できたのか、オレが物事知らないのか。
調べたら後者だった。木枯らし2号、3号はあっても発表しないとのこと。初雪みたいなもんか。
もっともっと物事を知ろう。
そして紅葉見に行きたい。
まとまりがない。まとめる気もないからどうでもいいか。
おーわり。