개발군싹

[Spring]@RequestMapping() 본문

Spring

[Spring]@RequestMapping()

개발자군싹 2023. 12. 10. 13:30

@RequestMapping() 어노테이션으로 등록된 메소드는 Servlet Mapping 어노테이션과 역할이 같다.

‘example.do’ url요청 ⇒ controller의 특정 메소드 실행

  • Servlet을 이용했을 때 1개의 Servlet이 spring에서는 1개의 메소드가 그 역할을 한다.

controller 메소드에 주소 맵핑 ⇒ SpringFramework가 제공하는 어노테이션을 이용하여 맵핑(@RequestMapping())

 

⭐servlet-context.xml ViewResolver 등록

 InternalResourceViewResolver : controller 내 ReuqestMapping(bean등록) 어노테이션으로 선언된 메소드의 스트링을 반환받아 Resolver가 bean으로 등록된 파일을 찾아 있으면 해당 페이지를 반환, 없으면 404에 에러 반환한다.

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
</beans:bean>

➡️ serlvet-context.xml에 InternalResourceViewResolver를 등록하여 view 매핑주소를 찾을 수 있다.

경로 + view이름을 반환 => 자동으로 viewResolver가 jsp를 찾아서 반환 

ex. (prefix)/WEB-INF/views/+반환값+.jsp(suffix) => view가 존재한다면 스프링은  RequestDispatcher.forward() 로 화면을 전환한다.

 

요청 주소 맵핑 어노테이션 종류

@RequestMapping(”주소”) : 요청 method가 GET,POST 모두 매핑

@GetMapping(”주소”) : 요청 method가 GET 방식일 때 매핑

@PostMapping(”주소”) : 요청 method가 POST 방식일 때 매핑

@PutMapping(”주소”) : 요청 method가 PUT 방식일 때 매핑

@DeleteMapping(”주소”) : 요청 method가 DELETE 방식일 때 매핑

⇒ 어노테이션 선언위치 : 메소드 선언부 위 [또는 클래스 선언부 위 - RequestMapping() 해당]

GET : 조회 | POST : 입력 | PUT : 수정 | DELETE : 삭제

 

반환형, 매개변수, 어노테이션 알아보기

1. 반환형

1) String : 등록된 InternalResourceViewResolver가 JSP를 찾아 반환해준다.

=> /WEB-INF/views/ 제외한 (경로 + view이름(jsp이름)) 반환.

 

2) void : URL주소와 (view의 경로+이름)이 같거나, HttpServletResponse로 직접 응답을 한 경우

 

3) ModelAndView : view화면에 전달할 데이터와 view를 하나의 객체에 묶어서 ViewResolver에 전달한다. 

=> Serlvet에서 request, session, context(application)와 같이 데이터를 공유하기 위한 스프링이 제공하는 객체

 

4) 클래스타입 : 객체 자체를 응답하는 형식 -> json converter를 이용해서 변경하여 응답한다.

=> 메소드 || 반환형에 @ResponseBody어노테이션을 추가

 

 

2.매개변수

1) HttpServletRequest 

2) HttpServletResponse  

=> 1), 2) Servlet에서 사용했던 동작원리와 같다. (구현이 똑같다.) 

@RequestMapping("/example.do")
public String exampleMethod(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException

3) HttpSession : session 객체

4) java.util.Locale : 서버의 Locale정보를 저장한 객체

5) InputStream / Reader : 읽어오는 스트림 객체 (클라이언트로부터)

6) OutputStream / Writer : 보내는 스트림 객체 (클라이언트에게) -> Download

7) 기본자료형 변수 : 클라이언트가 보낸 파라미터 데이터를 저장할 변수를 선언 => 자동대입

➡️ 매개변수명을 name값과 동일하게 설정해주거나 @RequestParam을 이용해서 맵핑처리 해준다.

➡️ 타입에 맞춰 형변환 해준다.

➡️ 매개변수가 잘못된 경우 BadRequest에러가 발생한다.

8) 클래스타입 (DTO) : Data베이스와 연동해서 데이터 저장하는 객체, 자동으로 클라이언트가 전달한 parameter데이터랑 맵핑해서 객체를 생성해준다. ➡️ DTO 설정된 필드명과 데이터베이스의 컬럼명이 같아야한다. (다를경우 @RequestParam을 이용하여 필드명과 컬럼명을 매핑 할 수 있다.)

객체의 필드와 parameter의 name값이 같은 데이터 맵핑

9) java.util.Map : 클라이언트가 보낸 데이터를 Map으로 처리한다.

(모두 단일값으로만 받는다. 기본자료형만 가능 배열 x )

 

3. 매핑메소드에 사용하는 추가 어노테이션

10) @RequestHeader(name값) : 헤더정보를 가져올 수 있다.

11) @CookieValue(name값) : 쿠키에 저장되어있는 값 가져올 수 있다.

12) @ResponseBody : 객체를 응답할 때 사용하는 어노테이션 java.Class -> json

13) @RequestBody : 요청 body에 json데이터가 있으면 지정된 객체로 변환해서 저장 json -> java.Class

14) @ModelAttribute : model저장관리 -> hibernate를 이용한 validator

15) @SessionAttribute(key) : session에 저장된 특정값을 가져올 때

16) @Model, ModelAndView : view화면에 전달할 데이터와 view를 하나의 객체에 묶어서 ViewResolver에 전달한다. 

➡️ Serlvet에서 request, session, context(application)와 같이 데이터를 공유하기 위한 스프링이 제공하는 객체

'Spring' 카테고리의 다른 글

[Spring]MyBatis 연결/등록하기  (0) 2023.12.12
[Spring] 요청 데이터 매개변수를 이용한 데이터 맵핑 예제  (0) 2023.12.10
[Spring]Spring Bean?  (0) 2023.12.07
[Spring]Spring이란?  (1) 2023.12.07
Maven, Spring IDE(STS4) 설치  (0) 2023.12.05