Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자 도전기

[Spring] Spring MVC Framework 본문

개발공부/Spring

[Spring] Spring MVC Framework

jnnjnn 2024. 4. 9. 19:48

Spring MVC FrameWork

MVC 아키텍처를 기반으로 하는 Spring 프레임워크로 Java 웹 어플리케이션을 개발하기 위해 사용한다.

Model, View, Controller로 구성되어 사용자의 요청을 처리하고 응답한다.

 

Controller

Spring Controller는 MVC 아키텍처의 핵심 부분 중 하나로, 사용자의 요청을 처리하고 그에 맞는 응답을 생성하는 역할을 한다. 클래스에 @Controller 어노테이션을 선언하게 되면 그 클래스는 Controller가 된다.

 

 ✅ 요청 매핑(Request Mapping) 

URL 패턴과 Controller 메서드를 매핑하여 요청이 들어왔을 때 어떤 Controller 메서드가 실행될지 결정한다. 이를 위해 @RequestMapping 어노테이션을 사용한다

 

@Controller
@RequestMapping("main3")
public class Controller03 {

    // 경로 : /main3/sub1
    @RequestMapping("sub1")
    public void method1() {
        System.out.println("Controller03.method1");
    }
}

 

  • Controller의 공통된 경로는 컨트롤러에 @RequestMapping 어노테이션을 사용하여 지정할 수 있다
  • 단일 경로 앞에 "/"는 생략 가능하다
  • 경로 값은 'value = '가 생략되어 있다
  • param을 받을 수 있으며 메서드가 실행되려면 반드시 param값이 모두 포함되어야 한다

✅ Request param

@RequestParam은 request param을 처리할 수 있는 어노테이션이다. 주로 URL 쿼리 문자열에서 매개 변수를 추출하는 데 사용된다

Request param

  • HTTP 요청에 매개 변수(parameter)를 포함하여 데이터를 전달하는 방법 중 하나이다
  • 일반적으로 URL 쿼리 문자열(query string) 또는 HTTP 요청 본문(body)에 포함된다
  • http://localhost:8080/main6?id=123&name=john 에서 'id'와 'name'이 request param이다

 

   @RequestMapping("sub3")
    public void method3(@RequestParam("age") int age) {
    // @RequestParam(value = "age", required = true)
        if (age < 18) {
            System.out.println("청소년 관련 정보 출력");
        } else if (age < 35) {
            System.out.println("청년 관련 정보 출력");
        } else if (age < 65) {
            System.out.println("중장년 관련 정보 출력");
        } else {
            System.out.println("노인 관련 정보 출력");
        }
    }

 

@RequestParam의 리턴값은 String이지만 선언한 매개 변수의 타입으로 자동 변환해준다. 이때 'required = true' 가 생략되어 있으며 이는 요청 매개 변수의 필수 여부를 가리킨다. required= false로 선언하면 파라미터는 필수값이 아니며 defaultValue로 입력값이 없을 때의 기본값을 설정해 줄 수 있다.

defaultValue = "None"

 

@RequestParam의 변수명과 매개변수 명이 같을 경우 다음과 같이 생략할 수 있다. 이때는 'required = false'가 기본값으로 지정된다. 

 

    // 메소드 아규먼트 타입이 기본타입(wrapper 포함), String 이면
    // @RequestParam으로 간주됨
    @RequestMapping("sub7")
    public void method7(String name,
                        Integer age) {
        System.out.println("name = " + name);
        System.out.println("age = " + age);
    }

 

 

Model

Controller는 클라이언트에게 보여줄 데이터를 생성하거나 가져와서 모델에 담는다. 모델은 클라이언트에게 전달되어 화면을 렌더링하는 데 사용된다.

 

@RequestMapping("sub3")
    public void method3(Model model) {
        model.addAttribute("name", "Faker");
        model.addAttribute("age", 27);
    }

 

  • model attributeName : String / model attributeValue : Object의 순서로 저장한다
  • value에 자주 사용하는 타입은 String, 기본타입/Wrapper, 배열, List, Map, JavaBeans 등이 있다

 

View

Controller는 요청을 처리한 후 그 결과를 어떤 뷰에 전달할지 결정한다. 일반적으로 뷰 이름이나 뷰 객체를 반환하는 방식으로 이루어진다(포워딩)

 

    @RequestMapping("sub4")
    public String method4() {
        return "view3";     // view3을 호출
    }

 

반환값이 없는 메소드를 사용하면 자동적으로 url 경로를 view 이름으로 반환한다

   @RequestMapping("sub7")
    public void method7() {
        // 요청 경로와 같은 view의 이름으로 결정됨
        // view : /WEB-INF/view/sub7.jsp
    }

 

반환값인 HTML, CSS, JavaScript 을 작성하는 방법 중 하나로 JSP가 사용된다.