‡๐Ÿ‘ฉ‍๐Ÿ’ป ‡/º Java

[Java] JSP, JDBC ์‹ค์Šต

Trudy | ์†ก์—ฐ 2023. 11. 30. 16:42

JDBC;

build.gradle, mtsql connecter ์ถ”๊ฐ€, ์ž๋ฐ” ์ฝ”๋“œ ์ž‘์„ฑ

 

๐Ÿพ  Vmware ๋ฆฌ๋ˆ…์Šค Mysql server 1๋Œ€ ์ค€๋น„

 

1.1. ๋ฆฌ๋ˆ…์Šค ์ปดํ“จํ„ฐ์— IP์„ค์ •  (์ธํ„ฐ๋„ท์ด ๋˜๋„๋ก)

 

vi /etc/sysconfig/network-scripts/ifcfg-ens160     ๋กœ ๋„คํŠธ์›Œํฌ ์„ค์ • ํŒŒ์ผ ์ ‘๊ทผ

ONBOOT=yes    : ๋ถ€ํŒ…ํ•  ๋•Œ ์ด ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•ด์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ์„ธํŒ…ํ•˜๊ฒ ๋‹ค

IPADDR=10.10.10.3      :์›ํ•˜๋Š” IP๋กœ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•ด์คŒ
NETMASK=255.255.255.0      :์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ์„ค์ •
GATEWAY=10.10.10.2
DNS1=8.8.8.8

 

init 6    :์žฌ๋ถ€ํŒ…ํ•ด์„œ ์ˆ˜์ •๋œ ๋‚ด์šฉ ์ ์šฉ์‹œํ‚ค๊ธฐ

ip addr    :IP๊ฐ€ ๋‹ฌ๋ผ์กŒ๋Š”์ง€ ํ™•์ธ! 

 

1.2. DB ์„œ๋ฒ„ ์„ค์น˜

yum install -y mysql-server

 

1.3. mysql ์ดˆ๊ธฐํ™”

mysql_secure_installation : yum์œผ๋กœ ๋‹ค์šด ๋ฐ›๊ณ , ์„ค์น˜ ๋งˆ๋ฒ•์‚ฌ ๊ฐ™์€ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ


1.4. ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์˜ mysql(ํด๋ผ์ด์–ธํŠธ)์— ๋จผ์ € ์ ‘์†ํ•ด์„œ ์œˆ๋„์šฐ์˜ workbench์—์„œ ์›๊ฒฉ์œผ๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •์„ ํ•ด์ค˜์•ผ ํ•จ

mysql -u root -p  : root user๋กœ ์ ‘์†ํ•˜๊ฒ ๋‹ค


    1.4.1. ์‚ฌ์šฉ์ž ์ƒ์„ฑ

    CREATE USER 'bsy'@'%' IDENTIFIED 'qwer1234;'  :์–ด๋–ค IP์ฃผ์†Œ์—ฌ๋„ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๊ณ , ๋น„๋ฒˆ ์„ค์ •


    1.4.2. DB ์ƒ์„ฑ

     CTREATE DATABASE web;  


    1.4.3. ๊ถŒํ•œ ๋ถ€์—ฌ

     GRANT ALL PRIVIEGES ON web.* TO 'bsy'@'%';  :bsy์—๊ฒŒ ๋ชจ๋“  ๊ถŒํ•œ์„ ์ฃผ๊ฒ ๋‹ค


    1.4.4. ์ข…๋ฃŒ

       EXIT



๐Ÿพ  Workbench ๋“ค์–ด๊ฐ€์„œ ๋งŒ๋“  db์™€ user๋กœ Connection ์ถ”๊ฐ€

 

๐Ÿพ  build.gradle์— dependencies ์ถ”๊ฐ€ 

 

๋ฐ‘์— mven ๋“ค์–ด๊ฐ€์„œ Mysql Connector J ๊ฒ€์ƒ‰ ํ›„ Gradle ๋ณต์‚ฌ

 

https://mvnrepository.com/artifact/com.mysql/mysql-connector-j/8.0.33

MVEN

 


JSP;

ํ†ฐ์บฃ ์„ค์น˜, ํ”„๋กœ์ ํŠธ+web, ์—ฐ๋™ ์„ค์ • 

 

๐Ÿพ  Tomcat9 zip ํŒŒ์ผ ๋‹ค์šด ํ›„ ์••์ถ• ํ’€๊ธฐ

 

https://tomcat.apache.org/download-90.cgi

 

Apache Tomcat® - Apache Tomcat 9 Software Downloads

Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version

tomcat.apache.org


๐Ÿพ  ์ธํ…”๋ฆฌ์ œ์ด ํ”„๋กœ์ ํŠธ์— Tomcat server ์ถ”๊ฐ€

 

File->Settings->Plugins(์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์„ค์น˜ํ•˜๋Š” MarketPlace) -> Smart Tomcat ๋‹ค์šด

Run->Edit Configurations -> + ์—์„œ Smart Tomcat ํด๋ฆญ

-> Tomcat server์— Tomcat9 ๋‹ค์šด๋ฐ›๊ณ  ์••์ถ• ํ‘ผ ํŒŒ์ผ ๊ฒฝ๋กœ ์ž…๋ ฅ

-> Deployment directory์— ํ˜„์žฌ ์ธํ…”๋ฆฌ์ œ์ด ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ ์ž…๋ ฅ

-> Context path์— / ์ž…๋ ฅ

 

๐Ÿพ  Tomcat์œผ๋กœ ์‹คํ–‰

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œจ๋ฉด ์„ฑ๊ณต! 

 

localhost์— 8080ํฌํŠธ๋กœ ์ ‘์†ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œจ๋ฉด ์„ธํŒ… ์™„๋ฃŒ

 

 


๐Ÿพ ํด๋ผ์ด์–ธํŠธ๊ฐ€ sname์„ ๋„ฃ์–ด์„œ http์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์›น ํŽ˜์ด์ง€์— ์ถœ๋ ฅํ•ด์ฃผ๋Š” ์‹ค์Šต

DB ๋ฐ์ดํ„ฐ ์ƒํƒœ

 

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ํ†ฐ์บฃ์ด ๊ทธ ์š”์ฒญ์„ ๋ฐ›์•„ HttpServletRequest๋ผ๋Š” ๊ฐ์ฒด๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„ฃ์–ด์ฃผ๊ณ  ํด๋ž˜์Šค๋ฅผ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

HttpServletRequest request

 

์›น ํŽ˜์ด์ง€ ์ถœ๋ ฅ์€ ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค. 

HttpServletResponse response

 

PrintWriter๋กœ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์—ด์–ด์ค€๋‹ค. 

์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฉ”์†Œ๋“œ println์„ ํ†ตํ•ด์„œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ด๋‘๋Š” ๊ฐ์ฒด์ธ ResultSet rs ์„ ์ด์šฉํ•ด์„œ sname๊ณผ sage๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

String sql = "SELECT * FROM member WHERE sname='"+sname+"'";
rs = stmt.executeQuery(sql);

PrintWriter out = response.getWriter();

while(rs.next())
{
    out.println(rs.getString("sname"));
    out.println(rs.getInt("sage"));
}

 

 


๐Ÿพ  HelloServlet.java

package com.example.web;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.sql.*;


@WebServlet("/webtoon/detail")
public class HelloServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        // request ๋ณ€์ˆ˜์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP ํ”„๋กœํ† ์ฝœ๋กœ ์š”์ฒญํ•œ ๋ชจ๋“ ๊ฒŒ ์ €์žฅ๋˜์–ด ์žˆ์Œ
        // request ๋ณ€์ˆ˜์— ์ €์žฅ๋œ HttpServletRequest ๊ฐ์ฒด์—
        // getParameter() ๋ฉ”์†Œ๋“œ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ด์ค€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.
        String sname = request.getParameter("sname");

        Connection conn = null; // DB ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ์ฒด
        Statement stmt = null; // SQL์„ ์‹คํ–‰ํ•˜๋Š” ๊ฐ์ฒด
        ResultSet rs = null; // ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๊ฐ์ฒด
        try {
            String url = "jdbc:mysql://10.10.10.3:3306/db";
            String id = "bsy";
            String pw = "qwer123";
            conn = DriverManager.getConnection(url, id, pw);
            stmt = conn.createStatement();
            String sql = "SELECT * FROM member WHERE sname='"+sname+"'";
            rs = stmt.executeQuery(sql);

            // response ๋ณ€์ˆ˜์— ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ HTTP ํ”„๋กœํ† ์ฝœ๋กœ ์‘๋‹ตํ•  ๋ชจ๋“ ๊ฒŒ ์ €์žฅ๋˜์–ด ์žˆ์Œ
            // response ๋ณ€์ˆ˜์— ์ €์žฅ๋œ HttpServletResponse ๊ฐ์ฒด์—
            // getWriter() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ outputstream์„ ๋ฐ›์•„์˜ค๊ณ 
            // ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด
            // ํด๋ผ์ด์–ธํŠธ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์šฉ์ด ์ถœ๋ ฅ๋œ๋‹ค.
            PrintWriter out = response.getWriter();

            while(rs.next())
            {
                out.println(rs.getString("sname"));
                out.println(rs.getInt("sage"));
            }

        } catch (SQLException ex) {
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        }


        System.out.println("ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ํด๋ž˜์Šค ํŒŒ์ผ์„ ์‹คํ–‰");
    }

}

์‹คํ–‰ ๊ฒฐ๊ณผ