1편 바로가기
[JSP] 게시판 만들기 | 1편. 환경 설정 및 JSP 개념 이해
1. 목표 로그인, 회원가입, 게시판 기능 구현하기 2. 환경설정 JDK - 17버전 --> 환경변수 설정 다시 해줌 톰캣 - 9.0버전 이클립스 - Java EE Developers 이클립스 실행 후, Dynamic Web Project로 프로젝트를 생
ururuwave.tistory.com
1. 데이터베이스 설치
Download MariaDB Server - MariaDB.org
REST API Release Schedule Reporting Bugs … Continue reading "Download MariaDB Server"
mariadb.org
MariaDB Server 10.5.23 버전을 다운 받았다.
mariadb driver를 다운받는다.
root 계정 비밀번호를 잘 기억해둔다.
MariaDB를 설치하면 자동으로 설치되는 HeidiSQL로 들어가거나
MariaDB의 cmd창을 켜서 root 계정으로 로그인하고 명령어를 입력한다.
CREATE DATABASE bbs;
USE bbs;
CREATE TABLE bbs(
bbsID INT,
bbsTitle VARCHAR(50),
userID VARCHAR(20),
bbsDate DATETIME,
bbsContent VARCHAR(2048),
bbsAvailable INT,
PRIMARY KEY (bbsID)
);
CREATE TABLE user (
userID VARCHAR(20),
userPassword VARCHAR(20),
userName VARCHAR(20),
userGender VARCHAR(20),
userEmail VARCHAR(50),
PRIMARY KEY (userID)
);
INSERT INTO user VALUES('URURU','1234','우루루파도','female','ururuwave@tistory.com');
--insert 됐는지 확인한다.
SELECT * FROM user;
게시판과 사용자 테이블을 만들고 select 명령어로 테이블 내용을 확인한다.
2. 데이터베이스 연동
src > main > java 하위에 user 패키지를 생성하고 그 하위에 UserDAO.java 파일을 만들어줬다.
package user;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDAO {
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
public UserDAO() {
try {
String dbURL = "jdbc:mariadb://localhost:3306/BBS";
String dbID = "root";
String dbPassword = "root";
//driver는 mariaDB에 접속할 수 있도록 매개체 역할을 함.
Class.forName("org.mariadb.jdbc.Driver");
//접속이 완료되면 conn객체안에 접속정보가 담기게 된다.
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
✔️Connection
데이터베이스와의 연결을 나타내는 객체다.
이 객체를 통해 SQL명령을 실행한다.
DriverManager.getConnection 메서드를 호출하여 연결을 시도하고, 연결 성공하면 Connection 객체를 반환한다.
✔️PreparedStatement
public int login(String userID, String userPassword) {
String SQL = "SELECT userPassword FROM USER WHERE userID = ?";
try {
//1.PreparedStatement에 정해진 SQL문장을 DB에 삽입해준다.
//2.SQLinjection을 방어한다. userID가 존재하면 (1) userID를 ?자리에 넣어준다.
//3.실행한 결과를 rs에 담아준다.
//4.결과가 존재한다면 if문 안에 구문이 실행됨.
//5.결과로 나온 userPassword를 받아서 접속을 시도한 userPassword와 동일한지 확인
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
if(rs.next()) {
if(rs.getString(1).equals(userPassword)) {
return 1; //로그인 성공을 반환.
}
else
return 0; //비밀번호 불일치.
}
return -1; //id가 없음을 반환함.
}catch(Exception e){
e.printStackTrace();
}
return -2; //데이터베이스 오류
}
SQL문에 동적으로 파라미터를 설정한다.
SQL 문을 보면 '?'물음표로 userID를 동적으로 받는 부분이 있다.
PreparedStatement를 객체를 사용하기 때문에 가능한 문법이다.
pstmt.setString(1, userID);
setString메서드로 첫번째 물음표에 userID를 넣는다는 의미다.
'executeQuery()' 또는 'executeUpdate()' 메서드를 호출하여 SQL을 실행하는데
executeQuery()는 'SELECT'문과 같이 데이터를 조회하여 결과를 반환할 때 사용된다.
executeUpdate()는 'INSERT', 'UPDATE','DELETE','CREATE TABLE'과 같이 데이터베이스 상태를 변경하는 쿼리를 실행할 때 사용된다.
✔️ResultSet
데이터베이스로부터 읽어온 결과 집합을 탐색할 수 있는 객체다.
PreparedStatement 의 executeQuery()메서드를 호출하여 'SELECT'문을 실행하면 ResultSet 객체가 반환된다.
이제 DAO 클래스에 데이터베이스의 CRUD 연산을 수행하는 메서드를 만들어주면 된다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
[JSP] 게시판 만들기 | 4편.회원가입 기능 구현하기 / 로그아웃 (1) | 2024.02.07 |
---|---|
[JSP] 게시판 만들기 | 3편.로그인 기능 구현하기 (0) | 2024.02.07 |
[JSP] 게시판 만들기 | 1편. 환경 설정 및 JSP 개념 이해 (0) | 2024.02.07 |
[Java]Socket을 활용한 간단한 클라이언트-서버 통신 (1) | 2023.12.28 |
[과제] 경마게임 만들기 | Thread 활용 (1) | 2023.12.20 |