Controller 특징
- HttpServleRequest, HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현
- 다양한 타입의 파라미터처리 , 다양한 타입의 리턴타입 사용가능
- GET 방식, POST 방식 등 전송방식에 대한 처리를 어노테이션으로 처리 가능
- 상속/ 인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능
sevlet-content.xml 에 패키지를 스캔하도록 하기
스프링에서 Controller을 사용하기 위해서는 우선 sevlet-content.xml에 <context:component-scan"> 이리는 태그를 이용해서 지정된 패키지를 스캔하도록 설정한다.
해당 패키지에 선언된 클래스들을 조사하면서 스프링에서 객체(bean)설정에 사용되는 어노테이션들을 가진 클래스들을 파악하며 객체로 생성해서 관리해주기도 한다.
<context:component-scan base-package="com.mall.controller" />
클래스가 스프링에서 관리되면 화면에서는 클래스 앞에 작게 's' 모양의 아이콘이 추가된다.
아래의 그림을 보면 알 수 있다.
log4j
스프링에서 lombok 세팅을 하고 어노테이션중에 log4j가 있다 .
@Log4j : 로그 객체를 생성한다.
@log 가 java.util.Logging을 이용하는데 log4j는 라이브러리를 활용한다.
Spring Legacy Project 를 생성한 프로젝트는 기본적으로 log4j가 추가되어 있으므로 별도의 설정이 필요하지 않다.
스프링이 인식할 수 있는 정보가 출력되는 것을 볼 수 있다.
메인 페이지 Controller 설정
@Controller , @Log4j 를 활용해서 페이지에 화면을 나타내고 log 를 찍어보도록 하겠다.
views-> mian.jsp를 화면에 호출하도록 하겠다.
@Log4j
@Controller
public class mallController {
//메인 페이지 이동
@RequestMapping(value = "/main", method = RequestMethod.GET)
public void mainPageGET() {
log.info("메인 페이지 진입");
화면이 출력되고 Console 창에는 아래 그림과 같이 출력이 된다.
만약에 lombok의 Log4j를 사용하지 않고 나타내본다면
private static final Logger logger = LoggerFactory.getLogger(mallController.class);
위의 코드를 적어야 한다.
종합해서 코드로 다시 보자면 아래와 같다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class mallController {
//lombok - log4j 을 사용하지 않았을 때
private static final Logger logger = LoggerFactory.getLogger(mallController.class);
//메인 페이지 이동
@RequestMapping(value = "/main", method = RequestMethod.GET)
//@GetMapping("/main")
public void mainPageGET() {
logger.info("메인 페이지 진입");
확실히 log4j를 사용하는 것이 간편한 점이라고 볼 수 있다.
그렇다면 위에 적힌 @RequestMapping 에 대해 알아보도록 하겠다.
@RequestMapping - 가장 많이 사용하는 것은 method 속성
* method 속성에는 Get, Post 방식을 구분해서 사용할 때 이용한다.
* 스프링 4.3 버전부터는 RequestMapping 을 줄여서 사용할 수 있는 GetMapping, PostMapping의 축약형으로 표현할 수 있다.
위의 코드를 스프링 4.3 버전에서부터 사용할 수 있는 GetMapping, PostMapping 방법으로 표현해보겠다.
(log4j, getMapping 사용)
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import lombok.extern.log4j.Log4j;
@Log4j
@Controller
public class mallController {
//lombok - log4j 을 사용하지 않았을 때
//private static final Logger logger = LoggerFactory.getLogger(mallController.class);
//메인 페이지 이동
//@RequestMapping(value = "/main", method = RequestMethod.GET)
@GetMapping("/main")
public void mainPageGET() {
log.info("메인 페이지 진입");
앞서 봤던 것들과 비교했을 때 코드가 적어지고 단순해지는 것을 볼 수 있다.
'개념정리' 카테고리의 다른 글
개념정리 1 (0) | 2022.03.13 |
---|---|
jquery - ajax 회원가입후 페이지 변경x (1) | 2021.12.03 |
HTTP & HTTPS (0) | 2021.11.14 |
REST API 개념 (HTTP& HTTPS) (0) | 2021.11.13 |
스레드 (0) | 2021.11.10 |