Spring - 원리

S.Sun·2024년 4월 3일

스프링

목록 보기
4/17

질문내용

  1. 스프링 mvc 에서 ioc 컨테이너 생성되는 갯수 와 이름은?
  2. DispatcherServlet 에 대하여 설명하시오.
  3. welcome page 란?
  4. 스프링 부트에서 .jsp를 사용하기 위한 절차는?
  5. 아래의 @의 기능은
  • @Controller
  • @GetMapping
  • @RequestMapping

개인작성

  • 기본적으로 생성되는 IOC 컨테이너
    Root WebApplicationContext
  • 이후 생성되는 IOC 컨테이너
    WebApplicationContext
IOC 컨테이너의 개수 = 
Root WebApplicationContext + 
여러 개의 DispatcherServlet에 대한 WebApplicationContext

라고 한다.

기본 설정 파일들 + index.html만 만들고 실행한 상태라면
Root WebApplicationContext 1개와 WebApplicationContext 1개 총 2개가 만들어진다.

  1. DispatcherServlet
  • 클라이언트의 HTTP 요청을 받아들이고, 요청을 처리하기 위해 적절한 핸들러에 전달
  • 각각의 요청에 대해 새로운 쓰레드나 인스턴스를 생성하지 않고,
    요청을 처리할 때마다 동일한 DispatcherServlet 인스턴스를 재사용


  1. welcome page
  • 웹 애플리케이션에서 처음 접근하게 되는 기본 페이지를 일컫는 말
  • 웹 애플리케이션의 루트 경로('/')에 접근했을 때 자동으로 표시되는 페이지

1) pom.xml 파일에 jstl과 tomcat-embed-jasper를 추가
- jsp를 사용하기 위한 라이브러리 추가

		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>

2) src/main 이후 jsp 파일을 넣을 경로 설정. 폴더 생성 시, 경로를 설정하여 생성하면 됨.

webapp/WEB-INF/views

3) application.properties 파일 내 설정 추가
- jsp 파일이 있는 경로 설정

####  jsp
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

4) jsp 파일 생성
- return 값이 곧 jsp 파일 이름이 된다. -> home.jsp 생성

5) Controller 역할을 하는 파일을 만들고 실행

package edu.sejong.ex.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {
	
	@GetMapping("/home")
	public String home() {
		System.out.println("home()..");
		return "home";
	}
}
  • @Controller : 클래스 위에만 붙는 에너테이션
    - @Component + 의미
    - @Component : 해당 클래스 형태로 객체를 생성해주는 기능. Spring에서 가장 많이 사용됨.
    - IOC 컨테이너 중 Root WebApplicationContext에 객체를 생성한다고 함.
    - jsp/servlet에서 만드는 Controller의 기능을 그대로 가져다 놓은 것.
  • @GetMapping
    - uri에서 contextPath를 통해 command를 얻고 그 부분을 가지고 처리하는 기능을 가진다.
    - 해당 에너테이션은 get 방식으로 요청한 부분을 의미.
    - 즉, @PostMapping도 있다는데....
  • @RequestMapping
    - 지정된 경로와 HTTP 메서드에 대해 모든 종류의 요청을 처리할 수 있다고 함.
    -> GET, POST, PUT, DELETE 등의 HTTP 메서드를 모두 다룰 수 있음.
    - 다목적 매핑 에너테이션이라고 하더라...

검색도 하고, 챗gpt도 하고.... 뭔가 진빠져...


profile
두리둥둥

0개의 댓글