Spring 실습

Spring 실습 13일차(모델을 통한 데이터 전달)

choco2706 2024. 5. 9. 17:40

1. read01

MemberController에서 진행한다.

// 요청 URI : /read01
// Model 객체를 통해서 다양한 데이터를 뷰(View)에 전달
@GetMapping("/read01")
public String read01(Model model) {
   model.addAttribute("userId","hongkd");
   model.addAttribute("password","1234");
   model.addAttribute("email","test@test.com");
   model.addAttribute("userName","홍길동");
   model.addAttribute("birthDay","1989-09-07");

   return "read01";
}

 

model로 담긴 데이터를 read01.jsp로 보낼 수 있다.

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h3>Result</h3>
<p>userId : ${userId}</p>
<p>password : ${password}</p>
<p>email : ${email}</p>
<p>userName : ${userName}</p>
<p>birthDay : ${birthDay}</p>

/read01 페이지 접속 결과

 

2. read02

private String email;
private String birthDay;
private Date dateOfBirth;

 

VO에 위와 같이 추가해주고

// 요청 URI : /read02
// Model 객체를 통해서 다양한 데이터를 뷰(View)에 전달
//Model 객체에 자바빈즈 클래스 객체를 값으로만 전달할 때는 뷰에서
//참조할 이름을 클래스명의 앞글자를 소문자로 변환하여 처리함
@GetMapping("/read02")
public String read02(Model model) {
   Member member = new Member();

   member.setUserId("hongkd");
   member.setPassword("1234");
   member.setEmail("test@test.com");
   member.setUserName("홍길동");
   member.setBirthDay("1989-09-07");

   Calendar cal = Calendar.getInstance();
   cal.set(1988, 10, 7);

   member.setDateOfBirth(cal.getTime());

   model.addAttribute("member", member);

   return "read02";
}

 

 

Controller를 작성하고, 그 후 read02.jsp를 만들어준다.

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%-- <p>${member}</p> --%>
<p>userId : ${member.userId}</p>
<p>userName : ${member.userName}</p>

실행 결과

 

member에 담긴 데이터들을 꺼내올 수 있다.

 

※ addAttribute를 아래와 같이 설정하면

model.addAttribute("user", member);

jsp에서 불러올때도 ${user.VO 변수명}으로 불러와야 한다.

 

3. 배열과 컬렉션을 전달

@GetMapping("read03")
public String read03(Model model) {
   String[] carArray = {"ssab","audi"};

   List<String> carList = new ArrayList<String>();
   carList.add("ssab");
   carList.add("audi");

   String[] hobbyArray = {"Music","Movie"};

   List<String> hobbyList = new ArrayList<String>();
   hobbyList.add("Music");
   hobbyList.add("Movie");

   model.addAttribute("carArray", carArray);
   model.addAttribute("carList", carList);

   model.addAttribute("hobbyArray", hobbyArray);
   model.addAttribute("hobbyList", hobbyList);

   return "read03";
}

 

carArrat, carList, hobbyArray, hobbyList를 받아보자.

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h4>hobbyArray</h4>
<!-- hoddyArray -->
<c:forEach var="hobby" items="${hobbyArray}" varStatus="stat">
    <!-- index는 0부터 시작 -->
    <p>${stat.index} : ${hobby}</p>
</c:forEach>
<hr />

<h4>hobbyList</h4>
<!-- hoddyList<String> -->
<c:forEach var="hobby" items="${hobbyList}" varStatus="stat">
    <!-- count는 1부터 시작 -->
    <p>${stat.count} : ${hobby}</p>
</c:forEach>
<hr />

<h4>carArray</h4>
<!-- caryArray -->
<c:forEach var="car" items="${carArray}" varStatus="stat">
    <!-- index는 0부터 시작 -->
    <p>${stat.index} : ${car}</p>
</c:forEach>
<hr />

<h4>carList</h4>
<!-- carList<String> -->
    <c:forEach var="car" items="${carList}" varStatus="stat">
    <!-- count는 1부터 시작 -->
    <p>${stat.count} : ${car}</p>
</c:forEach>

실행 결과

 

4. 중첩된 자바빈즈

@GetMapping("read04")
   public String read04(Model model) {
	   
	   Member member = new Member();
	   
	   Address address = new Address();
	   address.setPostCode("080908");
	   address.setLocation("Cheonan");
	   
	   member.setAddress(address);
	   
	   List<Card> cardList = new ArrayList<Card>();
	   Card card1 = new Card();
	   card1.setNo("123456");
	   card1.setValidMonth("05/24");

	   Card card2 = new Card();
	   card2.setNo("654321");
	   card2.setValidMonth("06/24");
	   
	   cardList.add(card1);
	   cardList.add(card2);
	   
	   member.setCardList(cardList);
	   
	   Calendar cal = Calendar.getInstance();
	   cal.set(2000, 05, 07);
	   member.setDateOfBirth(cal.getTime());
	   
	   model.addAttribute("member",member);
	   
	   return "read04";
   }

 

member의 address와 cardList를 받아와본다

 

는 내일 이어서 작성하겠음(수업 진도가 여기서 끝나버림...)