배운 것 기록/jsp
[jsp] login 구현
키죽
2022. 6. 12. 21:16
loginForm
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/loginForm.jsp</title>
</head>
<body>
<br>
<h1>로그인</h1>
<form action="LoginPro.jsp" method="post">
ID : <input type="text" name="id"> <br>
PW : <input type="password" name="pw"> <br><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
loginPro
<%@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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/loginPro.jsp</title>
</head>
<body>
<%
String id=request.getParameter("id");
String pw=request.getParameter("pw");
// 1. JDBC 프로그램 불러오기
Class.forName("com.mysql.cj.jdbc.Driver");
// JDBC 프로그램 이용해서 디비서버에 접속 => 연결정보 저장
// 2. DB 서버에 접근할 DB 주소
String dbUrl="jdbc:mysql://localhost:3306/jspdb1?serverTimezone=UTC";
String dbId="root";
String dbPass="1234";
Connection con=DriverManager.getConnection(dbUrl, dbId, dbPass);
// 3. 연결정보를 이용해서 sql구문 만들기 => PreparedStatement 내장객체 준비
// String sql="select * from 테이블이름 where 조건열=값 and 조건열=값";
String sql="select * from members where id=? and pass=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pw);
// 4. sql구문 실행 => 실행결과저장(select)
// => sql구문 실행한 결과 저장하는 내장객체 ResultSet
ResultSet rs=pstmt.executeQuery();
// 5. 결과 출력 또는 배열변수 저장(select)
// if rs.next() 결과에서 다음행 이동, 데이터 있으면 true => 아이디비밀번호일치
// else 데이터 없으면 false => 아이디비밀번호불일치
if(rs.next()){
//if rs.next() 결과에서 다음 행 이동, 데이터 있으면 true => 아이디비밀번호일치
out.println("ID/PW 일치");
//페이지 상관없이 id값을 유지 => 세션값 저장 "id",id
session.setAttribute("id", id);
//메인페이지 이동
response.sendRedirect("main.jsp");
}else{
//else 데이터 없으면 false => 아이디비밀번호불일치
out.println("ID/PW 불일치");
//아이디 비밀번호 틀림메시지 출력, 뒤로 이동
%>
<script type="text/javascript">
alert("다시 입력하세요");
history.back();
</script>
<%
}
%>
</body>
</html>
request.getParameter("변수값")
form으로 입력한 데이터를 읽어오는 메서드. int 타입일 경우, 형변환 필수!
int num=Integer.parseInt(request.getParameter("num"));
Connection, DriverManager
Connection : DB 연결하는 객체
DriverManager.getConnection(연결주소, DB id, DB pw) : JDBC 드라이버로 Connection 생성
PreparedStatement
Statement의 향상된 기능, execute를 사용한다.
SQL 구문을 실행시키는 객체. 변수 자리에는 ? 입력(값을 바꿔주는 역할)
ResultSet
executeQuery 실행 시 결과값을 저장할 수 있다.