ちょっとWebアプリケーションを……

MySQLSQLOracleのそれが混ざってきそうな予感もするが、MySQLを使ったWebアプリでも作ってみようかなと言う気になった。要するに、JSP+TOMCAT+MySQLな感じで作ろうと思う。
今回、Servetは作らずにJSPからDAOをnewするような感じで作っていこうと思う。必要に合わせて、中間にコントロール層でも挟んでいこうと思っている。

とりあえず、簡単なログインもどきのところを作っていった。……そのまえに、仕様を固めないと空中分解の可能性大。

index.jsp

<%@page contentType="text/html; charset=Windows-31J" %>
<html>
<head><title>ログイン</title>
</head>
<body>
ログイン
<form method="post" action="login.jsp">
ユーザID<input type="text" name="id"><BR>
パスワード<input type="text" name="pass">
<input type="submit" value="送信">
</form>
</body>
</html>


login.jsp

<%@page contentType="text/html; charset=Windows-31J" %>
<%@ page import="jp.bne.tomokusaba.biz.*" %>
<html>
<head><title>ログイン</title>
</head>
<body>
<%
String id = request.getParameter("id");
String pass = request.getParameter("pass");

BizLogin login = new BizLogin();

if (login.login(id,pass)) {
%>
id = <%= id %><BR>
pass = <%= pass %> <BR>
<%
} else {
%>
ユーザIDまたはパスワードが違います。
<%
}

%>

</body>
</html>

BizLogin.java

package jp.bne.tomokusaba.biz;
import jp.bne.tomokusaba.dao.*;


public class BizLogin {
    public boolean login(String id, String pass) throws Exception {
        Daologin login = new Daologin();
        boolean result = false;
        try {

            login.getConnection();
            result = login.login(id, pass);
            
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            login.closeConnection();
        }
        return result;
    }
}

Daologin.java

package jp.bne.tomokusaba.dao;

public class Daologin extends SuperDAO {
    public Daologin() {

    }

    public boolean login(String id, String pass) throws Exception {
        try {

            String strSql =
                "select count(*) from user where id = ? and pass = ?";

            stmt = con.prepareStatement(strSql);

            stmt.setString(1, id);
            stmt.setString(2, pass);

            rs = stmt.executeQuery();
            String count = "";
            while (rs.next()) {
                count = rs.getString(1);
            }

            if ("1".equals(count)) {
                return true;
            } else {
                return false;
            }

        } catch (Exception e) {
            System.out.println(e);
        }
        return false;
    }

}


SuperDAO.java

package jp.bne.tomokusaba.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class SuperDAO {
    Connection con = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;

    public boolean getConnection() throws Exception {
        try {
            Class.forName("com.mysql.jdbc.Driver");

            String url =
                "jdbc:mysql://localhost:3306/test?userUnicode=true&characterEncoding=Windows-31J";
            String user = "java";
            String pswd = "javauser";

            con = DriverManager.getConnection(url, user, pswd);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    public boolean closeConnection() throws Exception {
        try {
            rs.close();
            stmt.close();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

}