본문 바로가기
Programming/Java * Spring

[Spring] 하나의 requestMapping으로 여러개의 request 받기

by 고막고막 2019. 12. 20.

스프링의 컨트롤러 단에서 구현부가 동일하거나 거의 유사한 requestMapping을 여러 개 만들어야 하는 상황이 발생한다. 이때 중복코드를 줄이기 위해 하나의 requestMapping에서 여러 요청을 처리하는 방법이 있다.

1. 먼저 요청을 병렬로 받는다.

@RequestMapping(value = {"/boardUpdateForm""/boardDelete"})
cs

 

2. 그리고 아래 문법을 사용하면 요청이 들어오는 url을 뽑아주므로 처리와 return을 다르게 하고 중복코드를 줄일 수 있다.

(String)request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
cs

 

3. 예시는 다음과 같다.

@RequestMapping(value = {"/boardUpdateForm""/boardDelete"})
public String boardUpdateForm(HttpSession session, HttpServletRequest request, ModelMap modelMap) {
    String requestUrl = (String)request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
    Map<String, Object> paramMap = new HashMap<String, Object>();
    paramMap.put("boardNo", request.getParameter("boardNo"));
    if(requestUrl.equals("boardDelete")) {
        boardService.deleteBoard(paramMap);
        return "redirect:/boardList";
    } else {
        modelMap.addAttribute("vo", boardService.selectBoardOne(paramMap));
        return "boardForm";
    }
}
cs