티스토리 뷰
✅ JSP에서 method="post"로 보냈는데, Controller의 @RequestMapping("주소.do")에서 받는 것이 가능한가?
Spring MVC에서 @RequestMapping은 기본적으로 모든 HTTP 메서드(GET, POST 등)를 허용합니다.
따라서, @RequestMapping("주소.do")처럼 HTTP 메서드를 명시하지 않으면 GET, POST 모두 처리 가능합니다.
🔹 1️⃣ @RequestMapping의 기본 동작
- @RequestMapping("주소.do") 만 선언하면 GET, POST, PUT, DELETE 등 모든 HTTP 메서드를 허용
- 즉, JSP에서 method="post"로 데이터를 보내도 @RequestMapping("주소.do")에서 정상적으로 받을 수 있음
예제
@Controller
public class SampleController {
@RequestMapping("/submit.do") // HTTP 메서드 미지정 → GET, POST 모두 처리 가능
public String handleRequest(HttpServletRequest request) {
String param = request.getParameter("name");
System.out.println("Received: " + param);
return "result";
}
}
✔ JSP에서 method="post"로 데이터를 전송해도 정상적으로 실행됨
🔹 2️⃣ @RequestMapping에서 HTTP 메서드 지정 (POST만 허용)
하지만, 보안상 특정 메서드만 허용하려면 method 속성을 사용하여 제한하는 것이 좋습니다.
✅ POST 요청만 허용하는 방법
@RequestMapping(value = "/submit.do", method = RequestMethod.POST)
public String handlePost(HttpServletRequest request) {
String param = request.getParameter("name");
System.out.println("Received (POST): " + param);
return "result";
}
✔ 이렇게 하면 GET 요청은 405(Method Not Allowed) 에러 발생
🔹 3️⃣ @PostMapping을 사용하여 POST 요청만 받기 (Spring 4.3 이상)
Spring 4.3부터는 @RequestMapping 대신 **더 간결한 @PostMapping**을 사용할 수 있습니다.
@PostMapping("/submit.do")
public String handlePost(HttpServletRequest request) {
String param = request.getParameter("name");
System.out.println("Received (POST): " + param);
return "result";
}
✔ @PostMapping은 @RequestMapping(value = "/submit.do", method = RequestMethod.POST)와 동일
🔹 4️⃣ 결론
Controller 선언 방식 GET 가능 POST 가능 설명
@RequestMapping("/submit.do") | ✅ | ✅ | 기본적으로 모든 HTTP 메서드 허용 |
@RequestMapping(value = "/submit.do", method = RequestMethod.POST) | ❌ | ✅ | POST 요청만 허용 |
@PostMapping("/submit.do") | ❌ | ✅ | POST 요청만 허용 (Spring 4.3 이상) |
📌 따라서, @RequestMapping("주소.do")만 선언하면 JSP에서 method="post"로 보낸 데이터를 받을 수 있음
📌 그러나 명확하게 하려면 @PostMapping 또는 method = RequestMethod.POST를 사용하는 것이 좋음 🚀
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- DatePicker
- draw.io
- border-collapse
- JQuery
- Javascript
- Keycode
- QueryDSL
- PostgreSQL
- ul li로 테이블
- @ExceptionHandler
- 정규식
- $.extend
- 여러 컬럼 update
- oracle
- springboot
- CSS
- element위치
- $.each
- devtools
- excel
- lombok
- getter
- sumifs
- object key
- 진열사랑
- spring
- 전후방탐색
- caniuse
- 프로젝트명변경
- setter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함