ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 MVC 커맨드 객체란 ??
    Spring 2020. 4. 3. 16:05
    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
Designed by Tistory.