【Java】ログインアプリ作成
jspのログイン画面からユーザーIDとパスワードを入力し、登録ボタンを押すことでログインが成功し メニュー画面へ遷移するプログラムの作成。jsp画面
リクエストパラメータを使って値をサーブレットから取得するため、inputタグのname属性の値が必須になる。jsp
<form name="myform" action="" method="post">
<p>ユーザーID</p>
<p><input type="text" name=user_id value=""></p>
<p>パスワード</p>
<p><input type="text" name=pass value=""></p>
<input type="button" value="ログイン" name="login" onclick="buttonclick()">
</form>
Javascript
jsp画面からボタンをクリックするとinputタグのonclick属性buttonclick()の処理が行われ、 LoginServletが呼び出される。javascript
<script>
function buttonclick() {
document.myform.action = "<%=request.getContextPath()%>/LoginServlet";
document.myform.submit();
}
</script>
サーブレット
ユーザーIDとパスワードを読み込むことができたら、セッションスコープへ保存しメニュー画面を表示する。 データーベースの値と一致しなければエラー画面を表示する。servlet
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(false);
//リクエストパラメータを取得しuser_idとpassを変数に格納する。
String uid = request.getParameter("user_id");
String pass = request.getParameter("pass");
//beanクラスのUserをインスタンス
User user = new User(uid, pass);
//データーベース接続処理 コネクションプーリング
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/データーベース名");
con = ds.getConnection();
//データベースに登録してあるテーブルからユーザーIDとパスワードを取得
String sql = "SELECT * FROM テーブル名 WHERE カラム名 = ? AND カラム名 = ?";
ps = con.prepareStatement(sql);
ps.setString(1, uid);
ps.setString(2, pass);
rs = ps.executeQuery();
//一致する行があればメニュー画面へフォワード
if (rs.next()) {
session.setAttribute("LoginInfo", user);
RequestDispatcher dispatch = request.getRequestDispatcher("/WEB-INF/Menu.jsp");
dispatch.forward(request, response);
//なければエラー画面へフォワード
} else {
// ログインエラー
RequestDispatcher dispatch = request.getRequestDispatcher("/WEB-INF/Error.jsp");
dispatch.forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
//
}
rs = null;
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
//
}
ps = null;
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
//
}
con = null;
}
}
}
}