데이터 객체로 변수를 줄이기


안녕하세요.
고코더 입니다. 


이전 시간에 파라미터 데이터를 VIEW로 전달을 해봤습니다.
기초적인 예제였는데요.


하지만 실무에서는 소스 길이기 갈게 나오지 않게 스프링에 장점을 살려서 변수를 클래스에서 가져오는 방법을 씁니다.
스프링은 커맨드 객체를 사용할 수 있도록 규칙이 설정되어 있으며 변수만 담아주면 이전 시간에 했던 소스를 간단하게 개발해 view에 전달할 수 있습니다.
소스를 함께 개발하면서 이 부분을 살펴보겠습니다
역시 이전 소스를 활용합니다.


 1. Gocoder.java 작성


 1-1. 클래스 파일을 생성합니다. 처음 생성하는 분들이 있으실텐데요
해당 프로젝트 팩키지로 마우스 오른쪽 버튼을 눌러 
new -> Class를 클릭 합니다. 

 
 1-2. Gocoder라는 이름으로 생성하였습니다.


 1-3. 그리고 아래처럼 변수를 세팅했습니다.
private만 작성하고 세터,게터를 작성하면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package net.gocoder.hello;
public class Gocoder {
     private String name;
     private String blog;
     private String homepage;
     
     public String getName() {
           return name;
     }
     public void setName(String name) {
           this.name = name;
     }
     public String getBlog() {
           return blog;
     }
     public void setBlog(String blog) {
           this.blog = blog;
     }
     public String getHomepage() {
           return homepage;
     }
     public void setHomepage(String homepage) {
           this.homepage = homepage;
     }
}
cs




 2. HomeController.java 수정


 2-1. 그 다음 HomeController.java를 수정합니다. 
기존에 만들었던 방식은 모두 주석 처리 합니다. 
그리고 아래처럼 새롭게 코딩을 합니다. 
1
2
3
4
5
@RequestMapping(value = "/gocoder/view", method =  RequestMethod.GET)
public String gocoderView(Gocoder gocoder) {
 
return "gocoder/view";
}    
cs

 2-2. 소스설명
기존에 저랑 함께 만들었던 소스를 주석처리 하지 않으면 오류가 납니다.
그리고 이게 전부입니다. 스프링이 생략이 많아 이해가 안되실지 모르겠지만
그냥 이렇게 하면 자동으로 맵핑 되는구나라고 생각하시면 됩니다.

55번 라인 
    - 동일하게 URL을 지정합니다
56번 라인
    - Gocoder 라는 클래스명을 gocoder로 생성합니다.
58번 라인
    - 뷰에 전달합니다.


 3. view.jsp HTML 추가


 3-1. 데이터 객체를 사용하면 el 태그에서 변수를 가져올때 배열 방식으로 가져와야 합니다.
gocoder라는 객체에 배열로 담겨 있고
배열 주소로 접근해야 합니다.
1
2
3
4
5
6
7
<h1>이름</h1>
<p>${gocoder.name}</p>
<h1>블로그</h1>
<p>${gocoder.blog}</p>
<h1>홈페이지</h1>
<p>${gocoder.homepage}</p>
 
cs

 3-2. 소스설명

25,27,29 라인
    - 대이터 객체 gocoder 안에 담긴 내용을 하나씩 가져 옵니다.



 4. 결과화면


 4-1. 2번 커맨드 객체 방식을 가져옵니다.


 4-2. 소스에 양을 비교해보세요.
오른쪽 버전도 충분히 서블릿 jsp에 비해 소스양은 줄었지만
데이터 객체를 사용한 버전은 정말 단순해졌습니다.



마무리


스프링에 묘미 입니다.





댓글을 달아 주세요