배운 것 기록/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 실행 시 결과값을 저장할 수 있다.