(05)

정적 컨텐츠만을 위한 html 파일은 resouces::static 하위에 생성한다. 여기서 동적 프로그래밍은 불가.

 

정적 컨텐츠 hello-static.html이 불려오는 과정

->

localhost:8080/hello-static.html 요청이 들어오면 우선 @Controller에서 @GetMapping("hello-static")이 있는지를 찾는다.

이 과정에서 관련 Controller를 찾지 못할 경우 resoures: static/hello-static.html을 찾아 정적 컨텐츠를 반환한다.

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

(06)

@RequestParam("~~")은 쿼리스트링의 명확한 입력을 위해 사용한다.

 

1. @RequestParam을 쓰지 않아도 쿼리스트링으로 받은 값을 사용할 수 있다.

-> 쿼리스트링 : ~~?name=asdf,   public String helloMvc(String name)  이 경우 String name에 asdf이 전달됨.

-> 단, 쿼리스트링의 key값이 String name과 다를 경우(name이 아닐 경우) String name에는 null이 전달됨.

->ex,       ~~?nme=asdf,  public String helloMvc(String name) -> String name == null

 

 

2. 영한님의 두번째 답변처럼(www.inflearn.com/questions/110832) @RequestParam 뒤에 오는 String name은 컴파일 이후 변수명이 변경되어 혼동을 초래할 수 있음. 이를 방지하기 위해 @RequestParam("name")으로 쿼리스트링의 key값은 name이라는 것을 명확하게 표현.

-> @RequestParam("name")을 사용했을 경우 쿼리스트링에서는 반드시 ~~?name=asdf으로 사용하여야 함.

-> 만약 @RequestParam("name") String nme 이 상황에서 ~~~?nme=asdf으로 받으면 에러 발생. RequstParam을 썼으면 반드시 RequestParam과 key값을 맞춰야 함.

-> RequestParam없이 그냥 String name만 했을 때는 이름을 다르게 받으면 그냥 null값이 전달되었으나 RequestParam을 사용했을때 이름을 다르게 받으면 null전달이 아니라 에러가 뜨는 이유?

-> 이건 본인의 추측인데 아마 RequestParam은 key값을 명확하게 하기 위한 용도로 명시된 key값을 반드시 사용해야만 한다는 강제성을 부여하는듯. 반드시 사용해야하는 key값을 사용하지 않았기 때문에 null전달이 아니라 에러 발생한 것.

(추측이 아니라 팩트 맞네요. @RequestParam의 required 변수의 기본값이 true였네요.)

 

 

3. @RequestParam 안에 다른 매개변수들이 들어올 수도 있음. 

-> @RequestParam(name, defaultValue, required, value)

-> name : 강의에서 사용한 파라미터

-> defaultValue : name이 전달되지 않을 경우 전달해줄 기본값

-> required : name 값의 강제성 여부 (디폴트는 true)

-> value : name과 같은 역할을 하는 name의 alias. 단, name과 value를 동시에 쓸 수 없음. (value는 굳이 왜 만들어 놓은 것인지..?)

 

 

@RequestParam에 대한 추가 정보를 얻은 '뉴렉쳐'님의 유튜브 영상 링크를 공유합니다.

https://www.youtube.com/watch?v=aBTbtFLScC0&list=RDCMUC5-ixpj8DioZqmrasj6Ihpw&index=9&ab_channel=%EB%89%B4%EB%A0%89%EC%B2%98

https://www.youtube.com/watch?v=NlUvvtCe-6I&list=RDCMUC5-ixpj8DioZqmrasj6Ihpw&index=1&ab_channel=%EB%89%B4%EB%A0%89%EC%B2%98

 

 

 

 

출처 : www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

+ Recent posts