티스토리 뷰
초보 웹 개발자를 위한 스프링 5 프로그램 입문을 보고 복습 겸 개인 학습 정리입니다. (windows 기준)
스프링 MVC
스프링 프레임워크가 제공하는 기능 중 MVC 기능은 웹 요청을 처리하기 위해 다양한 구성 요소를 연동한다.
이번 챕터의 목표는 최소한의 스프링 MVC 설정과 컨트롤러 구현, 이 컨트롤러 처리 결과를 보여줄 뷰 코트를 구현하면서 어떻게 동작하는지 알아보는 것이다 😮
스프링 MVC 동작 방식은 다음 챕터에서 자세히(?) 알아보자.
예제 프로젝트 만들기 (메이븐 기준) 예제 코드
sp5-chap09 프로젝트 폴더 생성
프로젝트(sp5-chap09) 하위 폴더로 아래 폴더 생성
- src/main/java
- src/main/java/webapp
- src/main/java/webapp/WEB-INF
- src/main/java/webapp/WEB-INF/view
sp5-chap09 폴더 내부에 pom.xml 생성
+ pom.xml 파일에 <packaging>war 값 추가, 서블릿 3.1, JSP 2.3, JSTL 1.2 dependency 추가
※ war : web application archive 를 의미
이클립스에서 sp5-chap09 폴더에 생성한 메이븐 프로젝트 import
톰캣😺 설치
스프링 MVC를 위한 설정 추가 (최소 설정)
- MVC 주요 설정 (HandlerMapping, ViewResolver 등)
- 스프링 DispatcherServlet 설정
config 패키지에 MvcConfig파일에 MVC를 위한 설정을 추가하자
해당 클래스는 WebMvcConfigurer 인터페이스 구현하는데 이 인터페이스(WebMvcConfigurer)는 스프링의 MVC 개별 설정을 조정할 때 사용한다.
@EnablewebMvc 애너테이션은 스프링 MVC을 사용하는데 필요한 기본적인 구성을 설정해준다.
→ chap09/src/main/java/config/MvcConfig.java
package config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc // 스프링 MVC 설정 활성화하는 애노테이션 다양한 설정을 생성한다.
public class MvcConfig implements WebMvcConfigurer {
@Override // 매핑 경로를'/'를 주었을 때 JSP/HTML/CSS 등을 빠르게 처리하기 위한 설정 추가
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override //jsp를 이용해서 컨트롤러의 실행 결과를 보여주기 위한 설정 추가
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/view/.", ".jsp");
}
}
web.xml 파일에 DispatcherServlet 설정하기
src/main/java/webapp/WEB-INF 폴더에 web.xml 파일을 작성한다. 코드가 길어 접은 글로 대체
DispatcherServlet은 초기화 과정에서 contextConfiguration 초기화 파라미터에 지정한 설정 파일을 이용해 스프링 컨테이너를 초기화한다.
→ src/main/java/webapp/WEB-INF/web.xml
코드 구현
컨트롤러 구현
클라이언트의 요청을 알맞게 처리할 컨트롤러를 작성하자
→ chap09/src/main/java/chap09/HelloController.java
package chap09;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller // 선언한 class를 스프링 MVC 컨트롤러로 사용하겠다는 뜻
public class HelloController {
@GetMapping("/hello")
public String hello(Model model,
// @RequestParam는 http 요청 파라미터 값을 메서드 파라미터로 전달할 때 사용
@RequestParam(value = "name", required = false) String name) {
model.addAttribute("greeting", "안녕," + name);
return "hello";
}
}
- @Controller 애노테이션을 적용한 클래스는 스프링 MVC에서 컨트롤러로 사용한다.
- @GetMapping 애노테이션을은 메서드가 처리할 요청 경로를 지정
→ 위 파일에서는 /hello 경로로 들어온 요청을 hello()메서드를 이용해서 처리하는 것으로 설정
→ HTTP 요청 메서드 중 GET 요청에 대한 매핑 설정
- Model model 파라미터는 컨트롤러 처리 결과를 뷰에 전달
- @RequestParam 애노테이션은 HTTP 요청 파라미터의 값을 메서드 파라미터로 전달
- model.addAttribute() 메서드의 첫 번째 파라미터는 데이터를 식별하는 속성 이름 ("greeting")
컨트롤러를 스프링 빈으로 등록
→ chap09/src/main/java/config/ControllerConfig.java
package config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import chap09.HelloController;
@Configuration
public class ControllerConfig {
@Bean
public HelloController helloController() {
return new HelloController();
}
}
JSP 구현
앞서 컨트롤러가 생성한 결과를 보여주는 view 코드 작성
view 코드는 JSP를 이용해서 구현한다.
→ chap09/src/main/webapp/WEB-INF/view/hello.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<!DOCTYPE html>
<html>
<head>
<title>Hello</title>
</head>
<body>
인사말: ${greeting}
</body>
</html>
서버 실행
이제 서버를 실행해보자. (미리 톰캣😺 서버 설치 및 설정 완료)
[Run As] → [Run on Server] → [톰캣😺 서버 실행]
다음과 같이 위에서 지정한 경로로 접속했을 때 아래와 같이 출력되면 문제가 없는 것
실행 결과를 보면 hello.jsp에 생성한 결과가 웹 브라우저에 출력된 것을 알 수 있고, name 파라미터로 지정한 값이 HelloController를 거쳐 JSP까지 전달된 것을 알 수있다.
'study > Spring' 카테고리의 다른 글
chap 11 - MVC 1 (1) (0) | 2023.02.06 |
---|---|
chap 10 - 스프링 MVC 프레임워크 동작 방식 (0) | 2023.01.30 |
Tomcat 설치 (0) | 2023.01.25 |
chap 08 - 트랜잭션 처리 (Transaction) (0) | 2023.01.25 |
chap 08 - DB 연동 jdbcTemplate 쿼리 실행 (0) | 2023.01.18 |
- Total
- Today
- Yesterday
- API
- 면접을 위한 CS 전공 지식 노트
- python3
- 암호화
- 회원가입
- git
- path variable
- authenticate()
- django
- musma
- Java
- 검색 결과 내 페이지네이션
- 커맨드 객체
- error: failed to push some refs to 'https://github.com/
- 회원 로그인
- django-environ
- 환경 변수 설정
- Spring
- django.contrib.auth
- 한글 형태소 분석기
- git 공부
- 배열
- Magazine K
- 웹페이지
- Python
- git공부
- Django tutorial
- 톰캣
- 디자인 패턴
- 혼자 공부하는 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |