본문 바로가기

공부/Spring

[인프런]스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술_12

#MVC 패턴 - 적용

서블릿을 컨트롤러로 사용하고 JSP를 뷰로 사용해서 MVC패턴을 적용해보자
Model은 HttpServletRequest객체를 사용한다
request는 내부에 데이터 저장소를 가지고 있는데
'request.setAttribute(), request.getAttribute()를 사용하면 데이터를 보관하고 조회할 수 있다


dispatcher.forward(): 다른 서블릿이나 JSP로 이동할 수 있는 기능이다. 서버 내부에서 다시 호출이 발생


redirect와 forward의 차이
리다이렉트는 실제 클라이언트에 응답이 나갔다가 클라이언트가 redirect 경로로 다시 요청한다
따라서 클라이언트가 인지할 수 있고 URL경로도 실제 변경된다.
반면 포워드는 서버 내부에서 일어나는 호출이기 때문에 클라이언트가 전혀 인지하지 못한다

redirect는 호출이 두번 일어남
forward는 서버 내부에서 일어나는 호출이라 클라이언트가 전혀 인지하지 못함

 

 

 

 

save-result (asis)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
성공
<ul>
<li>id=<%=((Member)request.getAttribute("member")).getId()%></li>
<li>username=<%=((Member)request.getAttribute("member")).getUsername()%></li>
<li>age=<%=((Member).request.getAttribute("member")).getAge()%></li>
</ul>
<a href="/index.html">메인</a>
</body>
</html>


save-result (tobe)    => 프로퍼티 접근법이 더 간단함

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
성공
<ul>
<li>id=${member.id}</li>
<li>username=${member.username}</li>
<li>age=${member.age}</li>
</ul>
<a href="/index.html">메인</a>
</body>
</html>