네로개발일기

개발자 네로의 개발 일기, 자바를 좋아합니다 !

반응형

1. 컨트롤러 클래스

HomeController.java

import org.springframework.streotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HomeController {
	
    @RequestMapping("/")
    public String index(Model model) {
    	model.addAttribute("message", "좋은 아침!");
        return "index";
    }
}

컨트롤러 클래스는 웹 브라우저의 URL 요청을 받아서, 웹 서버에서 실행되는 자바 클래스이다. 웹 브라우저가 웹서버에 어떤 URL을 요청을 하면 그 URL에 해당하는 컨트롤러의 메소드가 자동으로 호출되어 실행된다.

 

@Controller 어노테이션

컨트롤러 클래스에 이 어노테이션(Annotation)을 붙여줘야 한다. 

 

액션 메서드

웹 브라우저가 어떤 URL을 웹서버에 요청하면, 그 요청된 URL에 해당하는 컨트롤러의 어떤 메서드가 자동으로 호출된다. 웹 브라우저의 요청에 의해서 자동으로 호출되는 컨트롤러의 메서드를 액션메서드라 한다.

 

@RequestMapping 어노테이션

액션 메서드에 붙은 @RequestMapping("/") 어노테이션의 "/" 부분은 그 액션 메서드를 호출하기 위한 URL이다. 자동으로 호출할 액션 메서드를 찾을 때 컨트롤러 클래스의 이름이나 액션 메서드의 이름은 상관없고 @RequestMapping 어노테이션에 등록되어 있는 URL만 일치하면 된다.

 

컨트롤러 액션 메서드의 리턴값

컨트롤러의 액션 메서드는 문자열을 리턴한다. 컨트롤러의 액션 메서드가 리턴하는 문자열은 View 파일의 이름이다. 컨트롤러의 액션 메서드가 리턴된 후, 뷰 파일이 실행된다. 액션 메서드가 리턴한 이름의 뷰 파일이 실행된다.

 

Model 객체

public String index(Model model)

컨트롤러의 액션 메서드는 Spring Web MVC 엔진에 의해 호출된다. 대부분의 액션 메서드의 파라미터에 Model model 객체가 포함된다. 컨트롤러의 액션 메서드가 뷰 파일에 전달할 데이터를 Model 객체에 넣어 전달한다. 즉, Model 객체는 데이터를 전달하는 객체라고 보면 된다.

 

model의 attribute

model.addAttribute("message", "좋은 아침!");

뷰 파일에 전달할 데이터를 Model 객체에 넣는 코드이다. 전달되는 데이터의 이름은 "message"이고 값은 "좋은 아침!" 문자열이다. 이렇게 모델에 담겨서 뷰에 전달되는 데이터는 model attribute라고 한다. 

뷰에서 model attribute를 출력하는 코드는

${message}

위와 같다. model attribute 이름이 정확히 일치해야 한다.

2. 뷰 (view)

index.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<!DOCTYPE html> 
<html> 
<head>
<meta charset="utf-8"> 
</head>
<body>
	<h1>안녕하세요</h1> 
	<h3>${ message }</h3> 
</body>
</html>

웹 브라우저의 요청(http request)에 대한 응답(http response)으로, 웹 서버에서 웹 브라우저로 전송되는 것들은 http 태그가 대부분이다. 

 

실행 순서

웹 브라우저에서 웹 서버에 요청(http request)이 전달되면, 요청된 URL과 일치하는 컨트롤러의 액션 메서드가 실행된다. 그리고 액션 메서드의 뒤를 이어서 뷰(view) 파일이 실행된다. 뷰 파일의 실행 결과, 출력된 html 태그들이 웹 브라우저로 전송된다.

 

728x90
반응형
blog image

Written by ner.o

개발자 네로의 개발 일기, 자바를 좋아합니다 !