Spring

spring controller, requestmapping, requestparam

Vagins 2021. 8. 3. 09:48

2021.08.03

일찍 일어나서 카페를 나왔습니다.

오늘은 annotation들 중 controller, requestmapping, requestparam 에 대해 정리해보겠습니다.

 

 

 

1. Controller

 

@Component 종류 중 하나입니다. 이 클래스가 컨트롤러 클래스임을 나타냅니다.

이 어노테이션을 사용하면 Controller로 사용됨을 spring framework에 알립니다.

 

 

2. RequestMapping

 

@Controller 이 된 클래스 하위에 @RequestMapping("/list")가 달린 함수가 있다고 가정할때,

@RequestMapping 은 url 매핑입니다. 다시말해 ( ) 안의 경로와 컨트롤러를 이어줍니다.

 

1) return void

매핑되어 있는 메서드가 return 값이 void라면 requestToViewNameResolver를 통해 정해진 view로 이동합니다.

web-inf/list.jsp view로 이동시킵니다.  이 같은 경우url과 view 이름을 통일하여 사용해야합니다. 

 

2) return string

매핑되어 있는 메서드가 return 값이 string이라면 string 값이 view의 이름으로 사용됩니다.

servlet-context.xml 를 통해 설정되어 있습니다.

prefix value = "/web-inf/";

suffinx value = ".jsp"; 

예를 들어 return "hello"; 로 끝나면 해당 함수는 web-inf/hello.jsp 로 이동합니다.

 

 

3. RequsetParam

 

@RequsetParam 은 HttpServletRequest 객체와 같은 역할을 합니다.

( Servlet 공부를 해놓길 잘했습니다. 역시 동떨어진 지식들이 연결되는 것을 느낄 때 가장 기분이 좋습니다. )

메소드의 파라미터 값으로 @RequsetParam 을 넣어주면 됩니다.

 

모델 객체와 함께 쓰는 예를 들어보겠습니다.

@RequestMapping("/my/test")

public String test( @RequestParam("id") String id, @RequestParam("pwd") String pwd, Model model ) {

    ~~>

   return "/my/test";

}

위 코드를 해석해 보겠습니다.

일단 url매핑은 /my/test로 되어있습니다.

메서드를 반환 값이 String 입니다. 위에서 설명했듯이 servlet-context.xml 에 따라서 해당 view로 이동합니다.

그 다음 메서드 파라미터를 살펴보겠습니다.

url parameter에서 "id"라는 name으로 넘어오는 값을 String id 를 선언해 넣어줍니다.

그 뒤의 "pwd"도 똑같이 넣어줍니다.

 

여기서 주의할 점은 url parameter로 넘어오는 값은 일단 String 문자열로 넘어옵니다. 하지만 spring은 넘어온 숫자 값을 선언할때 int로 선언하면 알아서 int형으로 변환해준다고 합니다.

parse.Int 였나 이거 안해도 된다는게 정말 편리합니다.  

 

@RequestParam 이 가지는 속성들을 그냥 넘어갈 수 없을것 같아 다시켜서 내용 추가합니다.

name -> parameter 로 전달되는 값을 name이라는 속성에 넣을때 사용합니다.

defaultValue -> parameter 로 전달되는 값이 없을 때, 기본값을 설정해줍니다.

required -> 기본값이 없어도 됨을 설정합니다. (boolean 타입이라 true/false로 지정해주면 됩니다.)

value -> name의 별칭입니다. (value와 name은 같이 쓰면 안됩니다.)

 

 

 

 

 

 

오늘은 어제에 이어서 다른 annotation들을 정리해봤습니다. 정말 다양한 annotation들이 많습니다.

각각 다양한 속성들까지 가지고 있으니 참 공부할게 많습니다.

 

'Spring' 카테고리의 다른 글

spring mybatis, mapper  (0) 2021.08.05
spring responsebody, get/post mapping  (0) 2021.08.04
spring component, autowired, Inject, Controller, Repository  (0) 2021.08.02
spring bean, ioc container  (0) 2021.08.01
Spring MVC  (0) 2021.08.01