 | import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.*; import java.util.*; import java.sql.*; import javax.naming.*; import javax.sql.*;
public final class LoginAction extends Action {
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
// 画面よりログインIDとパスワードを取得する LoginForm loginForm = (LoginForm)form; String id = loginForm.getId(); String password = loginForm.getPassword();
// 初期値を設定する InitialContext ic = null; DataSource ds = null; Connection con = null; PreparedStatement ps = null; ResultSet rs = null; int count = 0; String status = null; List usersList = null; ActionMessages errors = new ActionMessages();
try { // DBより登録者の情報を取得する ic = new InitialContext(); ds = (DataSource)ic.lookup("java:comp/env/jdbc/mysql"); con = ds.getConnection(); ps = con.prepareStatement( "select id, password from users where id = ?"); ps.setString(1, id); rs = ps.executeQuery();
// 認証を行う while (rs.next()) { count++; if (count == 1) {
// ログインIDとパスワードが登録者の情報と // 一致しなければ認証失敗 if (! id.equals(rs.getString("id")) || ! password.equals(rs.getString("password"))) { errors.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.login")); }
// ログインIDが2件以上存在したら認証失敗 } else { errors.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.login")); } }
// ログインIDが0件なら認証失敗 if (count == 0) { errors.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.login")); }
// 認証に成功した場合、トップ画面に // 登録者の一覧を表示する if (errors.isEmpty()) { status = "success"; usersList = new ArrayList(); ps = con.prepareStatement( "select id, name from users order by id"); rs = ps.executeQuery(); while (rs.next()) { SampleUser sampleUser = new SampleUser(); sampleUser.setId(rs.getString("id")); sampleUser.setName(rs.getString("name")); usersList.add(sampleUser); } request.setAttribute("userslist", usersList);
// 認証に失敗した場合、ログイン画面に // エラーメッセージを表示する } else { status = "error"; saveErrors(request, errors); }
} catch (Exception e) { throw e; } finally { con.close(); }
return (mapping.findForward(status)); } } |  |