22/05/27

안은주·2022년 5월 30일
0
💡 Spring 강의 듣고 이해하기!!

[학습내용]


Controller 의 역할 이해

  • Controller가 있으면 API마다 파일을 만들 필요가 없음.

회원 관리 API (1)

(1) Servlet Code

@WebServlet(urlPatterns = "/user/login")
public class UserLoginServlet extends HttpServlet {
	@Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) {
		// ... 
	}
}
@WebServlet(urlPatterns = "/user/logout")
public class UserLogoutServlet extends HttpServlet {
	@Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) {
		// ... 
	}
}
@WebServlet(urlPatterns = "/user/signup")
public class UserSingUpServlet extends HttpServlet {
	@Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) {
		// ... 
	}

	@Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) {
		// ... 
	}

}

(2) Controller Code

  • API 마다 파일을 만들 필요 없음
    • 보통 하나의 Contoller 에 모든 API 를 넣지는 않음
    • 유사한 성격의 API 를 하나의 Controller 로 관리
  • 함수 이름도 내 마음대로 설정 가능~!!! (단, 클래스 내의 중복함수명 불가)
@Controller
public class UserController {
	@GetMapping("/user/login")
	public String login() {
	    // ...
	}

  @GetMapping("/user/logout")
  public String logout() {
      // ...
  }

	@GetMapping("/user/signup")
	public String signup() { 
		// ... 
	}
	
	@PostMapping("/user/signup")
  public String registerUser(SignupRequestDto requestDto) {
		// ... 
	}
}

스프링 MVC

  • MVC (Model - View - Controller) 디자인 패턴
  • Server 에서 HTML 을 내려 주는 경우
    1. 정적 (static) 웹 페이지

    - **Controller**
        1. Client 의 요청을 **Model** 로 받아 처리
            1. 예) 회원가입을 위한 개인 정보들 (id, password, name)
        2. Client 에게 **View** (정적 웹 페이지, HTML) 를 내려줌
    
2. 동적 (dynamic) 웹 페이지
    

    - **Controller**
        1. Client 의 요청을 **Model** 로 받아 처리
        2. Template engine 에게 **View**, **Model** 전달
            1. **View**: 동적 HTML 파일
            2. **Model**: View 에 적용할 정보들
        3. Template engine
            1. **View** 에 **Model** 을 적용 → 동적 웹페이지 생성
                1. 예) 로그인 성공 시, "로그인된 사용자의 id" 를 페이지에 추가
                2. Template engine 종류: 타임리프 (Thymeleaf), Groovy, FreeMarker, Jade 등 (스프링에서 JSP 이용은 추천하지 않고 있음)
        4. Client 에게 **View** (동적 웹 페이지, HTML) 를 내려줌
    

🗒 MEMO

💡 하팅

회고🤔


스프링은 정말 어렵다.ㅜㅠ

어려워서 그런지 아는게 없어서 그런건지

이번주는 유독 집중력이 부족했다.

공부도 중요하지만 쉬는 것도 중요한 것 같아 이번 주말을 쉬어야겠다.

월요일부터 다시 정신 차리고 똑띠하자 !!

profile
우당탕탕 개발일지🤣

0개의 댓글