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";
}
'몰아 넣기' 카테고리의 다른 글
apache-tomcat 설치 및 설정 (0) | 2021.07.28 |
---|---|
JDK 초기 환경설정 (0) | 2021.07.28 |
eclipse & JDK & Apache Tomcat 설치 파일 (0) | 2021.07.28 |
(JAVA / Spring/Mapper) <![CDATA[]]> 사용하기 (0) | 2021.07.27 |
- 이클립스(Eclipse) 다운로드 및 설치하기 (0) | 2021.07.27 |