본문 바로가기

Backend/Spring & SpringBoot

[Spring Framework] 03_02. GET / POST 요청 메서드 매핑

728x90

1) GET / POST 따로 받는 방법

 

* req-ex01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h2>RequestController를 이용한 요청 처리 연습</h2>
	<p>컨트롤러 테스트 중입니다~</p>
	
	<form action="/web/request/basic01">
		<input type="submit" value="GET요청!!">
	</form>
	
	<form action="/web/request/basic01" method="post">
		<input type="submit" value="POST요청!!">
	</form>
	
</body>
</html>

* RequestController.java

@Controller
@RequestMapping("/request")
public class RequestController {
	
	public RequestController() {
		System.out.println("RequestCon 작동!");
	}
	
	//@RequestMapping(value="/request/basic01", method=RequestMethod.GET)
	@GetMapping("/request/basic01")
	public String basicGet() {
		System.out.println("/request/basic01 요청이 들어옴!: GET방식.");
		return "request/req-ex01";
	}
	
	//@RequestMapping(value="/request/basic01", method=RequestMethod.POST)
	@PostMapping("/request/basic01")
	public String basicPost() {
		System.out.println("/request/basic01 요청이 들어옴!: POST방식.");
		return "request/req-ex01";
	}
}

GET방식 POST 방식을 따로 요청을 받을 때는, @RequestMapping 을 사용하거나 @GetMapping, @PostMapping 방식을 사용한다. @GetMapping, @PostMapping 방식은 Spring version 4 버전 이상에서만 사용할 수 있다. 

 

이렇게 나눈다면, 예를들어 get방식일때는 글쓰기 페이지만 보여주고, Post 방식에서는 입력값을 DB에 넣는 역할을 하게 나누어 구현할 수 있다. 예시에 대해서는 다음에 살펴보겠다. 

 

2) 매핑 할때마다 "/request" 부분이 중복된 부분 처리 

-> 콘트롤러 자체를 매핑 시킨다. 

 

@Controller
@RequestMapping("/request")
public class RequestController {
	public RequestController() {
		System.out.println("RequestCon 작동!");
	}

	@GetMapping("/basic01")//spring 4부터 나옴.
	public String basicGet() {
		System.out.println("/request/basic01 요청이 들어옴! : GET 방식");
		return "request/req-ex01";
	}
	@PostMapping("/basic01")
	public String basicPost() {
		System.out.println("/request/basic01 요청이 들어옴! : POST 방식");
		return "request/req-ex01";
	}
}

 

이렇게 @RequestMapping("/request") 를 앞에 써주어 RequestController자체를 매핑 시켜 안에 있는 메서드들이 모두 /request 다음에 mapping 시킬 수 있게 만들면 중복을 피해 작성할 수 있다.

 

3) 메서드를 String으로 리턴하지 않고 void로 리턴하기. 

 

- 컨트롤러의 요청 메서드를 void리턴 타입으로 지정.
- 응답하려는 페이지가 요청 url 경로와 같은 위치에 존재한다면, 뷰 리졸버가 요청이 들어온 url 경로의 실제 jsp 파일로 자동 연결합니다.

 

	@GetMapping("/req-ex02")
	public void reqEx02() {
		System.out.println("/request/req-ex02 요청!: GET");
	}

 

 

 

728x90