
ㅋㅋㅋ 태그에 입력하는 게 점점 늘어나네 ㅋㅋ 회원가입 페이지를 만들었따..! JSP 파일에 입력한 게 브라우저에 뜨고 거기서 입력한 게 테이블에 들어가다니 신기해서 기절함 ㄴㅇㄱ
POST 방식으로 데이터를 전송한 페이지에서 새로고침을 하면 500 코드가 반환되며 에러가 발생함. (같은 데이터를 다시 제출했기 때문) 500 에러는 생기지 않도록 해야 하며, 발생하더라도 메시지(DB 내부 정보)가 노출되지 않도록 해야 함
[해결책1] post에서 새로고침 금지
[해결책2] 새로고침해도 문제가 없도록 구조를 개선 ✅
포켓몬스터를 등록하는 예제에서 redirect 처리를 하면 아래와 같음

//Controller.java
@GetMapping("/insert")
public String insert() {
return "pocketmon/insert";
}
@PostMapping("/insert")
public String insert(@ModelAttribute PocketMonsterDto dto) {
//DB insert
pocketMonsterDao.insert(dto);
//insert_success 매핑으로 redirect(강제이동) 처리
return "redirect:insert_success";
}
@RequestMapping("/insert_success")
public String insertSuccess() {
return "pocketmon/insertResult";
}
브라우저에서 개발자 도구를 통해 HTTP 상태 코드를 확인해보면 아래와 같음


클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.고객을 클라이언트, 상담원을 서버, URL을 통해서 서버의 자원에 접근한다고 생각하고 각 방식을 아래 상황에 비유할 수 있음
//Redirect
1. 고객이 고객센터로 상담원에게 100번으로 전화를 건다.
2. 상담원: 고객님 해당 문의 사항은 200번으로 다시 문의해주세요.
3. 고객은 다시 200번으로 문의해 일을 처리한다.
//Forward
1. 고객이 고객센터로 상담원에게 100번으로 전화를 건다.
2. 상담원은 해당 문의사항에 대해 전문적인 지식을 갖춘 다른 상담원에게 문의해 답을 얻는다.
3. 상담원이 고객에게 답을 전달해 문의사항을 처리한다.
URL에 변화가 생김URL 요청이 바뀌지 않음Spring Boot에서 데이터 등록하는 페이지를 구현하는 과정을 정리함. DAO와 DTO가 먼저 준비되면 Controller, JSP파일 생성, 메인 페이지에서 각 페이지로의 연결 등의 작업은 순서가 크게 중요하지 않음.