gyeomii

AJAX(2) - JSP์™€ ์—ฐ๊ณ„ ๋ณธ๋ฌธ

๊ฐœ๋ฐœ

AJAX(2) - JSP์™€ ์—ฐ๊ณ„

gyeomii 2023. 7. 4. 14:36
๋ฐ˜์‘ํ˜•

๐Ÿ“ŒHTMLํŒŒ์ผ

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <link rel="stylesheet" href="../css/outStyle.css">
    <script src="../js/jquery-3.6.0.min.js"></script>
    <style>
        table {
            text-align: center;
        }
    </style>
</head>
<body>
    <input type="button" id="type_json" value="ํƒ€์ž…json">
    <input type="button" id="type_html" value="ํƒ€์ž…html">
    <div></div>
    <script>
        $('#type_json').on('click', function () {
            $.ajax({
                url: 'lprod.jsp',    //jsp - mvc1ํŒจํ„ด
                //         type : 'get',
                success: function (data) {
                    let result = "<table border='1'>";
                    result += "<tr>";
                    result += "<th>lprod_id</th>";
                    result += "<th>lprod_gu</th>";
                    result += "<th>lprod_nm</th>";
                    result += "</tr>";

               $.each(data, function(){
                    result += "<tr>";
                        result += "<td>" + this.lprod_id + "</td>";
                        result += "<td>" + this.lprod_gu + "</td>";
                        result += "<td>" + this.lprod_nm + "</td>";
                        result += "</tr>";
                    }); 

                    result += "</table>";
                    $('div').html(result);
                },
                error: function (xhr) {
                    alert("์ƒํƒœ : " + xhr.status);
                },
                //         complete
                dataType: 'json'
            });
        });
    </script>
</body>
</html>

$.ajax()๋ฉ”์†Œ๋“œ

$.ajax({
        url: 'lprod.jsp',
//    type : 'get',
        success: function (data) {
                let result = "<table border='1'>";
                $.each(data, function(){
                         result += "<tr>";
                        result += "<td>" + this.lprod_id + "</td>";
                        result += "<td>" + this.lprod_gu + "</td>";
                        result += "<td>" + this.lprod_nm + "</td>";
                        result += "</tr>";
                }); 
                result += "</table>";
                $('div').html(result);
        },
        error: function (xhr) {
                alert("์ƒํƒœ : " + xhr.status);
        },
//     complete: function(){},
        dataType: 'json'
});

$.ajax()๋ฉ”์†Œ๋“œ ์ •๋ฆฌ

๋ฉ”์†Œ๋“œ ์„ค๋ช…
url ์š”์ฒญ์„ ๋ณด๋‚ผ URL์„ ๋‚˜ํƒ€๋ƒ„. default๋Š” ํ˜„์žฌ ํŽ˜์ด์ง€
type ์š”์ฒญ type. default๋Š” get (์ƒ๋žต๊ฐ€๋Šฅ)
sucess( result, status, xhr ) ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ์„ ๋–„ ์ˆ˜ํ–‰๋˜๋Š” ํ•จ์ˆ˜
error( xhr, status, error ) ์š”์ฒญ์ด ์‹คํŒจํ–ˆ์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜
complete( xhr, status ) ์š”์ฒญ์ด ์™„๋ฃŒ๋์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜
dataType ์„œ๋ฒ„์‘๋‹ต์œผ๋กœ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…( json, html ๋“ฑ)
- success : function(data){data๋ฅผ ๊บผ๋‚ด์˜ค๋Š” ๊ณผ์ •}
- $.each() ์„ค๋ช… ๋งํฌ : JSON๋ฐ์ดํ„ฐ ํŒŒ์‹ฑํ•˜๊ธฐ
- error : function(xhr){xhr.status}
- xhr : XMLHttpRequest์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ด (๊ด€๋ จ๋งํฌ : readyState ํ”„๋กœํผํ‹ฐ)

๐Ÿ“ŒJSPํŒŒ์ผ

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
//์ปค๋„ฅ์…˜ ๊ฐ์ฒด ๋งŒ๋“ค๊ณ  
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "userId";
String password = "password";
Connection conn = DriverManager.getConnection(url, user, password);

//db์— ์ ‘๊ทผํ•ด์„œ sql์‹คํ–‰ํ•˜๊ณ  
Statement stmt = conn.createStatement();
String sql = "select * from lprod";
// stmt.executeQuery(sql);
ResultSet rs = stmt.executeQuery(sql);

//๊ฒฐ๊ณผ๊ฐ’ ์„ ๋ฐ›์•„์„œ json object array๋กœ ๋งŒ๋“ค์–ด์„œ
%>
[
<%
int i = 0;
while (rs.next()) {
    int id = rs.getInt("lprod_id");
    String gu = rs.getString("lprod_gu");
    String nm = rs.getString("lprod_nm");
    //json object ์ƒ์„ฑ
    if (i > 0){
        out.print(",");
    }
%>
{ "lprod_id" : "<%=id%>", "lprod_gu" : "<%=gu%>", "lprod_nm" : "<%=nm%>" }
<%
i++;
} //while end
%>
]
  • JSPํŒŒ์ผ์—์„œ DB์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ

    • Connection ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ ‘๊ทผํ•œ๋‹ค.

      Connection conn = DriverManager.getConnection(url, user, password);
    • Connection๊ฐ์ฒด๋กœ ์—ฐ๊ฒฐ๋˜๋ฉด Statement๊ฐ์ฒด๋กœ SQL์„ ์‹คํ–‰ํ•œ๋‹ค.

      Statement stmt = conn.createStatement();
      String sql = "select * from lprod";
    • SQL๋กœ ๊ฒ€์ƒ‰๋œ ๋ฐ์ดํ„ฐ๋ฅผ ResultSet์— ๋‹ด์•„์„œ JSPํŒŒ์ผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

      ResultSet rs = stmt.executeQuery(sql);
  • ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜•ํƒœ์— ๋งž๊ฒŒ ๊บผ๋‚ด๊ธฐ

    • ResultSet์— next()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ธ๋‹ค.

    • ๋ฐ์ดํ„ฐ์— ๋งž๋Š” ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  get(โ€์ปฌ๋Ÿผ๋ช…โ€)๋ฉ”์†Œ๋“œ๋กœ ์ปฌ๋Ÿผ ๋ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ๋‹ค.

      while (rs.next()) {
        int id = rs.getInt("lprod_id");
        String gu = rs.getString("lprod_gu");
        String nm = rs.getString("lprod_nm");
      }
    • ๊บผ๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ JSON Object ํ˜•ํƒœ๋กœ ๋‹ด๋Š”๋‹ค.

      { "lprod_id" : "<%=id%>", "lprod_gu" : "<%=gu%>", "lprod_nm" : "<%=nm%>" }

์ฃผ์˜์‚ฌํ•ญ

  • JSPํŒŒ์ผ์—์„œ ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” <% %> (scriptlet, ์Šคํฌ๋ฆฝํŠธ๋ฆฟ) ์•ˆ์—์„œ ํ•ด์•ผํ•œ๋‹ค.
  • ์Šคํฌ๋ฆฝํŠธ๋ฆฟ์•ˆ์—๋Š” ์ž๋ฐ”์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋‹ค.
  • JSON Object์˜ ํ˜•ํƒœ๋ฅผ ์žก๊ธฐ์œ„ํ•ด ๋ฌธ์ž์—ด์„ ์ ์„ ๋•Œ๋Š” ์ „ ํ›„๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฆฟ์„ ๋Š์–ด์ค˜์•ผํ•œ๋‹ค.
<%
  :
์ž๋ฐ”์ฝ”๋“œ
  :
%>

[  //JSON Objet Array ํ˜•ํƒœ

<%
  :
์ž๋ฐ”์ฝ”๋“œ
  :
%>

{ "lprod_id" : "<%=id%>", "lprod_gu" : "<%=gu%>", "lprod_nm" : "<%=nm%>" }

<%
  :
์ž๋ฐ”์ฝ”๋“œ
  :
%>

]  //JSON Objet Array ํ˜•ํƒœ
๋ฐ˜์‘ํ˜•

'๊ฐœ๋ฐœ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

HTML์„ ๋™์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ  (0) 2023.07.14
JavaScript ์˜ˆ์ œ  (0) 2023.07.04
AJAX(1)  (0) 2023.06.30
MVC ํŒจํ„ด  (0) 2023.06.26
[Python] JSON, CSV ์ฝ๊ณ  ์“ฐ๊ธฐ  (0) 2023.06.16