본문 바로가기
Spring

스프링 MVC 커맨드 객체란 ??

by 디찌s 2020. 4. 3.
728x90
반응형

*도움이 되셨다면 광고 한번 클릭 부탁드립니다! 제게 큰 힘이됩니다!

 

 

 

 

 

 

 

@RequestMapping(value="/memberlogin",method=RequestMethod.POST)
public String memberLogin(Model model,HttpServletRequest request){
String memId = request.getParameter('Id');
String memPw = request.getParameter("Pw');
}

 

스프링에서 HttpServletRequest를 통해서 HTTP 전송 정보를 얻는 방법은 위와 같다.

 

하지만 이 방법은 속성값을 끄집어내기 위한 보일러 플레이트코드(코딩에서의 Boiler plate 는 꼭 필요한 간단한 기능인데, 반복적인 코드를 필요로 하며, 이것이 중복되어 많은 양의 코드를  양산하는 것을 이야기한다.
)가 생길 수 밖에 없는 단점이 있다. 

 

그래서 스프링에서는 @RequestParam 어노테이션을 제공하여 메서드의 인수 부분에 HTTP로 들어오는 데이터를 바인딩

하여 보일러플레이트 코드를 어느정도 줄일수 있게 하였다.

 

@RequestMapping(value="/memberlogin",method=RequestMethod.POST)
public String memberLogin(Model model,HttpServletRequest request){
		@RequestParam("Id") String memId,
        @RequestParam("pw") String memPw,
        Member member = service.memberSearch(memId,memPw);
}

 

하지만 이경우에는 파라미터 수들이 많아지면 하나하나 명시해서 처리해야되서 매우 귀찮아 진다.

 

예를들어 현재는 "ID" , "PW" 만 있지만 사실 게시판을 만들때는 페이징처리하는 param 및 작성자 등등 많은것들이 

 

param값으로 넘어오는데 모든것을 일일이 적어서 파라미터로 받게하면 코드가 길어지며 가독성은 현저히 떨어 질것이다.

 

 

그래서 스프링은 커맨드 객체(Command Object)를 지원하고있는데 http 요청

파라미터의 이름을 이용한 setter 메소드

를 작성한 클래스를 만들고, 이 클래스의 객체(커맨드 객체)를 메소드의 파라미터 값으로 넣어주면  속성값들을 자동으

로 커맨드 객체에 바인딩하여 처리할수있게 만들었다.

 

예를 들어 아래와 같이 

listok.jsp가 있다고 가정할때 여기서 form을 전송하자 .

 

<form name="listform" action="/adm/bbs/selectlist.do" method="post" >
<input type="hidden" name="Id" value="dizzy">
<input type="hidden" name="Pw" value="1234">
<input type="submit" value="전송">

</form>

 

그러면 컨트롤러에서 url RequestMapping을 하여 form문이 전달되며  input data Id,Pw

 

자동적으로 BoardMasterVO Id, Pw 값에 매핑되어서

 

vo.getId , vo.getPw 를 사용하여 가져올수있다.

 

이때 주의 할점은 반드시 input 데이터와 VO 변수값이 일치하여야 

 

인식하고 자동 바인딩된다.

 

public class BoardMasterVO {
    
    /** 검색시작일 */
    private String Id = "";
    
    /** 검색조건 */
    private String Pw = "";
    
  
    
    @RequestMapping("/adm/bbs/selectlist.do")
    public String listboard(@Modelattiribute("searchVO") BoardMasterVO bvo,ModelMap model){
    
    
    	
    	BoardMasterVO vo = service.get_list(bvo);
        
        model.addAttribute("result",vo);
        
        //JSP
        return "/adm/bbs/listregist"
     }

 

 

 

728x90
반응형

'Spring' 카테고리의 다른 글

[스프링(Spring)] 스프링이란 무엇인가!? -1  (0) 2021.02.19
POJO란 도대체 무엇인가?  (0) 2020.04.22
Springframework <form:form> 이란?  (0) 2020.04.20
mybatis framework를 알아보자  (0) 2020.04.06
자바 bean ?? 클래스란  (0) 2020.04.03

댓글