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

35. Jsp 게시판 - BoardWriteProc, 게시글 입력

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

자 오늘은 우리가 게시글을 작성한 내용을 jsp에서 읽어드려서 그걸 다시 boardDAO쪽으로 넘겨서 게시글이 입력되는 것까지 진행해볼것

 

이다. 오늘은 글쓰기 처리와 글쓰기 저장 그리고 전체게시글보기 까지 넘어가 볼 것이다. 아마 요번시간에는 boardDAO까지는 

 

진행되지 않을까 싶다.

 

BoardWriteProc.jsp

<%@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>

	<%
	request.setCharacterEncoding("UTF-8");//한글처리 
	%>
<!--  게시글 작성한 데이터를 한번에 읽어드림 -->
<jsp:useBean id="boardbean" class="db.BoardBean">
<jsp:setProperty name="boardbean" property="*"/>
</jsp:useBean>

<%
//데이터베이스 쪽으로 빈클래스를 넘겨줌 
BoardDAO bdao = new BoardDAO();
//데이터 저장 메소드 호출
bdao.insertBoard(boardbean);


%>




</body>
</html>

 

BoardDAO.class

package db;

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

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();
		}
		
		
		
		
	}
	
	
	
	
	
}

 

 

결과가 아주 잘 나온다..!