JSP_basic. MySQL DBに関連付けられたログインページの作成(PreparedStatement,session)
JavaからSQL DBへの接続方法
準備内容はmysqlコネクタです.
WEB-INFのライブラリにコネクタが用意されている場合は、
userLoginForm.jspファイルを作成します.
簡単なログインフォームが作成されました.
form=actionを指定してUserLoginCheckを使用します.jspに移動することにしました.
入力IDはuserId
入力したパスワードはuserpwという名前のデータを保存します.
このデータをsubmitボタンでpostで送信します.
ユーザLoginCheckは、受信したデータをDBに関連付けて比較する.jspではPreparedStatementが使用されます.
まず、setCharacterEncodeを宣言し、データ転送エラーを防止します.
接続文のDriveManager.getConnection
これにより、SQL DBに簡単にアクセスできます.
PreparedStatementでは、sqlに送信するクエリー文を保存するのは難しくありません.
String sql = "SELECT*FROM userinfo WHERE user_id = ?"; 同じように
“?”貼ればいい
その後.setString(数値、変数)の使用
数字の2番目?に必要な変数を挿入します.
その後rs=pstmtとなる.executeQuery();道.
クエリ文はsqlリクエストデータに送信されました.
次に、ログインチェック方法を作成します.
ここで作成する基本的なログイン方法はif~else文を使用してデータベースデータと比較することです.
userIdFail.jspを使用して再起動または
userPwFail.jspのフォーマットにリダイレクトします.
要求データベースのデータがIDとPWと一致している場合は、Welcomeにログインします.jspを使用して再起動します.
難しくないですね.
以下はjspファイルにログインする全文です.
まずはここまで
準備内容はmysqlコネクタです.
WEB-INFのライブラリにコネクタが用意されている場合は、
userLoginForm.jspファイルを作成します.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<row>
<div class="col-sm-5">
<form action="http://localhost:8181/JSPbasic/user/userLoginCheck.jsp" method="post">
<input type="text" name="userId" placeholder="아이디를 입력해주세요." class="form-control form-control-lg">
<input type="password" name="userPw" placeholder="비밀번호를 입력해주세요." class="form-control form-control-lg">
<input type="submit" value="확인" class="btn btn-primary mb-3">
</form>
</div>
</row>
</body>
</html>
簡単なログインフォームが作成されました.
form=actionを指定してUserLoginCheckを使用します.jspに移動することにしました.
入力IDはuserId
入力したパスワードはuserpwという名前のデータを保存します.
このデータをsubmitボタンでpostで送信します.
ユーザLoginCheckは、受信したデータをDBに関連付けて比較する.jspではPreparedStatementが使用されます.
まず、setCharacterEncodeを宣言し、データ転送エラーを防止します.
request.setCharacterEncoding("UTF-8");
次に、転送されたデータを変数に格納します.String uId = request.getParameter("userId");
String uPw = request.getParameter("userPw");
次に、接続文をDBにバインドする準備をします. String dbType = "com.mysql.cj.jdbc.Driver";
String connectUrl = "jdbc:mysql://localhost:3306/jdbcprac2?serverTimezone=UTC";
String connectId = "root";
String connectPw = "????";
上記のdbType、connectUrl、connectId、connectPwは次のとおりです.接続文のDriveManager.getConnection
これにより、SQL DBに簡単にアクセスできます.
try {
Class.forName(dbType);
Connection con = DriverManager.getConnection(connectUrl, connectId, connectPw);
String sql = "SELECT*FROM userinfo WHERE user_id = ?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, uId);
rs = pstmt.executeQuery();
try~catchのtryにDB関連構文と必要なメソッドを挿入すればよい.PreparedStatementでは、sqlに送信するクエリー文を保存するのは難しくありません.
String sql = "SELECT*FROM userinfo WHERE user_id = ?"; 同じように
“?”貼ればいい
その後.setString(数値、変数)の使用
数字の2番目?に必要な変数を挿入します.
その後rs=pstmtとなる.executeQuery();道.
クエリ文はsqlリクエストデータに送信されました.
次に、ログインチェック方法を作成します.
ここで作成する基本的なログイン方法はif~else文を使用してデータベースデータと比較することです.
if(rs.next()){
String dbId = rs.getString(1);
String dbPw = rs.getString(2);
String dbName = rs.getString(3);
String dbMail = rs.getString(4);
if(uPw.equals(dbPw)) {
response.sendRedirect("http://localhost:8181/JSPbasic/user/loginWelcome.jsp");
} else {
response.sendRedirect("http://localhost:8181/JSPbasic/user/userPwFail.jsp");
}
} else {
response.sendRedirect("http://localhost:8181/JSPbasic/user/userIdFail.jsp");
}
} catch(Exception e){
e.printStackTrace();
}
%>
ログイン失敗時userIdFail.jspを使用して再起動または
userPwFail.jspのフォーマットにリダイレクトします.
要求データベースのデータがIDとPWと一致している場合は、Welcomeにログインします.jspを使用して再起動します.
難しくないですね.
以下はjspファイルにログインする全文です.
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String uId = request.getParameter("userId");
String uPw = request.getParameter("userPw");
String dbType = "com.mysql.cj.jdbc.Driver";
String connectUrl = "jdbc:mysql://localhost:3306/jdbcprac2?serverTimezone=UTC";
String connectId = "root";
String connectPw = "mysql";
ResultSet rs = null;
try {
Class.forName(dbType);
Connection con = DriverManager.getConnection(connectUrl, connectId, connectPw);
String sql = "SELECT*FROM userinfo WHERE user_id = ?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, uId);
rs = pstmt.executeQuery();
if(rs.next()){
String dbId = rs.getString(1);
String dbPw = rs.getString(2);
String dbName = rs.getString(3);
String dbMail = rs.getString(4);
if(uPw.equals(dbPw)) {
session.setAttribute("s_id", uId); response.sendRedirect("http://localhost:8181/JSPbasic/user/loginWelcome.jsp");
} else {
response.sendRedirect("http://localhost:8181/JSPbasic/user/userPwFail.jsp");
}
} else {
response.sendRedirect("http://localhost:8181/JSPbasic/user/userIdFail.jsp");
}
} catch(Exception e){
e.printStackTrace();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
loginWelcome.jspの専門家.<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<%
request.setCharacterEncoding("UTF-8");
String userId = (String)session.getAttribute("s_id");
System.out.println(userId);
if (userId == null) {
response.sendRedirect("userLoginForm.jsp");
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p><strong><%= userId %>님 로그인을 환영합니다.</strong></p>
<p><strong><a href="http://localhost:8181/JSPbasic/user/userLogout.jsp">로그아웃하기</a></strong></p>
</body>
</html>
userPwFail.私はjspの専門家です.<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p><strong>비밀번호를 잘못 입력했습니다.</strong></p>
<p><strong><a href="http://localhost:8181/JSPbasic/user/userLoginForm.jsp">로그인 화면으로 돌아가기</a></strong></p>
</body>
</html>
userIdFail.jspの専門家.<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p><strong>ID를 잘못 입력했습니다.</strong></p>
<p><strong><a href="http://localhost:8181/JSPbasic/user/userLoginForm.jsp">로그인 화면으로 돌아가기</a></strong></p>
</body>
</html>
userLogout.jspの専門家.<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
session.invalidate();
response.sendRedirect("userLoginForm.jsp");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
最後にMySQLで作成したヒープ表.まずはここまで
Reference
この問題について(JSP_basic. MySQL DBに関連付けられたログインページの作成(PreparedStatement,session)), 我々は、より多くの情報をここで見つけました https://velog.io/@nugoory20/JSPbasic.-SQL-DB에-접속해-로그인-페이지를-만들어보자PreparedStatement-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol