ㅋㅋㅋ 태그에 입력하는 게 점점 늘어나네 ㅋㅋ 회원가입 페이지를 만들었따..! 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파일 생성, 메인 페이지에서 각 페이지로의 연결 등의 작업은 순서가 크게 중요하지 않음.