스퐁지송 개발노트

JSP 스파게티코드 -> MVC1 -> MVC2 본문

카테고리 없음

JSP 스파게티코드 -> MVC1 -> MVC2

강준석 2023. 1. 20. 15:23
728x90

index

<body>
	
	<h1>스파게티 코드</h1>
	<form method="get" action="spa.jsp">
		숫자 : <input type="text" name="num">
		<input type="submit" value="전송">
	</form>
	
		<h1>mvc 모델1</h1>
	<form method="get" action="mvc1.jsp">
		숫자 : <input type="text" name="num">
		<input type="submit" value="전송">
	</form>

		<h1>mvc 모델2</h1>
	<form method="get" action="mvc2">
		숫자 : <input type="text" name="num">
		<input type="submit" value="전송">
	</form>
	
</body>

 

 

스파게티코드

<body>
<%
	int num =  Integer.parseInt(request.getParameter("num"));
	if(num%2==0){
%>
			<h1>짝수입니다.</h1>
<%	
		}else{
%>
			<h1>홀수입니다.</h1>
<%
		}
%>
</body>

 

mvc1

: 하나의 jsp안에 자바코드와 html코드가 있음

controller : 자바파일(서블릿)

veiw : html(jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%	/* Controller */
	int num =  Integer.parseInt(request.getParameter("num"));
	String result; //model역할
	
	if(num % 2 == 0){
		result = "짝수";
	}else{
		result = "홀수";
	}
%>	

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

    <!--View -->
	<h1><%=result%></h1>
	
</body>
</html>

 

mvc2

: 자바코드는 서블릿(Mvc.java) = controller

           html코드는 jsp(mvc2.jsp) = View

           result변수 : model

 

Mvc.java (서블릿) = controller

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int num = Integer.parseInt(request.getParameter("num"));
		String result;
		
		if(num % 2==0) {
			result = "짝수";
		}else {
			result = "홀수";
		}
		
		//본 서블릿 페이지에서 추가된 result값을 추가해서 보내주는 장치임
		request.setAttribute("result", result);
		
		//아래 코드만 하면 안되는 이유 : 이 페이지 전 페이지에서 전달받은 request값을 그대로
		//다음 페이지로 보내준다
		//값을 지정된 페이지로 전달하는 변수 생성
		RequestDispatcher dispatcher = request.getRequestDispatcher("mvc2.jsp");
		//forward 내장객체 속성으로 다음페이지로만 값 전달
		dispatcher.forward(request, response);
		
	}

 

jsp(mvc2.jsp) html코드 = View

 

<body>
	<!--전달받은 값 출력 -->
	<h1><%=request.getParameter("result")%></h1>
    <!--result의 값도 같이 받은 것 -->
	<h1><%=request.getAttribute("result")%></h1>
	
</body>


index.jsp 

: 값을 입력하고 요청

num이라는 곳에 무언의 값이 저장되고 요청됨

 

요청받는 페이지(서블릿)

Mvc.java

index에서 요청한 num값을 사용할 수 있음

전달 받은 num값으로 홀/짝 여부를 판별

그리고 결과를 출력하는 페이지로 판별된 결과값을 보내줘야함

 

redirect방식 => 단순 페이지 이동 (값 전달 x), 따라서

forward 방식 이용 =>  값 전달 가능

dispatcher.forward(request, response); => index에서 요청받은 값만 전달

result를 보내주지 않아서 mvc2.jsp에서 사용못함

따라서,

request.setAttribute("result", result); 를 사용 => request부분에 result값을 추가

dispatcher.forward(request, response); => 추가 후 전달  함(request에 result값 추가됨)

 

mvc2.jsp는 실제 결과값을 출력하는 페이지

 

mvc1 : 하나의 jsp안에 자바코드와 html코드가 있음

 

mvc2 : 자바코드는 서블릿(Mvc.java) = controller

           html코드는 jsp(mvc2.jsp) = View

           result변수 : model

 

 

728x90
Comments