kkkyuhyun / Spring

0 stars 0 forks source link

이슈3. 스프링 MVC Controller #3

Open kkkyuhyun opened 1 month ago

kkkyuhyun commented 1 month ago

✅Controller method가 제대로 불러오지 못할 때 404 에러

✅return 결과에서 view의 이름이 없다고 나올 때 404 에러

kkkyuhyun commented 1 month ago

⚠Dispatcher Servlet을 통해서 특정 경로를 통해서 들어오는 것을 잘 Mapping 해주는 것이 핵심이다.

⚠ServletConfig.java ✔ Controller가 위치한 Package가 잘 등록되어 있어야 한다. Controller.java ✔url 매핑이 처리할 목적으로 메소드를 호출하고 Service ✔분리하고 서비스화 시킨다. ✔view단으로 넘겨준다. - forward 방법과 redirect 방법 forward 방법: jsp 파일과 이름만 넘긴다. 왜냐하면 prefix 처리와 suffix 처리가 되기 때문이다 redirect 방법: redirect로 나오고 시작된다. view로 처리를 해준다.

⚠GetMapping() /RequestMapping()/ PostMapping()

  1. ✔Get 접속 테스트 Get/Request가 다 있을 때:
    ✔Get이 없을 때 ✔Request 순서를 앞으로 당겨서 테스트 해 볼 것!
  2. Put 테스트: RequestMapping()은 전체
kkkyuhyun commented 1 month ago

✔Controller가 url 접근 시도(HTTP 요청) Dispatcher가 url 정보를 확인하여 필요한 Controller 보내기 Controller가 [url+HTTP Method]와 일치하는 Mapping 정보가 있으면 메서드를 실행한다

✔HTTP Method +URL 정보를 정확한 요청에 따른 처리 메소드를 호출한다 (Service)실행문 return (forward/redirect/other..) HTTP Method + URL 정보를 정확히 Controller 처리 메소드를 찾기 @GetMapping @PostMapping @DeleteMapping @RequestMapping이 Controller 클래스 상단에 해당 URL을통해서 공통으로 가진 모든 것들이 들어온다.

http://localhost:8080/board/* : url정보를 통해서 /board이면 해당 Controller에서 찾는다 http://localhost:8080/board/list + GET Controller 진입한다 @RequestMapping("/board"))해서 @GetMapping("/list") 또는 @RequestMapping의 경로가 "/list"인 것을 찾아서 메소드를 실행한다 ⚠주의! 없으면 404 에러가 뜬다! view 파일이 없을 때 http://localhost:8080/board/list + POST Controller에 진입 @RequestMapping("/board"))해서 @PostMapping("/list") 새로고침 막아야 한다. redirect -> url이 변경된다. 브라우저 기준으로 form 태그이다

return 처리하는 방법 void 타입의 경우 : 실제로 리턴이 안되는 것이 아니라 url 정보와 동일한 경로의 .jsp를 찾아서 반환한다 - forward방식 string타입의 경우 : void처럼 동일하게 명시하거나 다른 경로도 입력 가능 , redirect 경우 "redirect:[url 정보]" 다시 controller에 진입할 경로 를 보내서 요청하도록 유도한다. ResponseEntity : json 데이터 쉽게 처리하는 경우 HTTP 통신 Status/ Header/ Body등을 빌더 패턴을 사용해 손쉽게 처리한다.

kkkyuhyun commented 1 month ago

@RestController

@GetMapping : Read(Select) URL을 요청한다 그리고 옵션 특정 데이터와 파라미터 외부에서 데이터가 들어오겠다. @PostMapping: Create(Insert) URL을 요청한다 => Data(DTO와 VO) HTTP BODY => 파라미터 @PutMapping: Update(Update) URL을 요청한다 특정Data 주로 PK와 Data (DTO와 VO) HTTP BODY 파라미터가 들어온다 @DeleteMapping: Delete(Delete) URL을 요청한다 특정Data를 주로 PK로 파라미터가 들어온다.