[JSP] 간단하게 게시판 리스트 출력해보기

Geehyun(장지현)·2024년 4월 7일

JSP

목록 보기
7/7
post-thumbnail

다음 시험에서 JSP와 서블릿을 이용한 게시판 리스트 출력 손코딩 시험을 본다고하여 정리해보는 게시판 출력!!!

[조건]

  • UI 없이 System.out 으로 콘솔에 출력
  • DB는 마리아DB를 이용
  • JDBC 커넥터 이용 방식으로 작성 (관련 lib는 존재한다는 가정)
  • DAO에서 직접 JDBC 연결하는 방식으로 작성

코드 작성

  1. DB생성, 테이블 작성 및 간단하게 예시 데이터 넣기
-- DB 생성
CREATE DATABASE test;

-- 게시판 테이블 작성
CREATE TABLE tbl_bbs(
	idx INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	title VARCHAR(100) NOT NULL,
	content VARCHAR(200) NOT NULL,
	reg_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
	reg_id VARCHAR(20) NOT NULL,
	mod_date TIMESTAMP NULL,
	mod_id VARCHAR(20) NULL
)
COMMENT = '게시판 테이블'
;

-- 간단한 예시 데이터 넣기
BEGIN NOT atomic
SET @i = 1;
while @i <= 20 DO
	INSERT INTO tbl_bbs (title, content, reg_date, reg_id)
	VALUES (CONCAT('제목',@i), CONCAT(@i,'번째 내용입니다.'), SUBDATE(CURRENT_TIMESTAMP(),@i), CONCAT('testId',@i));
	SET @i = @i+1;
END while;
END;
  1. DTO 작성하기
package test;

public class BbsDTO {
    private String idx;
    private String title;
    private String content;
    private String reg_date;
    private String reg_id;
    private String mod_date;
    private String mod_id;
    
    public String getIdx() {
        return idx;
    }
    public void setIdx(String idx) {
        this.idx = idx;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getReg_date() {
        return reg_date;
    }
    public void setReg_date(String reg_date) {
        this.reg_date = reg_date;
    }
    public String getReg_id() {
        return reg_id;
    }
    public void setReg_id(String reg_id) {
        this.reg_id = reg_id;
    }
    public String getMod_date() {
        return mod_date;
    }
    public void setMod_date(String mod_date) {
        this.mod_date = mod_date;
    }
    public String getMod_id() {
        return mod_id;
    }
    public void setMod_id(String mod_id) {
        this.mod_id = mod_id;
    }
}
  1. DAO 작성하기
package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class BbsDAO {
	public Connection conn;
	public Statement stmt;
	public PreparedStatement psmt;
	public ResultSet rs;
	
	public BbsDAO() {
		try {
			Class.forName("org.mariadb.jdbc.Driver");
			String url = "jdbc:mariadb://localhost:3306/test";
			String id = "user";
			String pwd = "1234";
			conn = DriverManager.getConnection(url, id, pwd);
			System.out.println("JDBC 연결 성공!");
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	public List<BbsDTO> selectList() {
		List<BbsDTO> list = new ArrayList<BbsDTO>();
		String sql = "SELECT idx, title, content, reg_date, reg_id, mod_date, mod_id"
				   + " FROM tbl_bbs";
		try {
			psmt = conn.prepareStatement(sql);
			rs = psmt.executeQuery();
			while(rs.next()) {
				BbsDTO dto = new BbsDTO();
				dto.setIdx(rs.getString("idx"));
				dto.setTitle(rs.getString("title"));
				dto.setContent(rs.getString("content"));
				dto.setReg_date(rs.getString("reg_date"));
				dto.setReg_id(rs.getString("reg_id"));
				dto.setMod_date(rs.getString("mod_date"));
				dto.setMod_id(rs.getString("mod_id"));
				list.add(dto);
			}
		} catch(SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
    
    public void close() {
		try {
			if(rs != null) rs.close();
			if(psmt != null) psmt.close();
			if(stmt != null) stmt.close();
			if(conn != null) conn.close();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}
  1. 컨트롤러(서블릿) 작성하기
package test;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public class bbsController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		BbsDAO dao = new BbsDAO();
		List<BbsDTO> list = dao.selectList();
		
		for(BbsDTO dto : list) {
			System.out.print(dto.getIdx() + "|");
			System.out.print(dto.getTitle() + "|");
			System.out.print(dto.getContent() + "|");
			System.out.print(dto.getReg_date() + "|");
			System.out.print(dto.getReg_id() + "|");
			System.out.print(dto.getMod_date() + "|");
			System.out.print(dto.getMod_id() + " \r\n");
		}
        dao.close();
	}
}

실행결과

profile
블로그 이전 했습니다. 아래 블로그 아이콘(🏠) 눌러서 놀러오세요

3개의 댓글

comment-user-thumbnail
2024년 9월 5일

안녕하세요! 혹시 천재교육 부트캠프에 관련해서 여쭤봐도 될까요?..ㅜㅜㅜ

1개의 답글