휴먼교육센터 개발자과정 73~75일차

조하영·2022년 11월 22일
0

게시판 만들기 실습

컨트롤러

게시글 리스트 컨트롤러

package com.human.controller;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.human.dao.BoardDAO;
import com.human.vo.BoardVO;

/**
 * Servlet implementation class BoardList
 */
@WebServlet("/QnaBoardList")
public class QnaBoardList extends HttpServlet {
	private BoardDAO boardDao = new BoardDAO(); 
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public QnaBoardList() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//데이터베이스 접근
		
		ArrayList<BoardVO> bList = boardDao.selectAll();
		
		
		//포워딩
		String url = "/bbs/list.jsp";
		RequestDispatcher dispatcher = request.getRequestDispatcher(url);
		request.setAttribute("bList", bList);
		dispatcher.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

게시글 자세히 보기 컨트롤러

package com.human.controller;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.human.dao.BoardDAO;
import com.human.dao.ReDAO;
import com.human.vo.BoardVO;
import com.human.vo.ReVO;

/**
 * Servlet implementation class BoardView
 */
@WebServlet("/QnaBoardView")
public class QnaBoardView extends HttpServlet {
	BoardDAO bdao = new BoardDAO();
	ReDAO rdao = new ReDAO();
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public QnaBoardView() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		request.setCharacterEncoding("UTF-8");// 받은 파라미터 인코딩
		response.setContentType("text/html; charset=UTF-8");
		
		String num = request.getParameter("num");
		String cnt = request.getParameter("cnt");
		BoardVO bvo = bdao.selectOne(num, cnt);
		ArrayList<ReVO> rList = rdao.selectAll(num);
		String url = "/bbs/view.jsp";
		RequestDispatcher dispatcher = request.getRequestDispatcher(url);
		request.setAttribute("bvo", bvo);
		request.setAttribute("rList", rList);
		dispatcher.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

게시글 등록 컨트롤러

package com.human.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.human.dao.BoardDAO;
import com.human.vo.BoardVO;

/**
 * Servlet implementation class wrAction
 */
@WebServlet("/QnaAction")
public class QnaAction extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public QnaAction() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		BoardDAO boardDao = new BoardDAO();
		request.setCharacterEncoding("UTF-8");// 받은 파라미터 인코딩
		response.setContentType("text/html; charset=UTF-8");
		int num = Integer.parseInt(request.getParameter("num"));
		String id = request.getParameter("id");
		String name = request.getParameter("name");
		String pass = request.getParameter("pass");
		String chk = request.getParameter("chk");
		String title = request.getParameter("title");
		String content = request.getParameter("content");
		String jsp = request.getParameter("jsp");
		System.out.println(id+chk+title+content+jsp);

		BoardVO boardVo = new BoardVO();
		boardVo.setNum(num);
		boardVo.setId(id);
		boardVo.setName(name);
		boardVo.setPass(pass);
		boardVo.setChk(chk);
		boardVo.setTitle(title);
		boardVo.setContent(content);
		// DB insert작업
		if(jsp.equals("qnaForm")) {
			boardDao.insert(boardVo);
			response.sendRedirect("QnaBoardList");
		}else if(jsp.equals("modyForm")){
			boardDao.mody(boardVo);
			String url = "QnaBoardView";
			RequestDispatcher dispatcher = request.getRequestDispatcher(url);
			request.setAttribute("num", num);
			dispatcher.forward(request, response);
		}

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

게시글 등록폼 컨트롤러

package com.human.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.human.dao.BoardDAO;

/**
 * Servlet implementation class wrForm
 */
@WebServlet("/QnaForm")
public class QnaForm extends HttpServlet {
	private BoardDAO boardDao = new BoardDAO(); 
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public QnaForm() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String num = boardDao.getNumber();
		String url = "bbs/qnaForm.jsp";
		RequestDispatcher dispatcher = request.getRequestDispatcher(url);
		request.setAttribute("num", num);
		dispatcher.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

리뷰글 등록 컨트롤러

package com.human.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.human.dao.ReDAO;
import com.human.vo.ReVO;

/**
 * Servlet implementation class reAction
 */
@WebServlet("/reAction")
public class reAction extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public reAction() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		ReDAO rdao = new ReDAO();
		request.setCharacterEncoding("UTF-8");// 받은 파라미터 인코딩
		response.setContentType("text/html; charset=UTF-8");
		
		String num = request.getParameter("num");
		String reId = request.getParameter("reId");
		String reContent = request.getParameter("reContent");
		System.out.println("글번호:"+ num);
		System.out.println("리뷰아이디:"+ reId);
		System.out.println("리뷰내용:"+ reContent);
		ReVO rvo = new ReVO();
		rvo.setNum(num);
		rvo.setReId(reId);
		rvo.setReContent(reContent);
		rdao.insert(rvo);
		
		//response.sendRedirect("QnaBoardView");
		String url = "QnaBoardView";
		RequestDispatcher dispatcher = request.getRequestDispatcher(url);
		request.setAttribute("num", num);
		dispatcher.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

게시글 삭제 컨트롤러

package com.human.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.human.dao.BoardDAO;

/**
 * Servlet implementation class QnaDel
 */
@WebServlet("/QnaDel")
public class QnaDel extends HttpServlet {
	private BoardDAO boardDao = new BoardDAO(); 
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public QnaDel() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		String[] num = request.getParameterValues("num");
		
		boardDao.delete(num);
		
		response.sendRedirect("QnaBoardList");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

게시글 수정 컨트롤러

package com.human.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.human.dao.BoardDAO;
import com.human.vo.BoardVO;

/**
 * Servlet implementation class QnaMody
 */
@WebServlet("/QnaMody")
public class QnaMody extends HttpServlet {
	BoardDAO bdao = new BoardDAO();
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public QnaMody() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String num = request.getParameter("num");
		String cnt = request.getParameter("cnt");
		BoardVO bvo = bdao.selectOne(num,cnt);
		String url = "/bbs/modyForm.jsp";
		RequestDispatcher dispatcher = request.getRequestDispatcher(url);
		request.setAttribute("bvo", bvo);
		dispatcher.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

게시판 전체보기

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ page import="com.human.vo.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/shopping.css">
</head>
<body>
	<div id="wrap" align="center">
		<h1>QnA 게시판</h1>
		<form action="QnaDel" method="get">
			<table id="list" style="text-align: center;">
				<tr>
					<td colspan="6" style="border: white; text-align: right"><a
						href="QnaForm">질의응답 등록</a></td>
				</tr>
				<tr>
					<th class="chkB"><input type="checkbox" id="allChk"
						onchange="allChk1()"></th>
					<th>번호</th>
					<th>제목</th>
					<th>아이디</th>
					<th>작성일</th>
					<th>조회</th>
				</tr>

				<%
					ArrayList<BoardVO> bList = (ArrayList) request.getAttribute("bList");
					if (bList.size() == 0) {
						out.print("<tr class= 'record'>");
						out.print("<td colspan = 6><p>등록된 글이 없습니다.<p></td>");
						out.print("</tr>");
					} else {
						for (int i = 0; i < bList.size(); i++) {
							out.print("<tr class= 'record'>");
							out.print("<td class='chkB'><input type='checkbox' name = 'num' value = '" + bList.get(i).getNum()
									+ "'></td>");
							out.print("<td>" + bList.get(i).getNum() + "</td>");
							if (bList.get(i).getChk() != null) {
								out.print("<td><a href='" + request.getContextPath() + "/QnaBoardView?num="
										+ bList.get(i).getNum() + "&cnt=" + bList.get(i).getCnt() + "'>"
										+ bList.get(i).getTitle() + "*</a>");
							} else {
								out.print("<td><a href='" + request.getContextPath() + "/QnaBoardView?num="
										+ bList.get(i).getNum() + "&cnt=" + bList.get(i).getCnt() + "'>"
										+ bList.get(i).getTitle() + "</a>");
							}
							if (bList.get(i).getRevCnt() != 0) {
								out.print("<b style='color:red;'> [" + bList.get(i).getRevCnt() + "]</b>" + "</td>");
							} else {
								out.print("</td>");
							}
							out.print("<td>" + bList.get(i).getId() + "</td>");
							out.print("<td>" + bList.get(i).getIndate() + "</td>");
							out.print("<td>" + bList.get(i).getCnt() + "</td>");
							out.print("</tr>");
						}
					}
				%>

			</table>
			<input type="submit" value="선택삭제"
				style="margin-top: 10px; float: left;">
		</form>
	</div>
</body>
<script type="text/javascript">
	function allChk1() {
		const table = document.getElementById('list');
		for (let i = 0; i < table.rows.length; i++) {
			if (document.getElementById('allChk').checked) {
				table.rows[i].cells[0].childNodes[0].checked = true;
			} else {
				table.rows[i].cells[0].childNodes[0].checked = false;
			}
		}
	}
</script>
</html>

게시글 보기

<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
   <%@ page import="java.util.*"%>
<%@ page import="com.human.vo.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="css/shopping.css">
<style type="text/css">
p{margin: 0px;
}
</style>
</head>
<body>
<%BoardVO bvo = (BoardVO)request.getAttribute("bvo"); %>
   <div id="wrap" align="center">
      <h1>QnA 상세보기</h1>
      <table>
         <tr>
            <th>아이디</th>
            <td>${bvo.getId()}</td>
            <th>이름</th>
            <td>${bvo.getName()}</td>
         </tr>
         <tr>
            <th>작성일</th>
            <td>${bvo.getIndate()}</td>
            <th>조회수</th>
            <td>${bvo.getCnt()}</td>
         </tr>
         <tr>
            <th>제목</th>
            <td colspan="3">${bvo.getTitle()}
              <span style="color: red;">  
              <% if(bvo.getChk()!=null){
            	out.print("/*비밀글입니다.");
            }%>
            </span></td>
         </tr>
         <tr>
            <th>내용</th>
            <td colspan="3" style="height: 500px">${bvo.getContent()}</td>
         </tr>
         
      </table>
       
      <table>
      <tr>
      <th>답변</th>
      </tr>
             <%
				ArrayList<ReVO> rList = (ArrayList)request.getAttribute("rList");
				if(rList.size()==0){
					out.print("<tr class= 'record'>");
					out.print("<td><p>등록된 답변이 없습니다.<p></td>");
					out.print("</tr>");
				}else{
					for (int i = 0; i < rList.size(); i++) {
						out.print("<tr class= 'record'>");
						out.print("<td><b>"+rList.get(i).getReId()+"</b><br><p>"+rList.get(i).getReContent()+"</p><p style='font-size: smaller;'>"+rList.get(i).getReIndate()+"</p></td>");
						out.print("</tr>");
					}
				}
			%>
       </table>
      <br> <br> <input type="button" onclick= "location.href = 'QnaMody?num=${bvo.getNum()}'" value="게시글 수정">
      <input type="button" onclick = "del()" value="게시글 삭제">
      <input type="button" onclick="location.href = 'QnaBoardList'" value="목록 보기">
      <input type="button" onclick = "showRe()" value="답변쓰기"> 
      <form action="reAction" method="get">
      <table id = "review" style="display:none;">
      <tr>
      <th rowspan="2">답변달기</th>
      <td colspan="3">아이디: <input type="text" name="reId" size="20px"><input type="hidden" name="num" value="${bvo.getNum()}"></td>
         </tr>
         <tr>
         	<td colspan="3">답변: <input type="text" name="reContent"  style="width: 700px; height: 100px">  <input type="submit" value="답변 등록" style="width: 100px; height: 100px"></td>
         </tr>
      </table>
        </form>
      </div>
</body>
<script type="text/javascript">
	function showRe(){
		document.getElementById("review").style.display = 'block';
	}
	
	function del(){
		if(confirm("게시글을 삭제하시겠습니까??")){
			window.location.href = "QnaDel?num=" + ${bvo.getNum()};
		}		
	}
</script>
</html>

게시글 등록 폼

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/shopping.css">
</head>
<body>
	<div id="wrap" align="">
		<h1>QnA 등록</h1>
		<form id="go" name="frm" method="post" action="QnaAction">
			<input type="hidden" name="command" value="board_write">
			<table>
				<tr>
					<th>글번호</th>
					<td><input type="hidden" name="jsp" value = "qnaForm">
					<input type="hidden" name="num" value = "${num}">${num}</td>
				</tr>
				<tr>
					<th>아이디</th>
					<td><input id="idchk" type="text" name="id"> * 필수 <span
						id="idchkOut"></span></td>
				</tr>

				<tr>
					<th>이름</th>
					<td><input id="namechk" type="text" name="name"> * 필수
						<span id="namechkOut"></span></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td><input id="passchk" type="password" name="pass"> *
						필수 (게시물 수정 삭제시 필요합니다.) <span id="passchkOut"></span></td>
				</tr>
				<tr>
					<th>제목</th>
					<td><input type="text" size="50" name="title"><input
						type="checkBox" name="chk">*비밀글</td>
				</tr>
				<tr>
					<th>내용</th>
					<td><textarea cols="70" rows="15" name="content"></textarea></td>
				</tr>
			</table>
			<br> <br> <input type="button" onclick="allChk()"
				value="등록"> <input type="reset" value="다시 작성"> <input
				type="button" value="목록">
		</form>
	</div>
</body>
<script type="text/javascript">
	document.getElementById('idchk').onchange = function() {
		var a = document.getElementById('idchk').value;
		const regExp = /^(?=.*[$`~!@$!%*#^.?&\\(\\)\-_=+]).{8,10}$/;
		if (regExp.test(a)) {
			document.getElementById('idchkOut').innerHTML = '*사용가능한 id 입니다.';
			document.getElementById('idchkOut').style.color = 'green';
			document.getElementById('idchkOut').style.fontSize = '10px';
		} else {
			document.getElementById('idchkOut').innerHTML = '*특수문자 포함, 8~10글자 사이로 입력해주세요';
			document.getElementById('idchkOut').style.color = 'red';
			document.getElementById('idchkOut').style.fontSize = '10px';
		}
	}

	document.getElementById('namechk').onblur = function() {
		var a = document.getElementById('namechk').value;
		if (a === '') {
			document.getElementById('namechkOut').innerHTML = '*필수 입력 사항입니다.';
			document.getElementById('namechkOut').style.color = 'red';
			document.getElementById('namechkOut').style.fontSize = '10px';
		} else {
			document.getElementById('namechkOut').innerHTML = '';
		}
	}

	document.getElementById('passchk').onblur = function() {
		var a = document.getElementById('passchk').value;
		if (a === '') {
			document.getElementById('passchkOut').innerHTML = '*필수 입력 사항입니다.';
			document.getElementById('passchkOut').style.color = 'red';
			document.getElementById('passchkOut').style.fontSize = '10px';
		} else {
			document.getElementById('passchkOut').innerHTML = '';
		}
	}

	function allChk() {
		let id = document.getElementById('idchk').value;
		let name = document.getElementById('namechk').value;
		let pass = document.getElementById('passchk').value;
		const regExp = /^(?=.*[$`~!@$!%*#^.?&\\(\\)\-_=+]).{8,10}$/;
		if (regExp.test(id) && name !== '' && pass !== '') {
			document.getElementById('go').submit();
		} else {
			alert("필수사항을 확인해주세요.")
		}
	}
</script>
</html>

게시글 수정 폼

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	<%@ page import="java.util.*"%>
<%@ page import="com.human.vo.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/shopping.css">
</head>
<body>
<%BoardVO bvo = (BoardVO)request.getAttribute("bvo"); %>
	<div id="wrap" align="">
		<h1>QnA 수정</h1>
		<form id="go" name="frm" method="post" action="QnaAction">
			<input type="hidden" name="command" value="board_write">
			<table>
				<tr>
					<th>글번호</th>
					<td>
					<input type="hidden" name="jsp" value = "modyForm">
					<input type="hidden" name="num" value = "${bvo.getNum()}">${bvo.getNum()}</td>
				</tr>
				<tr>
					<th>아이디</th>
					<td><input id="idchk" type="text" name="id" value = "${bvo.getId()}"> * 필수 <span
						id="idchkOut"></span></td>
				</tr>

				<tr>
					<th>이름</th>
					<td><input id="namechk" type="text" name="name" value = "${bvo.getName()}"> * 필수
						<span id="namechkOut"></span></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td><input id="passchk" type="password" name="pass" value = "${bvo.getPass()}"> *
						필수 (게시물 수정 삭제시 필요합니다.) <span id="passchkOut"></span></td>
				</tr>
				<tr>
					<th>제목</th>
					<td><input type="text" size="50" name="title" value = "${bvo.getTitle()}"><input
						type="checkBox" name="chk">*비밀글</td>
				</tr>
				<tr>
					<th>내용</th>
					<td><textarea cols="70" rows="15" name="content">${bvo.getContent()}</textarea></td>
				</tr>
			</table>
			<br> <br> <input type="button" onclick="allChk()"
				value="등록"> <input type="reset" value="다시 작성"> <input
				type="button" value="목록">
		</form>
	</div>
</body>
<script type="text/javascript">
	document.getElementById('idchk').onchange = function() {
		var a = document.getElementById('idchk').value;
		const regExp = /^(?=.*[$`~!@$!%*#^.?&\\(\\)\-_=+]).{8,10}$/;
		if (regExp.test(a)) {
			document.getElementById('idchkOut').innerHTML = '*사용가능한 id 입니다.';
			document.getElementById('idchkOut').style.color = 'green';
			document.getElementById('idchkOut').style.fontSize = '10px';
		} else {
			document.getElementById('idchkOut').innerHTML = '*특수문자 포함, 8~10글자 사이로 입력해주세요';
			document.getElementById('idchkOut').style.color = 'red';
			document.getElementById('idchkOut').style.fontSize = '10px';
		}
	}

	document.getElementById('namechk').onblur = function() {
		var a = document.getElementById('namechk').value;
		if (a === '') {
			document.getElementById('namechkOut').innerHTML = '*필수 입력 사항입니다.';
			document.getElementById('namechkOut').style.color = 'red';
			document.getElementById('namechkOut').style.fontSize = '10px';
		} else {
			document.getElementById('namechkOut').innerHTML = '';
		}
	}

	document.getElementById('passchk').onblur = function() {
		var a = document.getElementById('passchk').value;
		if (a === '') {
			document.getElementById('passchkOut').innerHTML = '*필수 입력 사항입니다.';
			document.getElementById('passchkOut').style.color = 'red';
			document.getElementById('passchkOut').style.fontSize = '10px';
		} else {
			document.getElementById('passchkOut').innerHTML = '';
		}
	}

	function allChk() {
		let id = document.getElementById('idchk').value;
		let name = document.getElementById('namechk').value;
		let pass = document.getElementById('passchk').value;
		const regExp = /^(?=.*[$`~!@$!%*#^.?&\\(\\)\-_=+]).{8,10}$/;
		if (regExp.test(id) && name !== '' && pass !== '') {
			document.getElementById('go').submit();
		} else {
			alert("필수사항을 확인해주세요.")
		}
	}
</script>
</html>

DAO

게시판 DAO

package com.human.dao;

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 com.human.vo.BoardVO;

public class BoardDAO {
	private Connection conn = null;

	public BoardDAO() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("로드성공");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("로드실패");
		}
	}

	public boolean connect() {
		try {
			conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@humanDB_high?TNS_ADMIN = C:/Users/human/Desktop/Wallet_humanDB", "admin",
					"Jb21499549954.");
			System.out.println("연결성공");
			return true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("연결실패");
			e.printStackTrace();
			return false;
		}
	}

	public void insert(BoardVO boardVo) {
		if (connect()) {
			String sql = "insert into qnaBoard values (?,?,?,?,?,?,?,default,default)";

			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setInt(1, boardVo.getNum());
				psmt.setString(2, boardVo.getId());
				psmt.setString(3, boardVo.getName());
				psmt.setString(4, boardVo.getPass());
				psmt.setString(5, boardVo.getTitle());
				psmt.setString(6, boardVo.getContent());
				psmt.setString(7, boardVo.getChk());
				psmt.executeUpdate();
				conn.close();

				System.out.println("입력성공");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("입력실패");
			}
		}
	}

	public ArrayList<BoardVO> selectAll() {
		ArrayList<BoardVO> bList = new ArrayList<>();
		ResultSet rs = null;
		if (connect()) {
			String sql = "select * from qnaboard order by num";

			try {
				Statement stmt = conn.createStatement();
				rs = stmt.executeQuery(sql);

				while (rs.next()) {
					BoardVO bvo = new BoardVO();
					bvo.setNum(rs.getInt("num"));
					String sql2 = "select count(*) as revCnt from reBoard where num ="+rs.getInt("num");
					System.out.println(sql2);
					Statement stmt2 = conn.createStatement();
					ResultSet rs2 = stmt2.executeQuery(sql2);
					if(rs2.next()) {
						bvo.setRevCnt(rs2.getInt("revCnt"));
					}
					bvo.setId(rs.getString("id"));
					bvo.setName(rs.getString("name"));
					bvo.setPass(rs.getString("pass"));
					bvo.setTitle(rs.getString("title"));
					bvo.setIndate(rs.getString("indate"));
					bvo.setChk(rs.getString("chk"));
					bvo.setCnt(rs.getInt("cnt"));
					bList.add(bvo);
				}

				conn.close();

				System.out.println("조회성공");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("조회실패");
			}
		}
		return bList;
	}

	public BoardVO selectOne(String num, String cnt) {
		ResultSet rs = null;

		if (connect()) {
			try {
				if(cnt!=null) {
					String sql2 = "update qnaBoard set cnt = ? where num =?";
					PreparedStatement psmt2 = conn.prepareStatement(sql2);
					psmt2.setInt(1, Integer.parseInt(cnt)+1);
					psmt2.setString(2, num);
					psmt2.executeQuery();
				}
				
				String sql = "select * from qnaBoard where num =?";
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, num);
				rs = psmt.executeQuery();

				if (rs.next()) {
					BoardVO bvo = new BoardVO();
					bvo.setId(rs.getString("id"));
					bvo.setName(rs.getString("name"));
					bvo.setNum(rs.getInt("num"));
					bvo.setTitle(rs.getString("title"));
					bvo.setContent(rs.getString("content"));
					bvo.setChk(rs.getString("chk"));
					bvo.setIndate(rs.getString("indate"));
					bvo.setCnt(rs.getInt("cnt"));
					bvo.setPass(rs.getString("pass"));
					return bvo;
				}

				conn.close();

				System.out.println("조회성공");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("조회실패");
			}
		}
		return null;
	}

	public String getNumber() {
		String num = null;
		ResultSet rs = null;
		if (connect()) {
			String sql = "select qnaboard_cnt.nextval as num from dual";

			try {
				Statement stmt = conn.createStatement();
				rs = stmt.executeQuery(sql);

				if (rs.next()) {
					num = rs.getString("num");
				}

				conn.close();
				System.out.println("조회성공");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("조회실패");
			}
		}
		return num;
	}

	public void delete(String[] num) {
		if (connect()) {

			try {
				for (int i = 0; i < num.length; i++) {
					String sql = "delete from qnaBoard where num = ?";
					PreparedStatement psmt = conn.prepareStatement(sql);
					psmt.setString(1, num[i]);
					psmt.executeQuery();
					System.out.println("입력성공");
				}
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("입력실패");
			}

		}
	}
	
	public void mody(BoardVO boardVo) {
		if (connect()) {
			String sql = "update qnaBoard set id= ?,name= ?,pass= ?,title= ?,content= ?, chk= ? where num = ?";

			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, boardVo.getId());
				psmt.setString(2, boardVo.getName());
				psmt.setString(3, boardVo.getPass());
				psmt.setString(4, boardVo.getTitle());
				psmt.setString(5, boardVo.getContent());
				psmt.setString(6, boardVo.getChk());
				psmt.setInt(7, boardVo.getNum());
				psmt.executeUpdate();
				conn.close();

				System.out.println("입력성공");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("입력실패");
			}
		}
	}

}

리뷰 DAO

package com.human.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import com.human.vo.ReVO;

public class ReDAO {
private Connection conn = null;
	
	public ReDAO(){
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("로드성공");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("로드실패");
		}
	}
	
	public boolean connect() {
		try {
			conn = DriverManager.getConnection("jdbc:oracle:thin:@humanDB_high?TNS_ADMIN = C:/Users/human/Desktop/Wallet_humanDB", "admin",
					"Jb21499549954.");
			System.out.println("연결성공");
			return true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("연결실패");
			e.printStackTrace();
			return false;
		}
	}
	
	public void insert(ReVO reVo) {
		if(connect()) {
			String sql="insert into reBoard values (?,?,?,default)";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, reVo.getNum());
				psmt.setString(2, reVo.getReId());
				psmt.setString(3, reVo.getReContent());
				
				psmt.executeUpdate();
				conn.close();
				
				System.out.println("입력성공");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("입력실패");
			}
		}
	}
	
	public ArrayList<ReVO> selectAll(String num) {
		ArrayList<ReVO> rList = new ArrayList<>();
		ResultSet rs = null;
		if(connect()) {
			String sql="select * from reBoard where num=? order by reIndate desc";
			
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, num);
				rs = psmt.executeQuery();
				
				while(rs.next()) {
					ReVO rvo = new ReVO();
					
					rvo.setReId(rs.getString("reId"));
					rvo.setReContent(rs.getString("reContent"));
					rvo.setReIndate(rs.getString("reIndate"));
					rList.add(rvo);
				}
				
				conn.close();
				
				System.out.println("조회성공");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("조회실패");
			}
		}
		return rList;
	}
	
//	public BoardVO selectOne(String num) {
//		ResultSet rs = null;
//		
//		if(connect()) {
//			try {
//				String sql="select * from qnaBoard where num =?";
//				PreparedStatement psmt = conn.prepareStatement(sql);
//				psmt.setString(1, num);
//				rs = psmt.executeQuery();
//				
//				if(rs.next()) {
//					BoardVO bvo = new BoardVO();
//					bvo.setId(rs.getString("id"));
//					bvo.setName(rs.getString("name"));
//					bvo.setNum(rs.getInt("num"));
//					bvo.setTitle(rs.getString("title"));
//					bvo.setContent(rs.getString("content"));
//					bvo.setChk(rs.getString("chk"));
//					bvo.setIndate(rs.getString("indate"));
//					bvo.setCnt(rs.getInt("cnt"));
//					return bvo;
//				}
//				
//				conn.close();
//				
//				System.out.println("조회성공");
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//				System.out.println("조회실패");
//			}
//		}
//		return null;
//	}
}

VO

게시글 VO

package com.human.vo;

public class BoardVO {
	public int num;
	public String id;
	public String name;
	public String pass;
	public String title;
	public String content;
	public String chk;
	public int cnt;
	public int revCnt;
	public String indate;
	
	
	public int getRevCnt() {
		return revCnt;
	}
	public void setRevCnt(int revCnt) {
		this.revCnt = revCnt;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	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 getChk() {
		return chk;
	}
	public void setChk(String chk) {
		this.chk = chk;
	}
	public int getCnt() {
		return cnt;
	}
	public void setCnt(int cnt) {
		this.cnt = cnt;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	public String getIndate() {
		return indate;
	}
	public void setIndate(String indate) {
		this.indate = indate;
	}
}

리뷰 VO

package com.human.vo;

public class ReVO {
	public String num;
	public String reId;
	public String reContent;
	public String reIndate;
	
	public String getNum() {
		return num;
	}
	public String getReIndate() {
		return reIndate;
	}
	public void setReIndate(String reIndate) {
		this.reIndate = reIndate;
	}
	public void setNum(String num2) {
		this.num = num2;
	}
	public String getReId() {
		return reId;
	}
	public void setReId(String reId) {
		this.reId = reId;
	}
	public String getReContent() {
		return reContent;
	}
	public void setReContent(String reContent) {
		this.reContent = reContent;
	}
	

}
profile
공부하는 개발자

0개의 댓글