web developer

[egov] @RequestMapping 속성 본문

Framework/Egovframework [spring]

[egov] @RequestMapping 속성

trueman 2022. 2. 8. 17:59
728x90
728x90

@RequestMapping 어노테이션 


요청에 대해 어떤 Controller, 어떤 메소드가 처리할지를 맵핑하기 위한 어노테이션을 말한다.


@RequestMapping 어노테이션은 Controller 단에서 사용되고 있는데,

package egovframework.board.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class BoardController {

	@RequestMapping(value="/SelectBoardList.do")
	public String SelectBoardList() throws Exception {
		
		return null;
	}
}

DispatcherServlet이 Controller파일을 찾고, 논리적 주소가 맵핑된 메서드를 찾기 위해서는

@Controller와 @RequestMapping이 작성되어야 합니다.


@RequestMapping 어노테이션을 간략하게 살펴보면, 
URL와 Controller 메소드의 매핑을 설정하는 어노테이션이며, URL 이외에도 다양한 속성을 지정할 수 있다. 

URI 템플릿 기능을 이용하면 URL속의 값을 쉽게 얻어 올 수 있다.


1. String[] value : URL 패턴을 지정하는 속성이다.


String 배열로 여러개를 지정할 수 있으며, ANT 스타일의 와일드카드를 사용할 수 있다.
{}를 사용하는 URI 템플릿을 사용할 수도 있다.

1) 기본 형태 

@RequestMapping(value="/boardList")

2) 'value=' 생략한 경우

@RequestMapping("/boardList")

3) 배열 : URL이 여러개인 경우 

@RequestMapping("{/boardList", "/pdsList"})
@RequestMapping(value = {"/boardList", "/pdsList"})

 

value 값에 .do를 붙이는 이유는 web.xml파일의 <url-pattern> 설정 때문인데, .do로 명시된 논리적 주소를 처리하겠다는 의미입니다. *.do를 사용하지 않는 경우에는 논리적 주소만 명시하면 됩니다.


2. RequestMethod[] method : HTTP 요청 메소드값이 일치해야 맵핑이 이루어진다.


- URL만 설정 시에는 get/post 둘다 가능한 상태입니다.
- GET, POST, PUT, DELETE, OPTIONS, TRACE로 총 7개의 HTTP 메서드가 정의되어 있다.


1) get/post methd 설정한 경우 

// GET
@RequestMapping(value = "/boardList", method= RequestMethod.GET)
public String executeGetOnly(...
 
// POST
@RequestMapping(value="/boardList", mehtod= RequestMethod.POST)
public String executePostOnly(...

 

2) static import 설정한 경우

import static org.springframework.web.bind.annotation.RequestMethod.*;
 
@RequestMapping(value = "/boardList", method= GET)
public String executeGetOnly(...
 
// POST
@RequestMapping(value="/boardList", mehtod= POST)
public String executePostOnly(...

 

3) Pathvariable로 파라미터 전송하기

@RequestMapping("/detail/{articleNumber}")
public ModelAndView detail(PathVariable int articleNumber) {
    ModelAndView view = new ModelAndView();
    view.setViewName("article/detail");
    view.addObject("articleNumber", articleNumber);
    return view;
}
@RequestMapping("/member/delete/{idx}")
public String del(@PathVariable("idx") int idx) {

    deleteService.memberDelete(idx);

    return "redirect:/member/memberList";
}

ex) delete?idx=12가 아닌 delete/12 


3. String[] params : 요청 파라미터와 값으로도 구분 가능하다.


- 같은 URL이라도 요청 파라미터가 useYn=Y, useYn=N으로 구분할 수 있다.
- 즉, 요청 파라미터와 값으로도 구분할 수 있다.
- 또한, String 배열로 여러개를 지정할 수 있으며, 아래와 같이 사용 가능하다.

// abc?useYn=Y 일 경우 호출됨
@RequestMapping(value="/abc", params="useYn=Y")

// not equal도 가능
@RequestMapping(value="/abc", params="useYn!=Y")

// 값에 상관없이 파라미터에 useYn이 있을 경우 호출됨
@RequestMapping(value="/abc", parmas="useYn")

// 파라미터에 useYn이 없어야 호출됨
@RequestMapping(value="/abc", params="!useYn")

// HTTP Request에는 파라미터 myParam1이 myValue값을 가지고 있고, myParam2 파라미터가 있어야 하고, myParam3라는 파라미터는 없어야 한다.
@RequestMapping(params={“myParam1=myValue”, “myParam2”, ”!myParam3”})

4. String[] headers : 헤더 값으로 구분할 수 있다.


방식은 위의 String[] params 비슷하다.

@RequestMapping(value="/post", headers="content-type=text/*")

출처 : https://heeestorys.tistory.com/350
출처 : https://joont92.github.io/spring/@RequestMapping/


 

 

728x90
728x90
Comments