본문 바로가기

JAVA

JAVA 게시판 처리(상세페이지, 조회수)-4

테이블 더블클릭하면 더블클릭한 no(column)을 찾아

상세페이지로 이동하는 게시판 처리 및 조회수 구현

수정, 삭제, 답글, 메인화면 이동 버튼 생성

 

실행화면

 

 

mapper

	<select id="getBoardDetail" parameterType="int" resultType="board">
		SELECT b.*, f.fname 
		FROM board b, boardfile f
		WHERE b.NO =f.NO(+)
		and b.no = #{no}		
	</select>
	<update id="readCountup" parameterType="int">
		update board
		set readcnt = readcnt+1
		where no = #{no}	
	</update>

 

controller

  // 상세페이지
  @RequestMapping("boardDetail.do")
  public String boardDetail(@RequestParam("no") int no, Model d) {
    d.addAttribute("board", service.getBoardDetail(no));

    return "WEB-INF\\views\\a03_boardDetail.jsp";
  }

 

 

dao

  // 상세
  public Board getBoardDetail(int no);

  // 조회 카운트업
  public void readCountup(int no);

 

service

public Board getBoardDetail(int no) {

    // 조회 카운트업
    dao.readCountup(no);

    // 상세 내용을 VO로 가져오기..
    return dao.getBoardDetail(no);
  }

 

jsp

<script type="text/javascript">
	$(document).ready(function(){
		<%-- 
		
		--%>	
		$("[name=fname]").click(function(){
			if(confirm("다운로드하시겠습니까?")){
				location.href="${path}/download.do?fname="+$(this).val()
			}
		});
		
	});
</script>
</head>
<!-- a02_boardInsert.jsp 내용 복사 해서 
	a04_boardDetail.jsp 에 붙이고 타이틀을 게시판 상세화면
	controller에서  return에서 a04_boardDetail.jsp
	로 호출될 수 있도록 처리해주세요.
 -->
<body>
<div class="jumbotron text-center">
  <h2>게시판상세화면</h2>

</div>
<div class="container">
	<%--
	 name="no"  name이 같은 값으로 두개 선언.. 확인 
	
	 --%>
	<form id="frm01" action="${path}/boardInsert.do" 
		 class="form"  method="post">
		<div class="input-group mb-2 ">
			<div class="input-group-prepend ">
				<span class="text-center input-group-text ">글번호</span>
			</div>
			<input name="no" class="form-control" 
				value="${board.no}" placeholder="제목 입력하세요" />	
			
			<div class="input-group-prepend">
				<span class="text-center input-group-text">상위글번호</span>
			</div>
			<input name="refno" class="form-control" 
				value="${board.refno}" placeholder="제목 입력하세요" />	
							
		</div>  
		<div class="input-group mb-2">
			<div class="input-group-prepend">
				<span class="text-center input-group-text">제 목</span>
			</div>
			<input name="subject" class="form-control" 
				value="${board.subject}" placeholder="제목 입력하세요" />	
			<div class="input-group-prepend">
				<span class="text-center input-group-text">첨부파일</span>
			</div>
			<input name="fname" class="form-control" 
				value="${board.fname}" />	
		</div>  
		
		<div class="input-group mb-2">
			<div class="input-group-prepend">
				<span class="text-center input-group-text">작성자</span>
			</div>
			<input name="writer" class="form-control" 
				value="${board.writer}" placeholder="작성자 입력하세요" />
				<div class="input-group-prepend">
				<span class="text-center input-group-text">조회수</span>
			</div>
			<input  class="form-control" 
				value="${board.readcnt}" placeholder="작성자 입력하세요" />	
								
		</div> 
		<div class="input-group mb-2">
			<div class="input-group-prepend">
				<span class="text-center input-group-text">등록일</span>
			</div>
			<!-- 등록일/수정일은 vo로 할당이 형식이 맞지 않기 때문에
				name="@@@" 삭제 처리 -->
			<input  class="form-control" 
				value='<fmt:formatDate value="${board.regdte}" type="both"/>' placeholder="작성자 입력하세요" />
				<div class="input-group-prepend">
				<span class="text-center input-group-text">수정일</span>
			</div>
			
			<input  class="form-control" 
				value='<fmt:formatDate value="${board.uptdte}" type="both"/>' placeholder="작성자 입력하세요" />	
								
		</div> 		
		
		
		
		
			
		<div class="input-group mb-2">
			<div class="input-group-prepend">
				<span class="text-center input-group-text">내 용</span>
			</div>
			<textarea name="content" rows="10" class="form-control"  
				placeholder="내용 입력하세요">${board.content}</textarea>	
		</div> 	
		<div class="text-right">
			<button type="button" onclick="updateProc()" class="btn btn-success">수정</button>
			<button type="button" onclick="deleteProc()" class="btn btn-danger">삭제</button>
			<button type="button" onclick="replyProc()" class="btn btn-warning">답글</button>
			<button type="button" onclick="goMain()" class="btn btn-info">메인화면</button>
		</div>		
	</form>
</div>
<script type="text/javascript">
function updateProc(){
	if(confirm("수정하시겠습니까?")){
		// 유효성 check
		$("form").attr("action","${path}/updateBoard.do");
		$("form").submit();
	}
}
function deleteProc(){
	if(confirm("삭제하시겠습니까?")){
		$("form").attr("action","${path}/deleteBoard.do");
		$("form").submit();		
	}
}
function replyProc(){
	if(confirm("답글을 처리 하시겠습니까?")){
		$("[name=refno]").val( $("[name=no]").val() )
		//$("[name=subject]").val("RE:"+$("[name=subject]").val() )
		$("[name=content]").val(
				"\n\n\n\n\n\n\n\n======= 상위글 =======\n"+
				$("[name=content]").val()
		
		);
		$("form").attr("action","${path}/boardInsertForm.do")
		$("form").submit();
		
		
	}
}
var proc = "${proc}"
if(proc=="upt"){
	if(confirm("수정성공!\n조회리스트화면으로 이동하시겠습니까?")){
		location.href="${path}/boardList.do";
	}
}
if(proc=="del"){
	alert("삭제성공\n조회 리스트화면으로 이동!")
	location.href="${path}/boardList.do";
}	

function goMain(){
	location.href="${path}/boardList.do";
}


</script>
</body>