MVC패턴을 요약하자면,
이 세가지를 분리해 개발과 유지보수가 좋게 만든 패턴이 MVC패턴이다. 모든 값들이 Controller를 거치기 때문에 View단이나 Model단은 자체적인 기능에 충실할 수 있게 되고, Controller는 View단에서 받은 값들을 올바른 Model단에 연결하여 연산하고 다시 올바른 View단으로 넘기는 기능에만 충실할수 있게 된다.
DispatcherServlet.java 중 게시물 보기 부분
BoardDAO dao = new BoardDAO();
BoardVO vo = new BoardVO();
//DB에서 게시글 고유번호 추출
int seq = Integer.parseInt(request.getParameter("seq"));
//고유번호의 조회수+1 성공시 1반환
int check = dao.cntAdd(seq);
if(check == 1) {
vo = dao.showContent(seq);
//조회수+1성공시 글이 있다는것이므로 DB에서 최대,최솟값 추출
int[] i = dao.seqMinMax();
String url = "showContent.jsp";
request.setAttribute("seqMinMax", i);
request.setAttribute("content", vo);
RequestDispatcher rd = request.getRequestDispatcher(url);
rd.forward(request, response);
} else {
System.out.println("cntAdd에서 오류 발생");
}
ShowContent.jsp 중 JavaScript부분
<%
BoardVO vo = (BoardVO)request.getAttribute("content");
int[] i = (int[])request.getAttribute("seqMinMax");
int seqMin = i[0];
int seqMax = i[1];
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><%=vo.getTitle()%></title>
<script type="text/javascript">
function prev() {
<%if(vo.getSeq() == seqMin) {%>
alert('이전글이 없습니다.');
return;
<%}%>
location.href = 'showContent.do?seq=<%=vo.getSeq()-1%>';
}
function next() {
<%if(vo.getSeq() == seqMax) {%>
alert('다음글이 없습니다.');
return;
<%}%>
location.href = 'showContent.do?seq=<%=vo.getSeq()+1%>';
}
</script>
게시물 목록에서 특정 게시물에 들어간 후에, 이전글이나 다음글을 눌렀을 때 Controller단에서 오류를 발생시키지 않게 하기 위한 방법이다. Controller에서 미리 불러온 Min값과 Max값을 가지고 JavaScript에 넣어 만약 그 값보다 작거나 크면 경고 메세지와 함께 화면이 넘어가지 않도록 만들었다.