자바/자바기초

JSP Mysql 시작부터 끝까지

khao 2018. 9. 30. 15:31

JSP와 MySQL을 연동하여 질의해보고 그 결과를 받아 사용하는 단계별 과정입니다.


MySQL의 버전이 5를 넘은 지금, 이 글에서는 MySQL 5.7을 사용하고 있음을 알리며 MySQL이 돌아가는 환경은 Ubuntu 18.04입니다.


이 글의 구성은 다음과 같습니다.


0. MySQL 구축하기


1. 내 JSP에 MySQL 라이브러리를 추가하기 (Connector4J)


2. MySQLWorkbench에서 데이터베이스 생성하기


3. Create & Read 종류별 질의해보기





0. MySQL 구축하기


이 부분은 윈도우 사용자라면 exe 설치를 통해 했을 것이고, 리눅스 사용자라면 apt나 yum을 사용하면 쉽게 할 수 있습니다.


윈도우에서 MySQL을 사용한 적은 없으므로 리눅스, 그 중에서도 우분투 사용자 위주로 설명합니다.


ctrl + alt + t를 누르셔서 나오는 터미널에 아래 줄을 쓰시면 빠르게 설치가 됩니다.


sudo apt install mysql-server-5.7


MySQL 서버와 JSP 서버의 개발 환경이 같은 컴퓨터이고 실제 배포도 같은 컴퓨터에서 돌아가는 환경이라면 별다른 설정을 추가할 것이 없습니다.


다만, DB서버와 JSP서버가 각각 따로 있다면 외부에서 MySQL 사용하는 방법을 참고하시고 설정해주셔야 합니다.




1. 내 JSP에 MySQL 라이브러리를 추가하기


JSP에서 MySQL과 연동하기 위해서는 Connector4J라고 하는 MySQL 연결을 위한 라이브러리가 필요합니다.


https://dev.mysql.com/downloads/connector/j/5.1.html


라이브러리는 위의 주소에서 받으실 수 있습니다.


다운 받은 라이브러리를 프로젝트 내에 있는 WebContent/WEB-INF/lib에 위치하게 합니다.



아래의 코드를 작성합니다.


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;


public class MySQLDatabase {

public static Connection getMySQLConnection() {

Connection conn = null;

try {

Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql://192.168.0.x:3306/MyProject";

String user = "user";

String password = "password";

conn = DriverManager.getConnection(url, user, password);

} catch(ClassNotFoundException | SQLException e) {

e.printStackTrace();

}

return conn;

}

}



코드의 위치까지 제가 강제할 수는 없지만 저는 이렇게 구성했습니다.





2. MySQLWorkbench에서 데이터베이스 생성하기


JSP에서 사용할 데이터베이스와 테이블을 만들어야 합니다. 내부에 .sql을 넣어도 되지만 권장하지 않습니다.



상단에 있는 Database - Connect to Database ... 를 누르면 이런 화면이 나옵니다.


자신의 서버에 맞는 Hostname과 Username을 입력하시면 됩니다. (같은 컴퓨터에서 개발한다면 Hostname=127.0.0.1입니다)



정상적으로 접속했다면 이런 화면을 볼 수 있습니다.


좌측에 sys라고 써져있는 것이 있는데 이것이 (스키마라 부르는) 데이터베이스입니다.


지금 생각해보면 스키마가 맞는 말인 것 같네요. 데이터베이스는 스키마들의 집합을 부르는 것 같기도 합니다.


저는 만들어놓은 것들이 있어서 sys 외에도 여러 개 있지만 여러분들은 sys 하나만 있는 것이 일반적입니다.


sys 아래를 우클릭으로 눌러서 Create Schema...를 누르면 자신의 스키마를 하나 만들 수 있습니다.



이런 식으로 구성하고 Apply를 눌러서 생성을 완료시킵니다.



생성한 스키마를 누르면 아래로 Tables, Views, Stored Procedures, Functions 가 나옵니다. 우리의 관심사는 Tables입니다.


Tables를 우클릭하면 Create Table... 이 나옵니다. 이걸 눌러줍니다.


테이블의 이름을 정하고 어트리뷰트들의 이름과 데이터 타입을 정의합니다.


위처럼 정의해주고 아래의 Apply를 누릅니다.


끝에 있는 PK, NN, UQ, BIN, UN, ZF, AI, G, Default / Expression이 있는데 이것들은 각각 다음과 같습니다.


PK = Primary Key(기본 키로 설정합니다)


NN = Not Null(이 속성이 Null이 될 수 없도록 합니다)


BIN = Binary(말 그대로 바이너리값인데 바이너리면서 작은 것들이 별로 없는 관계로 권장은 아닙니다)


UN = Unsigned(해당 속성의 값이 0 이상입니다)


UQ = Unique Key (이 테이블에서 유일한 값이 되게 합니다. 예를 들면 이메일 인증은 같은 이메일을 두 번 쓸 수 없습니다)


ZF = Zero-Filled (입력하지 않았다면 0으로 채워줍니다)


AI = Auto Increment (자동으로 숫자를 증가시킵니다. 즉, 저 필드에 값을 입력하지 않아도 고유한 값을 만들어줍니다)


Default = 생성할 때 해당 속성에 대한 값이 없다면 Default에 입력한 값이 들어가도록 합니다.





3. Create & Read 질의해보기


테이블이 만들어졌으므로 이것저것 필요한 것들을 만들어야 합니다.


먼저 Account 테이블에서 정의했던 내용을 가질 Account 클래스를 만들어야 합니다.


myproject.data 패키지에 Account 클래스를 만들어줍니다.


public class Account {

public String email;

public String password;

public String name;

public Account(String email, String password, String name) {

this.email = email;

this.password = password;

this.name = name;

}

}


Account를 이용하여 정보를 받거나 데이터베이스에서 검색한 결과를 넣어줄 AccountDao 클래스를 myproject.dao에 만들어줍니다.




회원가입을 위한 컨트롤러 클래스를 만들어야 합니다. AccountRegistration으로 이름지었습니다.

(확인의 용이함을 위해 doPost가 아닌 doGet을 사용했습니다)



로그인을 위한 컨트롤러를 만들어야 합니다. AccountAuthentication으로 이름지었습니다.

(확인의 용이함을 위해 doPost가 아닌 doGet을 사용했습니다)



위의 내용들을 모두 옮겨 넣으셨다면 이런 구조가 나옵니다.




여기까지 하시면 로그인과 회원가입 기능을 구현하신 것입니다.


아래 부분은 실행 결과 화면이므로 예상 결과를 궁금해하시는 분들은 보시면 됩니다.