게시판 만들기 실습
컨트롤러
게시글 리스트 컨트롤러
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;
}
}