Study/SPRING FRAMEWORK

model 을 보기좋게 정렬하기(modelandview forEach)

Answer Choi 2015. 2. 12. 12:14
반응형



저번 포스팅(Mybatis 이용하여 Spring 에서 MySql 이용하기)에서 는 DB에서 읽어온 데이터들이 

 

하나의 스트링형태로 뿌려줘서 쭈욱 길게 나왔던걸 보실 수 있습니다.


하지만 가독성이 너무 떨어지기 때문에 table을 만들어서 보기 좋게 보려고 합니다.


일단 MySql에 이렇게 넣었습니다.





그리고 그 전처럼 코딩을 했더니 웹브라우저에서 이렇게 보입니다.



 


HomeController.java를 보시면 아래와 같습니다.


기본 되있는데로 한거죠.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
       
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
       
        String formattedDate = dateFormat.format(date);
       
        model.addAttribute("serverTime", formattedDate );
       
        List<HashMap<StringString>> outputs = sqlSession.selectList("userControlMapper.selectSample");
        model.addAttribute("showDB", outputs);
        return "home";
    }
cs


그래서 이렇게 바꿔줍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 @RequestMapping(value = "/", method = RequestMethod.GET)
    public ModelAndView home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
       
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
       
        String formattedDate = dateFormat.format(date);
       
        model.addAttribute("serverTime", formattedDate );
       
        List<HashMap<StringString>> outputs = sqlSession.selectList("userControlMapper.selectSample");
        ModelAndView mav=new ModelAndView("home","m" , outputs);
        return mav;
    }
cs


차이가 보이시나요?


Line 2 : 일단 반환값이 String이 ModelAndView로 바뀌었습니다.



Line 13 : Model 객체에  showDB라는 이름으로 outputs이라는 List를 넣어줬던걸 ModelAndView 객체에 넣어줬습니다.


Line 14 : 따라서 반환값에도 차이가 있죠?


그리고 View인 home.jsp로 가보겠습니다.


기존 코드


1
2
3
4
5
6
7
8
9
<body>
<h1>
    Hello world!  
</h1>
 
<P>  The time on the server is ${serverTime}. </P>
<p> This is my Database </p>
${showDB}
</body>
cs


기존 컨트롤러에서 보낸 List 타입의 showDB를 그대로 뿌려줘서 String 형태로 그대로 나왔었습니다.


이 부분을 forEach를 써서 바꿔보겠습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<table border="1">
    <tr>
        <td>번호</td>
        <td>Vrms</td>
        <td>Irms</td>
        <td>Watt</td>
        <td>Pf</td>
        <td>Wh</td>
        <td>Date</td>
    </tr>
    <c:forEach var="mo" items="${m}">
    <tr>
        <td><c:out value="${mo.id}"></c:out></td>
        <td><c:out value="${mo.Vrms}"></c:out></td>
        <td><c:out value="${mo.Irms}"></c:out></td>
        <td><c:out value="${mo.Watt}"></c:out></td>
        <td><c:out value="${mo.Pf}"></c:out></td>
        <td><c:out value="${mo.Wh}"></c:out></td>
        <td><c:out value="${mo.date}"></c:out></td>
    </tr>  
    </c:forEach>
</table>
cs

 

Line 9 : 컨트롤러에서 model 'm'이라는 이름으로 ModelAndView에 넣었었는데요. 


이 'm'을 변수 'mo'에 넣어줍니다.


그리고 테이블을 만들어서 제목을 넣어주고요.


mo에서 세부 항목을 빼옵니다.


mo.id, mo.Vrms 등등 이렇게요.


그리고 뷰를통해 보면



이렇게 보기좋게 나온답니다.





 



 

 

반응형