JSP_8강_2_게시글_paging_추가버튼, 상세내역

열라뽕따히·2024년 3월 29일

JSP

목록 보기
38/43

board_list.jsp에 게시글 추가 버튼을 만들자!

mapping.properties에서 insert.go 작성


view -> board_write.jsp 생성


=============================코드=============================

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

	<div align = "center">
		<hr width = "30%" color = "gray">
			<h3>BOARD 테이블 게시판 글쓰기 폼 페이지</h3>
		<hr width = "30%" color = "gray">
		<br/><br/>
		
		<form method = "post" action = "<%=request.getContextPath() %>/insert_ok.go">
			<table border = "1" width = "350">
				<tr>
					<th>작성자</th>
					<td>
						<input type = "text" name = "writer">
					</td>
				</tr>
				
				<tr>
					<th>글 제목</th>
					<td>
						<input type = "text" name = "title">
					</td>
				</tr>
				
				<tr>
					<th>글내용</th>
					<td>
						<textarea rows="7" cols="25" name = "cont"></textarea>
					</td>
				</tr>
				
				<tr>
					<th>글 비밀번호</th>
					<td>
						<input type = "password" name = "pwd">
					</td>
				</tr>
				
				<tr>
					<td colspan = "2" align = "center">
						<input type = "submit" value = "글쓰기">&nbsp;&nbsp;&nbsp;
						<input type = "reset"  value = "다시작성">
					</td>
				</tr>
			</table>
		</form>
	</div>

</body>
</html>



mapping.properties에서 insert_ok.go 작성

action 패키지에 BoardWriteOkAction 클래스 생성


=============================코드=============================

package com.board.action;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.board.model.BoardDAO;
import com.board.model.BoardDTO;

public class BoardWriteOkAction implements Action {

	@Override
	public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
		// 글쓰기 폼 페이지에서 넘어온 데이터들을 board 테이블에 저장하는 비지니스 로직
		String board_writer = request.getParameter("writer").trim();
		String board_title = request.getParameter("title").trim();
		String board_cont = request.getParameter("cont").trim();
		String board_pwd = request.getParameter("pwd").trim();
		
		BoardDTO dto = new BoardDTO();
		dto.setBoard_writer(board_writer);
		dto.setBoard_title(board_title);
		dto.setBoard_cont(board_cont);
		dto.setBoard_pwd(board_pwd);
		
		BoardDAO dao = BoardDAO.getInstance();
		int check = dao.insertBoard(dto);
		
		PrintWriter out = response.getWriter();
		if(check > 0) {
			out.println("<script>");
			out.println("alert('게시글 추가 성공!')");
			out.println("location.href='select.go'");
			out.println("</script>");
		}else {
			out.println("<script>");
			out.println("alert('게시글 추가 실패...')");
			out.println("history.back()");
			out.println("</script>");
		}
		
		return null;
	}

}



BoardDAO에서 insertBoard() 생성


=============================코드=============================

// board 테이블에 게시글을 추가해주는 메서드
	public int insertBoard(BoardDTO dto) {
		int result = 0, count = 0;
		
		try {
			openConn();
			
			sql = "select max(board_no) from board";
			pstmt = con.prepareStatement(sql);
			rs = pstmt.executeQuery();
			if(rs.next()) {
				count = rs.getInt(1) + 1;
			}
			
			sql = "insert into board values(?, ?, ?, ?, ?, default, sysdate, '')";
			pstmt = con.prepareStatement(sql);
			pstmt.setInt(1, count);
			pstmt.setString(2, dto.getBoard_writer());
			pstmt.setString(3, dto.getBoard_title());
			pstmt.setString(4, dto.getBoard_cont());
			pstmt.setString(5, dto.getBoard_pwd());
			
			result = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			closeConn(rs, pstmt, con);
		}
		return result;
	}



main.jsp에서 실행


=============================실행=============================


추가 성공!





이제 상세정보를 조회할 수 있도록 만들어보자

mapping.properties 에서 content.go 작성

action패키지에 BoardContentAction 클래스 생성


=============================코드=============================

package com.board.action;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.board.model.BoardDAO;
import com.board.model.BoardDTO;

public class BoardContentAction implements Action {

	@Override
	public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
		// 상세내역
		int board_no = Integer.parseInt(request.getParameter("no").trim());
		int nowPage = Integer.parseInt( request.getParameter("page").trim());
		
		BoardDAO dao = BoardDAO.getInstance();
		
		BoardDTO content = dao.contentBoard(board_no);



BoardDAO에서 contentBoard() 메서드 생성
게시글을 클릭했을 때 +1되는 것도 함께 처리


=============================코드=============================

// 상세 정보
	public BoardDTO contentBoard(int no) {
		BoardDTO dto = null;
		
		try {
			openConn();
			
			sql = "update board set board_hit = board_hit + 1 where board_no = ?";
			pstmt = con.prepareStatement(sql);
			pstmt.setInt(1, no);
			pstmt.executeUpdate();
			
			sql = "select * from board where board_no = ?";
			pstmt = con.prepareStatement(sql);
			pstmt.setInt(1, no);
			rs = pstmt.executeQuery();
			
			if(rs.next()) {
				dto = new BoardDTO();
				dto.setBoard_no(rs.getInt("board_no"));
				dto.setBoard_writer(rs.getString("board_writer"));
				dto.setBoard_title(rs.getString("board_title"));
				dto.setBoard_cont(rs.getString("board_cont"));
				dto.setBoard_pwd(rs.getString("board_pwd"));
				dto.setBoard_hit(rs.getInt("board_hit"));
				dto.setBoard_date(rs.getString("board_date"));
				dto.setBoard_update(rs.getString("board_update"));
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			closeConn(rs, pstmt, con);
		}
		return dto;
	}



다시 BoardContentAction 클래스로 가자


=============================코드=============================

package com.board.action;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.board.model.BoardDAO;
import com.board.model.BoardDTO;

public class BoardContentAction implements Action {

	@Override
	public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
		// 상세내역
		int board_no = Integer.parseInt(request.getParameter("no").trim());
		int nowPage = Integer.parseInt( request.getParameter("page").trim());
		
		BoardDAO dao = BoardDAO.getInstance();
		
		BoardDTO content = dao.contentBoard(board_no);
		
		request.setAttribute("Content", content);
		request.setAttribute("Page", nowPage);
		
		ActionForward forward = new ActionForward();
		forward.setRedirect(false);
		forward.setPath("view/board_content.jsp");
		
		return forward;
	}

}



view -> board_content.jsp 생성


=============================코드=============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ taglib prefix="c" uri = "http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<div align = "center">
		<c:set var = "cont" value = "${Content }" />
			<hr width = "30%" color = "green">
				<h3>${cont.getBoard_writer() } 상세 페이지</h3>
			<hr width = "30%" color = "green">
			<br/> <br/>
				
		
			<table border = "1" align = "center" width = "350">
				<c:if test="${!empty cont }">
					<tr>
						<th>글 No.</th>
							<td>
								${cont.getBoard_no() }
							</td>
					</tr>
					
					<tr>
						<th>조회수</th>
							<td>
								${cont.getBoard_hit() }
							</td>
					</tr>
					
					<tr>
						<th>작성자</th>
							<td>
								${cont.getBoard_writer() }
							</td>
					</tr>
					
					<tr>
						<th>글 제목</th>
							<td>
								${cont.getBoard_title() }
							</td>
					</tr>
					
					<tr>
						<th>글 내용</th>
							<td>
								<textarea rows="7" cols="30" readonly>${cont.getBoard_cont() }</textarea>
							</td>
					</tr>
					
					<tr>
						<th>글 비밀번호</th>
							<td>
								<c:forEach begin = "1" end = "${cont.getBoard_pwd().length() }">
												*
								</c:forEach>
							</td>
					</tr>
					
					<tr>
						<th>작성날짜</th>
							<td>
								${cont.getBoard_date() }
							</td>
					</tr>
					
					<tr>
						<c:if test = "${!empty cont.getBoard_update() }">
							<th>수정날짜</th>
								<td>
									${cont.getBoard_update() }
								</td>
						</c:if>
					</tr>
				</c:if>
				
				<c:if test="${empty cont }">
				<tr>
					<td colspan = '2' align = "center">
						<h3>전체 회원 리스트가 없습니다...</h3>
					</td>
				</tr>
				</c:if>
			</table>
			
			<br/><br/>
				
				<input type = "button" value = "글 수정" onclick = "location.href='modify.go?no=${cont.getBoard_no()}&page=${Page }'">&nbsp;&nbsp;
				<input type = "button" value = "글 삭제" onclick = "if(confirm('게시글을 정말 삭제하시겠습니까?')) {
																							 location.href='delete.go?no=${cont.getBoard_no()}&page=${Page }'
																							 }else { return; }">&nbsp;&nbsp;
				<input type = "button" value = "게시글 목록" onclick = "location.href='select.go?page=${Page }'">
	</div>

</body>
</html>

=============================실행=============================

게시글 제목 '테팉' 클릭

0개의 댓글