2012-03-29 6 views
0

간단한 서블릿과 MVC 패턴을 사용하여 애플리케이션을 구축하고 있습니다. Spring과 같은 프레임 워크를 사용하지 않습니다.Servlets/MVC의 모델보기

나는 다음과 같은 몇 가지 모델 수업을 :

public class BlogPost { 

private List<Comment> _comments; 

// Things 
} 

public class Comment { 
// Code 
} 

게시물

그 컬렉션과 연관된 0 개 이상의 의견이 있습니다.

그러나보기로 전달되기 전에 BlogPost 모델에 몇 가지 추가 정보, 즉 사용자가 BlogPost에 대한 의견을 작성하면 쿠키에 설정된 값을 첨부하고 싶습니다. 엄밀히 말하자면, 이것은 BlogPost Model 자체의 일부가 아닙니다. 관련이없고 부수적 인 정보이지만, 자신을 쉽게 만들고 BlogPost 클래스에 추가하거나이를 추상화해야하는지 잘 모르겠습니다. 조금 더.

그래서, 나는이 추가로 값을 처리하기 위해 블로그 게시물 클래스에 필드를 추가해야한다, 또는 나는 JSP보기로 전달되는이의 라인을 따라 "보기 모델"해야한다 :

public class BlogPostView { 

public BlogPostView(BlogPost bp, String message) { 
    // Constructor stuff, save these to instance variables 
} 

public BlogPost getBlogPost() { /* ... */ } 
public String getMessage() { /* ... */ } 

} 

답변

0

을 HashMap 모델을 만들고 응답과 함께 전달하여 봅니다. 블로그 게시물 및 쿠키 데이터는 관련이없는 경우 model.put ("블로그"블로그) model.put ("메시지", "어떤 메시지")

1

, 그것의 쿠키 데이터를 넣어 나쁜 생각하여 BlogPost 클래스. BlogPost 클래스는 블로그 게시물이라는 것을 나타내야합니다. 다른 데이터를 연관시키는 것은 혼란 스럽습니다.

블로그 게시물과 쿠키 데이터를 하나의 객체로 전달해야하는 이유를 알고 싶지만 뷰에 전달할 클래스를 만드는 두 번째 옵션이 더 좋습니다. 모델 클래스 (예 : 스프링 MVC ModelMap)를 사용하여

request.setAttribute("blogPost",blogPost); 
request.setAttribute("cookieData",cookieData); 

: 당신은 원시 서블릿을 사용하는 경우

model.addAttribute("blogPost",blogPost); 
model.addAttribute("cookieData",cookieData); 

로보기는 JSTL을 사용하여 조작 할 수있는 데이터의 두 조각에 액세스 할 수 있습니다 또는 다른 태그 라이브러리.

제가 누락 된 것이 있으면 더 자세히 설명해 주시겠습니까?

+0

또한 인스턴스 변수에 밑줄을 붙이지 마십시오. 올바른 Java 명명 규칙이 아닙니다. :) –

+0

답장을 보내 주셔서 감사합니다. 또한 명명 규칙에 대해 알지 못했습니다. 이에 대한 조언을 위해 Java 스타일 가이드를 살펴 보겠습니다. – xingyu