본문 바로가기
SPRING

HttpServletRequest,RequestParam,ModelAttribute

by brilliant-growth 2023. 11. 13.

요약해서 말하자면, @RequestParam은 1:1매핑, @ModelAttribute은 객체 매핑을 할 때 사용한다.

 

HttpServletRequest

 

-getParameter

@controller
public class MvcController{

      @RequestMapping("/mvc.do")
       public String mvcInit(HttpServletRequest req){
            String value = req.getParaMeter("name");
            return "board/index";
      }
}

 

getParameter는 key-value 형태로 전달된 하나의 파라메터를 받는 메서드이다

key값을 인자로 전달하면 하나의 value값을 반환한다.

view에서 mvc.do를 키값으로 받아 value값을 view단인 /WEB-INF/views/boar/index.jsp로 반환

 

 

-getParameterValues

@Controller
public class MvcController{

          @RequestMapping("/mvc.do")
          public String mvcInit(HttpServletRequest req){
                 String[] value = req.getParaMeter("name");
                 return "board/index";
          }
}

 

하나의 key와 연결된 모든 value 값을 배열의 형태로 반환한다.

 

 

-getParameterNames

@Controller
public class MvcController {
        
    @RequestMapping("/mvc.do")
    public String mvcInit(HttpServletRequest req) {
        // 모든 key 값들을 반환함
            Enumeration<String> names = req.getParameter();
        // 다음 값이 있다면 실행
        while(names.hasMoreElements()) {
            // 다음 값으로 넘어감
            String name = names.nextElement();
            System.out.println(name);
        }
        
            return null;
    }
}

 

getParameterNames는 전달된 모든 key 값들을 Enumeration이라는 배열과 비슷한 형태로 반환합니다배열과 같이 순회를 하기 위해서는 hasMoreElements 메서드로 다음 값이 존재하는지 확인을 해주고 nextElement 메서드로 다음 값으로 접근하여 순회합니다.

 

 

RequestParam

@Controller
public class MvcController{
       @RequestMapping("/mvc.do")
       public String mvcInit(
  
       @RequestParam String str1,
       @RequestPram HashMap<String, Object> map,
       @RequestParam("str2") String g,
        string str3
        )

        {
        model.addAttribute("str1",str1);
        model.addAttribute("str2",g);
        model.addAttribute("str3",str3);
        return "board/index";
        }
}

 

-지정하지 않아도 기본적으로 @RequestParam 처리가 된다.

-from 태그의 속성과 통일하면 @RequestParam의 매개변수로 지정하지 않아도 되지만, 속성과 매개변수의 이름이 다르면 매개변수를 지정을 해 줘야한다.

-map 형태의 변수에 붙여주면 모든 key-value값을 받을 수 있다

 

value, required,defaultValue 속성

@RequestParam(value= "change",required = "true",defaultValue ="none")

-value 속성으 키이름 지정가능

-required 속성은 파라메터의 필수여부를 지정,true이면 꼭 파라메터가 전달되어야하고 아니면 오류 발생

-defaultValue 속성은 파라메터가 전달되지 않았을 때 사용할 문자열을 지정 할 수 있다.

 

 

ModelAttribute 객체에 붙이는 어노테이션으로써 객체의 필드에 value값을 매칭해 파라미터 값을 저장할  있습니다.

@Controller
public class MvcController {
        
    @RequestMapping("/mvc.do")
    public String mvcInit(@ModelAttribute BoardVO boardVO) {
            
        boardVO.getNumber(); // number값 반환
            return null;
    }
}

@ModelAttribute가 붙은 BoardVO 객체에 number라는 필드가 있으면 key=number, value=1이라는 파라미터를 받아 value 1 값을 저장합니다이때 BoardVO 객체에는  필드에 대한 getter, setter 존재해야 합니다.

 

 

출처)

https://lifejusik1004.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-HttpServletRequest-RequestParam-ModelAttribute%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%EB%B0%9B%EA%B8%B0?category=845426

'SPRING' 카테고리의 다른 글

로그인시 사용하는 HttpServletRequest와 HttpSession  (0) 2023.11.13
ModelAttribute,RedirectAttributes  (0) 2023.11.13
Model,ModelMap vs ModelAndView  (0) 2023.11.13
CDN  (0) 2023.07.10
SpringBoot에서 JSP 사용  (0) 2023.07.10