일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- mysql
- ubuntu
- OpenCV
- 채보
- 프로그래머스
- 오류
- Docker
- label
- C
- VS Code
- C++
- error
- C#
- pandas
- pip
- SSH
- Linux
- Selenium
- Numpy
- 기타 연주
- paramiko
- 핑거스타일
- pytorch
- 컨테이너
- JSON
- LIST
- Visual Studio
- YOLO
- Python
- windows forms
- Today
- Total
기계는 거짓말하지 않는다
Controller Get, Post 오류 본문
아래는 오류 메시지이다.
WARN 29148 --- [io-8080-exec-10] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported]
또는 Request method 'POST' not supported
여러가지 이유가 있지만
근본적인 원인은 Controller가 @RestController 라면 @PostMapping 또는 @GetMapping 과
@Controller 라면 @RequestMapping 의 RequestMethod.POST or GET 사용시
HTML의 데이터를 보내는 곳, form 또는 ajax 의 method 와 맞지 않아서 발생한다.
다른 이유는 테스트 시 Spring Security 문제이다.
시큐리티 사용 시 권한이 없을 경우 ignoring().antMatchers 에 추가해놓지 않으면
컨트롤러로 데이터를 보낼수가 없다. 분명 잘못 입력한 것이 없어도 말이다.
웹 페이지에서 F12를 눌러 보면 401 에러가 나오는것을 볼 수 있다.
하나 더 겪었던 것은 위의 문제도 아닌데 안된다면, 코드 실수가 아니라면
HTML에서 onclick 이벤트로 함수를 정의하고 ajax를 이용했을 경우, form 태그에 이 onclick 을 선언한 태그가
함께 있지 않은지 확인하자. form에 아무것도 적혀있지 않아도, button 이라면 submit이 없더라도
form이 먼저 반응하게 되어 원하는 결과가 나오지 않는 경우가 있다.
또는 <form method='post'> 와 같은 경우도 그렇다. 모달에서 사용하는 경우는 더 알아내기가 힘들다.
Test
<body>
<div>
<form method="post">
<div>폼</div>
<button onclick="return send()">버튼</button>
</form>
<div><b id="result">받은 데이터 결과 </b></div>
</div>
<script>
function send() {
$.ajax({
type: "POST",
url: "/test/sendData",
data: {
data: "보낸 데이터"
},
async: false,
success: function(data) {
var result = $("#result");
result.html(data);
return true;
},
error: function () {
alert("error");
return false;
}
});
}
</script>
</body>
위와 같은 코드는 그냥 페이지가 넘어간다.
form 밖으로 빼거나 태그를 없애면 된다.
사용해야 한다면 form data를 serialize 하여 보내면 된다. ( $("form").serialize(); )
'Web > Spring Boot' 카테고리의 다른 글
Spring Boot Server-Sent Events(SSE) 실시간 이벤트 (0) | 2023.10.29 |
---|---|
jsch 오류 com.jcraft.jsch.JSchException: Algorithm negotiation fail (0) | 2023.10.20 |
JPA 데이터베이스 초기화 전략 (0) | 2021.07.02 |
Ajax 데이터 Controller 전달 (0) | 2020.12.03 |
Schema-validation Exception (0) | 2020.12.02 |