[컨트롤러 메서드의 파라미터 타입]2021.01.18

2673 단어 SpringSpring

< 클래스 패스 >

1. 프로젝트 외부

-장점:가벼워짐
-단점:이동이 어렵다(다시 또 수정하려면 바꿔줘야됌)

2. 프로젝트 내부 (WEB-INF/lib/*.jar)

-장점: 이동이 쉽다
-단점: 무겁다(용량이 크다)

-> 요 두개를 해결하는게 maven

클래스패스 따로 해줄필요없이 알아서 클래스패스 걸어줌

<java-version>1.8</java-version> <org.springframework-version>5.0.7.RELEASE</org.springframework-version>
->버전 1.8/5.0.7 로 바꿔야함


->경로설정

servlet-context.xml -> 컨트롤러 담당

server->client 로 데이터 보내는 방법

  1. html(css/js)
  2. text
  3. json
  4. xml

컨트롤러 메서드의 파라미터 타입

추가 설명보충

@RequestBody

  • Http 요청의 body부분을 JSON으로 변환시켜주는 역할
  • POST방식으로 넘어온 데이터를 객체로 바인딩
  • POST방식으로만 사용해야함

@RequestParam

  • 요청 파라미터를 1:1로 받기 위해 사용
  • 반드시 파라미터가 전송되어야 한다(안되면 400error)
  • defualtValue로 값을 설정하든지 required를 false로 바꿔서 값이 없어도 되든지 해줘야함
    (@RequestParam(required = false) 와 같이 required 속성을 추가하면 해당 필드가 쿼리스트링에 존재하지 않아도 예외가 발생하지 않음.)

@ModelAttribute

  • 요청된 여러개의 파라미터들을 1:1로 객체에 바인딩 해서 받을 수 있음

public class IndexController {
    @RequestMapping("/sample/*")
    public String hello(@RequestParam("name") String name,
    // required 조건이 없으면 기본값은 true, 즉 필수 파라미터이다. 파라미터 pageNo가 
    존재하지 않으면 Exception 발생.		      
	@RequestParam(value="pageNo", required=false) String pageNo){ 
    // 파라미터 pageNo가 존재하지 않으면 String pageNo는 null.
	...		
    }

@ResponseEntity

  • HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스
  • ResponseEntity 는 status field를 가지기 때문에 상태코드는 필수적으로 리턴해줘야 한다.
	public ResponseEntity<String> m13() {
		String msg = "{\"name\":\"엄지공주\", \"age\":\"26\"}";
		HttpHeaders headers = new HttpHeaders();
		headers.add("Content Type", "application/json;charset=utf-8");
		
		return new ResponseEntity<String>(msg, headers, HttpStatus.OK);
	}```
  

좋은 웹페이지 즐겨찾기