반응형

Return Type

 

String

jsp를 이용하는 경우 파일의 이름과 경로를 나타내기 위해 사용

(String 타입에는 redirect, forward 키워드를 붙여 사용가능)

@RequestMapping(value="/sample", method="RequestMethod.GET)
public String home(Model model){
	
    (생략)
    return "home";
    
}

home.jsp

 

void

URL경로 그대로 jsp파일로 사용

@GetMapping("/ex05")
public void ex05(){
	
    (생략)
    
}

ex05.jsp

 

 

VO, DTO

복합적인 데이터가 들어간 객체 타입, 주로 JSON 데이터를 만드는데 사용

(jackson-databind라이브러리 추가하기 링크)

@GetMapping("/ex06")
public @ResponseBody SampleDTO ex06(){
	
    SampleDTO dto = new SampleDTO();
    dto.setAge(10);
    dto.setName("abc");
    
    return dto;

}

JSON 확인

 

 

ResponseEntity

View를 제공하지 않는 형태로 실행하며, 개발자가 직접 결과 데이터와 HTTP 상태 코드를 직접 제어할 때 사용

@GetMapping("/ex07")
	public ResponseEntity<String> ex07(){
		
		String msg = "{\"name\" : \"abc\"}";
		
		HttpHeaders header = new HttpHeaders();
		header.add("Content-Type", "applicaion/json;charset=UTF-8");		
		
		return new ResponseEntity<>(msg, header, HttpStatus.OK);
	}

 

 

 

끝!

반응형

'Spring Framework > MVC' 카테고리의 다른 글

Model, @ModelAttribute  (0) 2021.01.08
RequestMapping  (0) 2021.01.07
Controller  (0) 2021.01.07
반응형

Model 객체

컨트롤러에서 생성된 데이터를 담아 JSP에 전달하는 역할


 

Servlet에서 모델2 방식으로 데이터를 전달

request.setAttribute("serverTime", new java.util.Date());

RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/home.jsp");

dispatcher.forward(request, response);

 

MVC에서 Model을 이용한 데이터 전달

public String home(Model model){
  
   model.addAttribute("serverTime", new java.util.Date());
 
   return "home";
}

 


 

@ModelAttribute

강제로 전달받은 파라미터를 Model에 담아서 전달하도록 할 때 필요한 어노테이션

 


 

1. Controller에서 @ModelAttribute로 int 값 전달

(package 및 import 생략)
@Controller
@RequestMapping("/sample/*")
@Log4j
public class SampleController {
(생략)
@GetMapping("/ex04")
	public String ex04(SampleDTO dto, @ModelAttribute("page") int page) {
		
		log.info("dto : " + dto);
		log.info("page : " + page);
		
		return "/sample/ex04";
	}
}

 

2. 테스트를 위해 '/WEB-INF/views' 밑에 sample 폴더 생성

 

리턴으로 사용한 'ex04' 의 jsp파일 생성

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
	<head>
	<meta http-equiv="Content-Type" content="text-html; charset=UTF-8">
	<title>ex04</title>
	</head>
	<body>
		
		<h2>SAMPLEDTO ${sampleDTO }</h2>
		<h2>PAGE ${page }</h2>		
		
	</body>
</html>

 

 

 

 

3. 결과 확인

@GetMapping 어노테이션을 사용했으므로 URL 뒤에 직접 쿼리스트링 작성

( http://localhost:8080/sample/ex01?name=test&age=111&page=3 )

 

값이 정상적으로 출력되는 것을 확인

 

 

 

끝!

 

반응형

'Spring Framework > MVC' 카테고리의 다른 글

Controller Return Type  (0) 2021.01.11
RequestMapping  (0) 2021.01.07
Controller  (0) 2021.01.07
반응형

@RequestMapping

@RequestMapping 어노테이션은 현재 클래스의 모든 메서드들의 기본적인 URL 경로가 된다.

@RequestMapping("/sample/*") 라는 경로로 지정 시

ㆍ /sample/a

ㆍ /sample/b

와 같은 경로 모두 SampleController에서 처리된다.

 


 

@RequestMapping에서 사용 할 수 있는 속성

String[] value : url패턴을 지정

@RequestMapping(value="/post")
@RequestMapping(value="/post.*")
@RequestMapping(value="/post/{postId}")

 

RequestMethod[] method : method를 명시하면 같은 URL이라도 다른 메서드 매핑

// /sample/basic 이며, GET 방식에 매핑
@RequestMapping(value="/basic", method = RequestMethod.GET)
		
// /sample/basic 이며, POST 방식에 매핑	
@RequestMapping(value="/basic", method = RequestMethod.POST)	

 

String[] params : 요청 파라미터와 값으로 구분

// /post?postId=Y 일 경우 호출됨
@RequestMapping(value="/post", params="postId=Y")

// 값에 상관없이 파라미터에 postId이 있을 경우 호출됨
@RequestMapping(value="/post", parmas="postId")

 

String[] headers : 헤더 값으로 구분

@RequestMapping(value="/post", headers="content-type=text/*")

 

 

일반적인 경우 GET, POST만 사용하지만,

최근에는 PUT, DELETE 방식도 많이 사용함.

 

끝!

반응형

'Spring Framework > MVC' 카테고리의 다른 글

Controller Return Type  (0) 2021.01.11
Model, @ModelAttribute  (0) 2021.01.08
Controller  (0) 2021.01.07
반응형

 

Spring MVC Controller 특징

HttpServletRequest, HttpServletResponse를 거의 사용할 필요없이 구현

다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용가능

GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 가능

상속/인터페이스 방식 대신에 어노테이션만으로 필요한 설정 가능

 


 

@Controller

package com.test1.controller;

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

@Controller
@RequestMapping("/sample/*")
public class SampleController {

}

 

 

 

com.test1.controller 패키지 폴더에 'SampleController' 클래스 생성

클래스 생성

 

 

 

@Controller 어노테이션 적용 시 자동으로 스프링의 객체(Bean)로 등록된다.

이유는 다음과 같다.

<context:component-scan base-package="com.test1.controller" />

servlet-context.xml에 <context:component-scan>이라는 태그를 이용하여,

지정된 패키지를 스캔하며 객체설정에 사용되는 어노테이션들을 가진 클래스를 파악하고 이를 객체로 생성하여 관리하기 때문

 

 

 

끝!

 

반응형

'Spring Framework > MVC' 카테고리의 다른 글

Controller Return Type  (0) 2021.01.11
Model, @ModelAttribute  (0) 2021.01.08
RequestMapping  (0) 2021.01.07

+ Recent posts