Post

[JSP] ์„ธ์…˜ DB์—ฐ๋™

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์„ธ์…˜(session)์œผ๋กœ ๋กœ๊ทธ์ธ ํผ์„ ๋งŒ๋“ค๊ณ , JSP๋ฅผ MariaDB์™€ ์—ฐ๋™ํ•œ๋‹ค.


1. ์„ธ์…˜ ๋กœ๊ทธ์ธ ํ๋ฆ„

์„ธ ๊ฐœ์˜ JSP๋กœ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

1
2
3
4
loginForm.jsp โ”€โ”€POSTโ”€โ”€โ–บ loginCheck.jsp (๊ฒ€์ฆ โ†’ session์— ์ €์žฅ)
     โ–ฒ                          โ”‚
     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
logout.jsp (session.invalidate)

loginForm.jsp โ€” ์ƒํƒœ์— ๋”ฐ๋ผ ๋ฒ„ํŠผ ํ† ๊ธ€

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
    String cust_id = (String) session.getAttribute("cust_id");
    String cust_name = (String) session.getAttribute("cust_name");
    Boolean login = (cust_id != null && cust_name != null);   // ๋กœ๊ทธ์ธ ์—ฌ๋ถ€ ํŒ๋‹จ
%>
<%
    if (login) {   // ๋กœ๊ทธ์ธ ์ƒํƒœ โ†’ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ๋น„ํ™œ์„ฑ, ๋กœ๊ทธ์•„์›ƒ ํ™œ์„ฑ
        out.print("<input type='submit' value='๋กœ๊ทธ์ธ' disabled>"
            + "<input type='button' value='(" + cust_name + ")๋‹˜ ๋กœ๊ทธ์•„์›ƒ' "
            + "onClick=location.href='./logout.jsp'>");
    } else {       // ๋ฏธ๋กœ๊ทธ์ธ โ†’ ๋ฐ˜๋Œ€
        out.print("<input type='submit' value='๋กœ๊ทธ์ธ'>"
            + "<input type='button' value='๋กœ๊ทธ์•„์›ƒ' disabled>");
    }
%>

loginCheck.jsp โ€” ์„ธ์…˜์— ์ €์žฅ

1
2
3
4
5
6
7
8
9
10
11
12
<%
    String cust_id = request.getParameter("cust_id");
    String cust_pw = request.getParameter("cust_pw");

    if (cust_id.equals("root") && cust_pw.equals("admin")) {
        session.setAttribute("cust_id", cust_id);       // โ˜… ์„ธ์…˜์— ์ €์žฅ
        session.setAttribute("cust_name", "๊ด€๋ฆฌ์ž");
        out.print(cust_id + "๋‹˜ ๋ฐฉ๋ฌธ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.");
    } else {
        out.print("ํšŒ์› ๊ฐ€์ž… ํ›„ ๋ฐฉ๋ฌธํ•˜์‹ญ์‹œ์˜ค");
    }
%>

logout.jsp โ€” ์„ธ์…˜ ์‚ญ์ œ

1
<% session.invalidate(); %>   <!-- ๋ชจ๋“  ์„ธ์…˜ ์ •๋ณด ์‚ญ์ œ -->
๋ฉ”์†Œ๋“œ์—ญํ• 
session.getAttribute์„ธ์…˜ ๊ฐ’ ์กฐํšŒ
session.setAttribute์„ธ์…˜ ๊ฐ’ ์ €์žฅ
session.invalidate์„ธ์…˜ ์ „์ฒด ์‚ญ์ œ

Desktop View


2. DB ์—ฐ๋™ (MariaDB + JDBC)

DB ๋“œ๋ผ์ด๋ฒ„ ์ปค๋„ฅํ„ฐ(jar)๋ฅผ lib ํด๋”์— ๋„ฃ๊ณ , JDBC๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page import="java.sql.*" %>
<%
    // โ‘  ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋“œ
    Class.forName("org.mariadb.jdbc.Driver");
    out.print("JDBC Driver loading ์„ฑ๊ณต!");

    // โ‘ก ์ ‘์†
    Connection conn = null;
    try {
        conn = DriverManager.getConnection("jdbc:mariadb://localhost:3307", "root", "1234");
        out.print("MariaDB ์„œ๋ฒ„ ์—ฐ๊ฒฐ ์„ฑ๊ณต");
    } catch (SQLException e) {
        out.print("MariaDB ์„œ๋ฒ„ ์—ฐ๊ฒฐ ์‹คํŒจ: " + e.getMessage());
    } finally {
        if (conn != null) conn.close();   // โ‘ข ํ•ด์ œ
    }
%>

Desktop View

๐Ÿ’ก ํ๋ฆ„์€ ์ž๋ฐ” JDBC์™€ ๋™์ผํ•˜๋‹ค: โ‘  ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋“œ(Class.forName) โ†’ โ‘ก ์ ‘์†(getConnection) โ†’ โ‘ข ํ•ด์ œ(close). ๊ฐ ๋‹จ๊ณ„๋ฅผ try~catch๋กœ ๊ฐ์‹ธ ์„ฑ๊ณต/์‹คํŒจ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


๐Ÿ“ ์ •๋ฆฌ

1
2
3
4
JSP ์„ธ์…˜ & DB
โ”œโ”€ ์„ธ์…˜    getAttribute/setAttribute/invalidate
โ”œโ”€ ๋กœ๊ทธ์ธ  ์ƒํƒœ์— ๋”ฐ๋ผ ๋ฒ„ํŠผ ํ† ๊ธ€
โ””โ”€ DB      Class.forName โ†’ getConnection โ†’ close
๊ฐœ๋…ํ•œ ์ค„ ์ •์˜
session์‚ฌ์šฉ์ž๋ณ„ ์ƒํƒœ ์œ ์ง€
invalidate์„ธ์…˜ ์‚ญ์ œ(๋กœ๊ทธ์•„์›ƒ)
JDBC ์—ฐ๊ฒฐ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋“œ โ†’ ์ ‘์† โ†’ ํ•ด์ œ

์„ธ์…˜์€ โ€œ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์„œ๋ฒ„๊ฐ€ ๊ธฐ์–ตโ€ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. setAttribute๋กœ ์ €์žฅํ•˜๊ณ  invalidate๋กœ ์ง€์šฐ๋Š” ํ๋ฆ„, ๊ทธ๋ฆฌ๊ณ  JDBC 3๋‹จ๊ณ„ ์—ฐ๊ฒฐ๋งŒ ์žก์œผ๋ฉด ๋™์ ์ธ ๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.