@Controller

bacccine·2022년 6월 27일
0

spring

목록 보기
8/10

DispatcherServlet

웹 Application 최전방에서 사용자 요청을 접수
URL을 기준으로 요청을 처리할 Controller를 찾아 해당 Controller를 호출 및 실행한다

Controller

사용자 요청(URL 기반)에 해당하는 Controller의 특정 메소드가 호출된다
Controller는 요청의 파라미터가 있으면 처리한다
비즈니스 처리를 위해 서비스 컴포넌트를 주입받아서 실행한다
실행된 결과를 전달받아 화면에 대한 정보와 함께 DispatcherServlet에게 반환한다

사용되는 Annotation엔 @Controller, @RequestMapping, @Autowired가 있다

@Controller

해당 클래스가 Controller라는 것을 마킹
클래스 레벨에 붙여준다
Spring 2.5 버전부터 사용 가능해졌으며, xml 파일의 설정을 대신한다. Bean 으로 등록된다

@RequestMapping

URL을 처리한다
사용자 요청에 해당되는 내용을 갖고 있다
클래스나 메소드 레벨에 붙여준다

클래스와 메소드 레벨 둘 다 @RequestMapping을 해주면 클래스와 메소드 레벨의 @RequestMapping URL이 결합되어 최종적인 URL이 결정된다

예시

@Controller
@RequestMapping("/bbs")
public class BbsController {
	@RequestMapping("/list") ☞ 최종적으로 bbs/list가 된다
	public String list() {
	}
}

@RequestMapping 에서 요청 방식을 선택해주어야 한다 ☞ GET,POST,PUT,DELETE

@RequestMapping(value="/write", method=RequestMethod.POST)

Spring4.3이후엔 @GetMapping, @PostMapping,@PutMapping,@DeleteMapping이 추가가 되었다

@Autowired

실제 사용할 서비스 컴포넌트를 주입받아서 실행하기 위한 Annotation
@Autowired를 걸어주면 Spring 컨테이너가 자동으로 객체를 생성해서 넣어준다

@PathVariable

URL을 변수처럼 사용할 수 있게 한다(경로변수)

ex) /bbs/{articleId}이라면

@RequestMapping("/{articleId}")
public String viewDetail(@PathVariable String articleId) {...}

ModelAndView를 사용한 Model/View 처리

응답으로 View(JSP..)와 Model(Domain Object, VO)을 함께 처리할 때 사용
서비스로 받아온 데이터를 View로 전달해주는 역할
view name과 데이터를 가지고 있다

예시

ModelAndView view = new ModelAndView();

view.setViewName("bbs/list");//bbs 디렉토리 밑의 list를 view로 지정하겠다
view.addObject("articleList",list); //key,value의 형태

Redirect,Forward 처리

Controller에서 클라이언트의 요청을 처리한 후 다른 페이지로 이동시키고 싶을 때 다음과 같이 작성

  1. redirect 방식
return "redirect:URL주소매핑";
  1. forward 방식
    return "forward:URL주소매핑";

경로 부분이 "/"로 시작하면 웹 Application 내에서의 절대 경로로 redirect
"/"로 시작하지 않으면 @RequestMapping Annotation의 경로를 기준으로 상대 경로로 redirect

0개의 댓글