개발자 도전기
[Spring] Spring MVC Framework 본문
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가 사용된다.
'개발공부 > Spring' 카테고리의 다른 글
[Spring] Redirect (0) | 2024.04.18 |
---|---|
[Spring] PreparedStatement를 이용해서 데이터베이스 출력하기 (0) | 2024.04.17 |
[Spring] 핸들러(Handler) - @RequestParam, @ModelAttribute (0) | 2024.04.16 |
[JSP] EL 연산자와 JSTL (0) | 2024.04.09 |
[Spring] JSP로 view 작성하기 (0) | 2024.04.09 |