[Day 20 | JSP]JSP 파일 배포와 데이터베이스 연결

y♡ding·2024년 11월 8일
0

데브코스 TIL

목록 보기
134/163

배포(Deployment)

배포는 개발 환경에서 작성된 애플리케이션을 서비스 환경으로 올리는 작업입니다.
일반적으로 CI/CD 도구Git Action이나 Jenkins를 사용해 자동화된 배포 과정을 구성합니다.


Tomcat에서 경로 변경

  • URL 경로 수정:
    Tomcat → Edit Configuration → Deployment → Application Context에서 경로를 수정하여 사용자 정의 URL을 지정할 수 있습니다.
    (예: /app/short)

JSP 파일 배포 과정

  1. JSP 파일을 작성.
  2. 컴파일: JSP 파일은 내부적으로 .java로 변환된 뒤 .class(서블릿)로 컴파일됩니다.
  3. 서블릿이 실행: 최종적으로 서블릿이 사용자의 요청을 처리하여 결과를 반환합니다.

즉, JSP 파일은 직접적으로 서비스되는 것이 아니라 서블릿 형태로 실행됩니다.
서블릿을 배우면 클래스 파일로 바로 서비스를 설정할 수도 있습니다.

JSP 파일 위치:
/apache-tomcat-11.0.0/work/Catalina/localhost/ROOT/org/apache/jsp


데이터베이스 연결

드라이버 설정

  • Maven Repository에서 MariaDB Client를 검색.
  • Gradle에서 의존성을 추가:
    build.gradledependencies로 MariaDB 드라이버를 포함.

JDBC 활용 코드

1. 기본 JDBC 연결 예제
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.SQLException" %>

<html>
<head>
    <title>Title</title>
</head>
<body>
Hello JDBC<br/>

<%
    String url = "jdbc:mariadb://localhost:3306/sample";
    String user = "root";
    String password = "123456";

    Connection conn = null;
    try {
        // 1. MariaDB 드라이버 로딩
        Class.forName("org.mariadb.jdbc.Driver");
        System.out.println("드라이버 로딩 성공");

        // 2. 데이터베이스 연결
        conn = DriverManager.getConnection(url, user, password);
        System.out.println("데이터베이스 연결 성공");
    } catch (ClassNotFoundException e) {
        // 드라이버 로딩 실패
        System.out.println("[에러] " + e.getMessage());
    } catch (SQLException e) {
        // 데이터베이스 연결 실패
        System.out.println("[에러] " + e.getMessage());
    } finally {
        // 3. 연결 해제
        if (conn != null) conn.close();
    }
%>
</body>
</html>

2. 데이터 조회 및 HTML 출력 예제
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>

<%
    String url = "jdbc:mariadb://localhost:3306/sample";
    String user = "root";
    String password = "exxyeon";

    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;

    StringBuilder sb = new StringBuilder();
    try {
        // 1. MariaDB 드라이버 로딩
        Class.forName("org.mariadb.jdbc.Driver");

        // 2. 데이터베이스 연결
        conn = DriverManager.getConnection(url, user, password);

        // 3. SQL 작성 및 실행
        String sql = "select deptno, dname, loc from dept";
        pstmt = conn.prepareStatement(sql);

        rs = pstmt.executeQuery();

        // 4. 출력 결과를 HTML로 변환
        sb.append("<table border='1' cellspacing='0'>");
        while (rs.next()) {
            sb.append(("<tr>"));
            sb.append(("<td>" + rs.getString("deptno") + "</td>"));
            sb.append(("<td>" + rs.getString("dname") + "</td>"));
            sb.append(("<td>" + rs.getString("loc") + "</td>"));
            sb.append(("</tr>"));
        }
        sb.append("</table>");
    } catch (ClassNotFoundException e) {
        // 드라이버 로딩 실패
        System.out.println("[에러] " + e.getMessage());
    } catch (SQLException e) {
        // 데이터베이스 연결/쿼리 실행 실패
        System.out.println("[에러] " + e.getMessage());
    } finally {
        // 5. 리소스 해제
        if (conn != null) conn.close();
        if (rs != null) rs.close();
        if (pstmt != null) pstmt.close();
    }
%>

<html>
<head>
    <title>Title</title>
</head>
<body>
Hello JDBC<br/>
<%= sb.toString() %>
</body>
</html>

코드 설명

1. 데이터베이스 연결 과정

  1. DriverManager를 사용해 드라이버를 로딩.
  2. DriverManager.getConnection(url, user, password)를 호출해 데이터베이스와 연결.

2. SQL 실행 및 데이터 처리

  1. PreparedStatement 객체를 사용해 SQL 쿼리를 실행.
  2. ResultSet 객체로 결과를 받아 HTML로 변환.

3. 자원 해제

  • 사용한 Connection, PreparedStatement, ResultSet은 반드시 닫아야 함.

결론

  • 위 코드는 기본적인 JDBC 연결 및 데이터 조회 방법을 보여줍니다.
  • JDBC는 간단한 데이터 처리에 적합하지만, 대규모 애플리케이션에서는 커넥션 풀과 같은 고급 기술을 사용하는 것이 좋습니다.
  • JSP 코드에서 SQL을 직접 처리하지 않고, DAO(Data Access Object) 패턴을 사용해 데이터 접근을 분리하는 것이 권장됩니다.

0개의 댓글

관련 채용 정보