controller 에서 jsp 파일로 데이터를 전송하는  경우


1.Model

메서드의 파라미터로 Model을 추가하여 addAddtribute() 메서드로 뷰에서 사용할 데이터를 전달 한다.

 

1-1) 커맨드 객체로 Model를 이용하여 return 값에 있는 jsp로 이동후 ${} 로 memberList 라는 객체명으로 사용가능

 참고로 memberDAO 의 메소드는 db에있는 회원정보를 List<DTO>로 가져온다

	@RequestMapping(value = "/test1")
	public String test1(Model model) {
		model.addAttribute("memberList" , memberDAO.selectAllMember());
		return "폴더/파일명";
	}

2. ModelAndView 클래스 이용

ModelAndView객체를 생성하여  addObject() 메서드로 뷰에서 사용할 데이터를 전달 한다.
관용적으로 객체명으로 mv 혹은 mav로 작성한다.

 

2-1)  1-1 를 참고하여 무엇이 다른지 보면 가독성에 도움이 될 수 있습니다.

@RequestMapping(value = "/test1")
	public ModelAndView test1() {
    
		ModelAndView mv = new ModelAndView("폴더명/파일명");
        
		mv.addObject("memberList", memberDAO.selectAllMember());
		
		return mv;			// ModelAndView 객체를 반환한다

 

3. httpServeletRequest 인터페이스 이용

3-1)  1-1 , 2-1 를 참고하여 무엇이 다른지 보면 가독성에 도움이 될 수 있습니다.

	@RequestMapping(value = "/test1")
	public String test1(HttpServletRequest request) {
    
		request.setAttribute("memberList", memberDAO.selectAllMember());
		
		return "폴더명/파일명";
	}

 

 

jsp파일에서 넘겨받을 값이 많을 경우 

 만약 파라메타의 개수가 20개면 파라미터의 값을 읽어와 설정하는 코드만 최소 40줄 이상 작성해야 한다.
간단한 코드작성을 위해 사용하는 메소드


jsp에서는 

id ,pw ,name ,gender , birthY ,birthM ,birthD , birthGn , hp1 ,hp2, hp3, smsstsYn, email, emailstsYn

정도의 간단한 회원정보를 입력받도록 되어있다


1. @RequestParam Map<String,String> memberMap

 Map 인터페이스를 이용하여 요청파라미터에 접근이 가능하다.

	@RequestMapping(value = "/test1" , method=RequestMethod.POST)
	public String test1(@RequestParam Map<String,String> memberMap) throws Exception{
		
		memberDAO.join(memberMap);
		
		return "redirect:/CTV/list1";
	}

1-1)

jsp의 form에서 입력받은 값은  action = "test1" 이므로 controller의 @RequestMapping의 값인 test1의 메소드가 작동

 

1-2) 

memberDAO 에서 mapper로 이동하는 메소드가 작동

	public void join(Map<String,String> memberMap) throws Exception {
		sqlSession.insert("member.testMap", memberMap);
	}

1-3)

mapper에서 짝을 맞춰 작성 하면 db에 저장이된다 

<insert id="testMap" parameterType="Map">
 		INSERT INTO 
 				T_MEMBER
 		VALUES (
 			#{id},
 			#{pw},
 			#{name},
 			#{gender},
 			#{birthY},
 			#{birthM},
 			#{birthD},
 			#{birthGn},
 			#{hp1},
 			#{hp2},
 			#{hp3},
 			#{smsstsYn},
 			#{email},
 			#{emailstsYn})
 	</insert>

 


2. DTO(bean)을 커맨더객체로 사용하여 데이터받기

 name인 요청 파라미터의 값을 커맨드 객체(pojo)의 setter 메서드를 사용해서 커맨드 객체에 전달한다.  커맨드 객체라고 해서 특별한 코드를 작성하는 것이 아니라 pojo를 사용해주면 된다.

 

2-1)

test2(여기에 쓴다) 미리 작성된 Bean 이나 DTO 를 import 해주고 변수를 만들어준다  

@RequestMapping(value = "/test2" , method=RequestMethod.POST) 
	public String test2(MemberDTO memberDTO) throws Exception{
		
		memberDAO.join(memberDTO);
		
		return "redirect:/CTV/list1";
	}

2-2)

다음은  1-2 ~ 3 번 과 같다 DAO 에 짝을 맞춰 주고 mapper 까지 연결시켜준뒤 db에 데이터를 저장시킨다

 

 


 

jsp파일에서 특정 값만을 받아야 할 경우

요청 파라미터의 개수가 얼마 되지 않을 경우 또는 특정한 몇개만 파라미터를 할 경우


1.@RequestParam어노테이션을 사용하여 파라메타의 값에 접근 할 수 있다. 


- @RequestParam 어노테이션의 속성
name   : 파라메타의 이름을 지정한다. 
required  : 필수 여부를 지정한다. 기본값은 true이며 요청값이 없으면 익셉션이 발생한다.
defaultValue : 요청 파라미타의 값이 없을때 사용할 값을 지정한다.

 

	@RequestMapping(value = "/test3" , method = RequestMethod.POST)
	public String test3(
   		 @RequestParam(name = "id"   , defaultValue = "admin") String id ,
   		 @RequestParam(name = "pw"   , defaultValue = "0000")  String pw ,
		 @RequestParam(name = "name" , defaultValue = "admin") String name
         				)throws Exception {
		
		Map<String, String> memberMap = new HashMap<String, String>() ;

		memberMap.put("id", id);
		memberMap.put("pw", pw);
		memberMap.put("name", name);
		
		memberDAO.join(memberMap);
		
		return "redirect:/cTOv/list1";
		
	}

 

2.parameter에 직접 name값만 입력

 메서드의 파라미터에 name값을 직접 입력하여 파라메타에 접근이 가능하지만 , 가독성 향상 및 코드의 통일성을 위해 @RequestParam 어노테이션 사용을 권장한다.

	@RequestMapping(value = "/test3" , method = RequestMethod.POST)
	public String test3(String id, String pw, String name)throws Exception {
		
		Map<String, String> memberMap = new HashMap<String, String>() ;

		memberMap.put("id", id);
		memberMap.put("pw", pw);
		memberMap.put("name", name);
		
		memberDAO.join(memberMap);
		
		return "redirect:/cTOv/list1";
		
	}

 

복사했습니다!