본문 바로가기
웹 프로그래밍(풀스택-->java)/웹프로그래밍(백엔드-->java)

36. Jsp 게시판 - BoardList 글 목록 보기

by 백엔드개발자0107 2021. 12. 6.

게시판에 있는 전체 내용을 확인 하는 것이 BoardList 글 목록 보기 이다.

 

혼자서 전체 글 목록보기 를 만들어 보았다..

 

일단 boardDAO클래스에서 Vector를 이용해서 BoardBean클래스를 받는게 신기하였고

 

boardBean클래스를 이용하는것도 재밌었다..

 

BoardList.jsp

 

<%@page import="java.util.Vector"%>
<%@page import="db.BoardBean"%>
<%@page import="db.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>



<%
//전체 게시글의 내용을 jsp쪽으로 가져와야 한다.
BoardBean bean = new BoardBean();
BoardDAO bdao = new BoardDAO();
Vector<BoardBean> vbean = bdao.getAllList();
for(int i = 0 ; i< vbean.size();i++){
	
	bean = vbean.get(i);
	
}


%>

<center>

<h2>전체 글 보기 </h2>

<table width="600" border = "1" >
<tr height="50">
<td width="100"> num </td><td width="200"> <%=bean.getNum() %> </td>
</tr>
<tr height="50">
<td width="100"> writer </td><td width="200"> <%=bean.getWriter() %> </td>
</tr>
<tr height="50">
<td width="100"> email </td><td width="200">   <%=bean.getEmail() %></td>
</tr>
<tr height="50">
<td width="100"> subject </td><td width="200">  <%=bean.getSubject() %> </td>
</tr>
<tr height="50">
<td width="100"> password </td><td width="200">  <%=bean.getPassword() %> </td>
</tr>
<tr height="50">
<td width="100"> reg_date </td><td width="200">  <%=bean.getReg_date() %> </td>
</tr>
<tr height="50">
<td width="100"> ref </td><td width="200">  <%=bean.getRef() %></td>
</tr>
<tr height="50">
<td width="100"> re_step </td><td width="200">  <%=bean.getRe_step() %> </td>
</tr>
<tr height="50">
<td width="100"> re_level </td><td width="200">  <%=bean.getRe_level() %> </td>
</tr>
<tr height="50">
<td width="100"> readcount </td><td width="200">  <%=bean.getReadcount() %> </td>
</tr>
<tr height="50">
<td width="100"> content </td><td width="200">  <%=bean.getContent() %> </td>
</tr>
</table>
</center>

</body>
</html>

 

BoardDAO.class

 

package db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class BoardDAO {

	Connection con;
	PreparedStatement pstmt;
	ResultSet rs;
	
	//데이터베이스의 커넥션풀을 사용하도록 설정하는 메소드 
	public void getCon() {
		
		try {
			
			Context initctx = new InitialContext();
			Context envctx =(Context) initctx.lookup("java:comp/env");
			DataSource ds = (DataSource)envctx.lookup("jdbc/pool");
			//datascource
			con = ds.getConnection();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
	}
	
	//하나의 새로운 게시글이 넘어와서 저장되는 메소드
	public void insertBoard(BoardBean bean) {
		
		getCon();
		
		//빈클래스에 넘어오지 않았던 데이터들을 초기화 해주어야 한다. 
		// 즉 , 클라이언트에서 인풋값으로 직접 작성하지 않고 데이터베이스에서 값을 부여하는 것을 여기서 초기화를 미리 시켜주어야만 한다.
		int ref = 0; // 글 그룹을 의미하는애 = 쿼리를 실행시켜서 가장 큰 ref 값울 가져온후 +1 을 더해주면 됨 
		int re_step = 1;//새글이기에 = 부모글이기에 
		int re_level = 1;
		
		try {
			
			//가장 큰 ref값을 읽어오는 쿼리 준비 
			String refsql = "select max(ref) from board2";
			//쿼리 실행 객체 
			pstmt = con.prepareStatement(refsql);
			//쿼리 실행후 결과를 리턴 
			rs = pstmt.executeQuery();
			if(rs.next()) {
				ref = rs.getInt(1)+1;//최대 값에 +1을  더해서 글 그룹을 설정 
			}
			//실제로 게시글 전체값을 테이블에 저장 
			String sql  = "insert into sys.board2 values(0,?,?,?,?,sysdate(),?,?,?,0,?)";
			pstmt = con.prepareStatement(sql);
			//?에 값을 맵핑 
			pstmt.setString(1, bean.getWriter());
			pstmt.setString(2, bean.getEmail());
			pstmt.setString(3, bean.getSubject());
			pstmt.setString(4, bean.getPassword());
			pstmt.setInt(5, ref);
			pstmt.setInt(6, re_step);
			pstmt.setInt(7, re_level);
			pstmt.setString(8, bean.getContent());
			//쿼리를 실행하시오
			pstmt.executeUpdate();
			
			//자원반납
			con.close();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	
	public Vector<BoardBean> getAllList() {
		Vector<BoardBean>v = new Vector<BoardBean>();
		getCon();
		BoardBean bean = new BoardBean();
		
		try {
			
			String sql = "select * from sys.board2";
			pstmt= con.prepareStatement(sql);
			rs = pstmt.executeQuery();
			
			while(rs.next()) {
				
			bean.setNum(rs.getInt(1));
			bean.setWriter(rs.getString(2));
			bean.setEmail(rs.getString(3));
			bean.setSubject(rs.getString(4));
			bean.setPassword(rs.getString(5));
			bean.setReg_date(rs.getString(6));
			bean.setRef(rs.getInt(7));
			bean.setRe_step(rs.getInt(8));
			bean.setRe_level(rs.getInt(9));
			bean.setReadcount(rs.getInt(10));
			bean.setContent(rs.getString(11));
			
			v.add(bean);
			}
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
		return v;
	}
	
	
	
}

위 코드들과 주석처리들을 주이깊게 보자..!