Thief of Wealth
article thumbnail

https://zereight.tistory.com/191 

이전 포스트에서 Mac 에 이클립스 및 mysql을 설치하는 법을 배웠고,


이번에는 실제로  eclipse와 mysql을 연동해보겠습니다.


간단한 회원가입 페이지를 만들고,

 

DB에 그 회원정보를 저장하는 프로그램을 작성해보도록 하겠습니다.


먼저, jdbc를 설치해야합니다.


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


위 mysql 사이트에서 connector j를 다운받아주세요. (mac은 independent platform 으로 해서 다운받으면 됩니다.)


아래 동영상 처럼 진행하면 되겠습니다. (이클립스랑 mysql이 설치되어 있어야합니다.)


1. JSP 셋팅


2. mysql 셋팅 및 연동





사용되는 코드들


/*index.jsp*/

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<!-- Required meta tags -->

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">


    <!-- Bootstrap CSS -->

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">


<title>JSP Web page</title>

</head>

<body>

<form action="./userJoinAction.jsp" method="post">

<input type="text" name="userID" placeholder="id" >

<input type="text" name="userPassword" placeholder="pw" >

<input type="submit" value="회원가입" >

</form>

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>

    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

 

</body>

</html>



/*userJoinAction,jsp*/


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>


<%@ page import="user.UserDTO" %> <!-- 라이브러리호출 방식 -->

<%@ page import="user.UserDAO" %>

<%@ page import="java.io.PrintWriter" %> <!-- js 입출력시 사용 -->


<% 

request.setCharacterEncoding("UTF-8");

String userID = null;

String userPassword = null;

if(request.getParameter("userID") != null ){

userID = (String) request.getParameter("userID");

}

if(request.getParameter("userPassword") != null ){

userPassword = (String) request.getParameter("userPassword");

}

if( userID ==null || userPassword ==null ){

PrintWriter script = response.getWriter();

script.println("<script>");

script.println("alert('입력이 안된 사항이 있습니다.');");

script.println("history.back();");

script.println("</script>");

script.close();

return;

} 

UserDAO userDAO = new UserDAO();

int result = userDAO.join( userID, userPassword );

if(result == 1){

PrintWriter script = response.getWriter();

script.println("<script>");

script.println("alert('회원가입에 성공했습니다.');");

System.out.println(userID);

System.out.println(userPassword);

script.println("location.href = 'index.jsp';");

script.println("</script>");

script.close();

}else{

PrintWriter script = response.getWriter();

script.println("<script>");

script.println("alert('DB에 연결되지 않았습니다.');");

System.out.println(userID);

System.out.println(userPassword);

script.println("location.href = 'index.jsp';");

script.println("</script>");

script.close();

}

return;

%>



/*UserDAO*/

package user;


import java.sql.Connection;

import java.sql.PreparedStatement;


import util.DatabaseUtil;



public class UserDAO {

//DAO 는 database access object로서 실제로 DB에 접근할때 사용되는 객체이다.

public int join(String userID, String userPassword) {

String SQL = "INSERT INTO USER VALUES (?,?)";

try {

System.out.println("getConnection호출.");

Connection conn = DatabaseUtil.getConnection();

System.out.println("getConnection끝.");

PreparedStatement pstmt = conn.prepareStatement(SQL);

pstmt.setString(1, userID);

pstmt.setString(2, userPassword);

return pstmt.executeUpdate();

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

return -1;

}

}



/*UserDTO*/

package user; //user는 tutorial이라는 db에 user라는 table을 만들어주었기 때문이다.


public class UserDTO {

//DTO 는 database transfer object의 약자로 db와 정보를 교환하기 위한 객체형식이다.


String userID;

String userPassword;

//우클릭 > Source > generate getter & setter

public String getUserID() {

return userID;

}

public void setUserID(String userID) {

this.userID = userID;

}

public String getUserPassword() {

return userPassword;

}

public void setUserPassword(String userPassword) {

this.userPassword = userPassword;

}

}



/*DatabaseUtil*/

package util;


import java.sql.Connection;

import java.sql.DriverManager;


public class DatabaseUtil {

//db와의 연결에 사용할 함수들 정의

public static Connection getConnection() {

try {

String dbURL = "jdbc:mysql://localhost:3306/mysql_tutorial?characterEncoding=UTF-8&serverTimezone=UTC";

String dbID = "root";

String dbPassword ="asd123!@#";

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

return DriverManager.getConnection(dbURL, dbID, dbPassword);

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

return null;

}

}




Tip-1)
mysql root 비밀번호 변경
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '바꾸고 싶은 비밀번호';

Tip-2)
mysql password policy 때문에 간단한 비밀번호를 못치고 있는 상황이라면
SHOW VARIABLES LIKE 'validate_password%';

SET GLOBAL validate_password_policy=LOW;


으로 설정초기화 후 root 비밀번호 바꾸면됨.

profile on loading

Loading...