JSP

 

 

 

 

SQL 쿼리를 변경합니다.   기존에 ref_step,  ref_level  을 re_step , re_level 로 변경 합니다

 

자바빈과 설정값이 다르고  또한, 강의 내용과 틀려서 에러가 발생했으므로 변경합니다.

 

drop table board;
create table board(

	num number primary key,
	writer varchar2 (20),
    email varchar2(50),
    subject varchar2(50),
    password varchar2(10),
    reg_date  Date,
	ref number,
    re_step number,
    re_level  number,
	readcount number,
    content  varchar2(3000)
	
);	

 

그리고,  DAO 에서  ref_step,  ref_level  를 된것을 re_step , re_level  로 모두 변경 합니다.

 

BoardInfo.jsp 에서도 변경합니다.

  <input type="button" class="btn btn-success"  value="답글 쓰기" 
onclick="location.href='BoardReWriteForm.jsp?num=<%=bean.getNum()%>&ref=<%=bean.getRef() %>&re_step=<%= bean.getRe_step() %>&re_level=<%=bean.getRe_level() %>'" 

 

 

BoardDAO 클래스의 getAllBoard 메소드 의 쿼리를 다음과 같이 변경합니다.

String sql ="select * from board order by ref desc, RE_LEVEL asc";

re_step    ->  RE_LEVEL

 

 

 

BoardReWriteProc.jsp

<%@page import="model.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 
	강좌와 다르게 html 요소는 제거를 했습니다.
	왜냐하면은 이 페이지에서는 프로세스 작업(데이터를 받고 Dao 를 통해 insert)을 하는 페이지이기 때문입니다.
 -->
 <%
 	request.setCharacterEncoding("UTF-8");
 
 %>
<!--  데이터를 한번에 받아오는 빈클래스를 사용하도록 -->
<jsp:useBean id="boardbean" class="model.BoardBean">
	<jsp:setProperty  name="boardbean"  property="*"/>
</jsp:useBean>
<%
	//데이터베이스 객체 생성
	BoardDAO bdao =new BoardDAO();
	bdao.reWriteBoard(boardbean);
	
	//답변 데이터를 모두 저장후 전체 게시글 보기를 설정
	response.sendRedirect("BoardList.jsp");
%>






 

 

 

class BoardDAO

	
	//답변글이 저장되는 메소드
	public void reWriteBoard(BoardBean bean){
		//부모글 그룹과 글레벨 글스텝을 읽어드림
		int ref=bean.getRef();
		int re_step=bean.getRe_step();
		int re_level=bean.getRe_level();
		
		//System.out.println("re_step :" +re_step + " :  re_level :" +re_level);
		getCon();
		
		try{
			////////////// 핵심 코드   ////////////////
			//1.부모 글보다 큰 re_level 의 값을 전부 1씩 증가시켜줌
			String levelsql="update board set re_level =re_level+1 where ref=? and re_level > ?";
			//쿼리실행객체 선언
			pstmt=con.prepareStatement(levelsql);
			pstmt.setInt(1, ref);
			pstmt.setInt(2, re_level);
			//쿼리실행
			pstmt.executeUpdate();
			//답변글 데이터를 저장
			String sql =" insert into BOARD (NUM, WRITER, EMAIL, SUBJECT, PASSWORD, REG_DATE, REF, ";
			   sql +="	RE_STEP, RE_LEVEL, READCOUNT, CONTENT) "; 
			   sql +=" values(board_seq.NEXTVAL, ? ,? , ?, ?, 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);//부모의 ref값을 넣어줌
			pstmt.setInt(6, re_step+1);//답글이기에 부모 글 re_step 에 1을 더해줌
			pstmt.setInt(7, re_level+1);
			pstmt.setString(8, bean.getContent());
			pstmt.executeUpdate();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			closed();
		}
		
	}
	
	

 

 

 

BoardList.jsp

<%@page import="model.BoardBean"%>
<%@page import="java.util.Vector"%>
<%@page import="model.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<jsp:include page="Header.jsp"/>
</head>
<body>
<%
	//전체 게시글의 내용을 jsp 쪽으로 가져와야 함
	BoardDAO bdao =new BoardDAO();

	//전체게시글을 리턴 받아주는 소스
	Vector<BoardBean> vec =bdao.getAllBoard();
%>


<div class="row">
	<div class="col-xs-2"></div>
	<div class="col-xs-8 col-md-8">
		<h2 class="text-center">전체 게시글 보기</h2>
		<div class="table-responsive">
		<table class="table table-bordered table-striped" >
			<tr>
				<th>번호</th>
				<th>제목</th>
				<th>작성자</th>
				<th>작성일</th>
				<th>조회수</th>
			</tr>
<%-- 			<%
				int k=0;
				for(BoardBean bean : vec){
				 	
			%>
			<tr>		
			<td><%= k+1%></td>
			<td><a href="BoardInfo.jsp?num=<%= bean.getNum() %>" ><%= bean.getSubject()  %></a></td>
			<td><%=bean.getWriter() %></td>
			<td><%= bean.getReg_date() %></td>
			<td><%= bean.getReadcount() %></td>
			</tr>
			<%	k++;} %>		
			 --%>
			<%
				for(int i=0; i<vec.size(); i++){
					BoardBean bean =vec.get(i); //벡터에 저장되어 있는 빈클래스를 하나씩 추출
			%>		
							<tr>		
			<td><%= i+1%></td>
			
			<td><a href="BoardInfo.jsp?num=<%= bean.getNum() %>" >
			<%
				if(bean.getRe_step() >1){
					for(int j =0; j<(bean.getRe_step()*5); j++){
			%>
					&nbsp;
			<%						
					}
				}		
			%>
			<%= bean.getSubject()  %></a></td>
			
			
			<td><%=bean.getWriter() %></td>
			<td><%= bean.getReg_date() %></td>
			<td><%= bean.getReadcount() %></td>
			</tr> 	
			<%	}%>
			
			<tr>
				<td colspan="5" class="text-center">
				  <input type="button" value="글쓰기"  onclick="location.href='BoardWrite.jsp'"  class="btn btn-warning">
				</td>
			</tr>
		</table>
		</div>
	
	</div>
</div>


<jsp:include page="Bottom.jsp"/>

</body>
</html>

 

동영상 강좌와 다르게  모바일 적용이 가능한 반응형 부트스트랩을 사용하였다.

여기서는  jsp 를 배우는 강좌 이기 때문에 html 적 요소에는 비중있게 생각 하지 않아도 될 것이다.

소스 :  https://github.com/braverokmc79/jsp_sin

 

 

유튜브 동영상 출처 :

소프트캠퍼스

강사 : 신형섭(잭임연구원)

저작권 : (주)소프트캠퍼스 http://www.softcampus.co.kr 더많은 무료 강의는 사이트에서 확인하실수 있습니다.

 

 

 

 

about author

PHRASE

Level 60  라이트

가까이 있는 사람을 기쁘게 하고 멀리서 사람이 찾아오게 하라. -공자

댓글 ( 4)

댓글 남기기

작성