0411 Review

KDU·2022년 4월 11일
0

WEB공부

목록 보기
15/20

MVC패턴

MVC패턴을 요약하자면,

  • Model은 Controller가 보낸 값을 사용하여 필요한 용도로 재연산하는 함수나 메서드이다.
  • View는 Controller가 보낸 값들을 출력하는 웹의 화면이다.
  • Controller는 모든 값을 받고 그 값이 어디로 가야할지 제어한다.

이 세가지를 분리해 개발과 유지보수가 좋게 만든 패턴이 MVC패턴이다. 모든 값들이 Controller를 거치기 때문에 View단이나 Model단은 자체적인 기능에 충실할 수 있게 되고, Controller는 View단에서 받은 값들을 올바른 Model단에 연결하여 연산하고 다시 올바른 View단으로 넘기는 기능에만 충실할수 있게 된다.

생활코딩 - MVC 디자인 패턴

오늘의 코드

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에 넣어 만약 그 값보다 작거나 크면 경고 메세지와 함께 화면이 넘어가지 않도록 만들었다.

profile
의문을 즐깁니다.

0개의 댓글