문제

나는 서블릿에 응용 프로그램 논리를 유지하고 JSP를 가능한 한 간단하게 유지하는 열렬한 팬입니다. 그 이유 중 하나는 모든 훌륭한 웹 디자이너가 HTML 지식을 확장하여 간단한 반복, 액세스 빈 등을 수행하기 위해 몇 가지 JSTL 태그를 구축 할 수 있어야하기 때문입니다. 태그 라이브러리 (DisplayTag와 유사하지만 자체 구성 요소와 유사).

대부분의 경우 모든 것이 잘 작동합니다. 서블릿은 필요한 모든 SQL을 수행하고 JSP가 액세스 할 수있는 콩을 저장합니다. 우리가 문제가있는 곳은 우리가 액세스하고자하는 레코드가 디자인에 의해 지정되는 시점입니다.

가장 분명한 예는 홈페이지입니다. 시선을 사로 잡고 효과적이어야합니다. 사이트의 나머지처럼 균일 할 필요는 없습니다. 여기에는 특정 제품 레코드를 쿼리하려는 일회성 또는 "특별한 경우"가 많이 있습니다.

디자이너가 실제로 원하는 것은 제품 ID로 제품 Bean을 얻는 방법입니다. 우리는 분명히 모든 제품에 대해 쿼리하고 싶지 않으며 프레젠테이션에서 쿼리하고 싶지 않습니다.

나는 여기서 불가능한 것을 묻고 무언가를 포기해야한다고 확신합니다. 내 질문은 무엇입니까?

편집하다

모든 응용 프로그램 논리가 완료되어야한다고 생각하는 데 잘못된 것입니다. ~ 전에 JSP를 호출 하시겠습니까? 나는 인상을 받았으며 서블릿에서 모든 쿼리/계산/처리를 수행 한 다음 (매우) 멍청한 콩을 (매우) 멍청한 JSP로 통과시키는 것이 모범 사례로 간주되었습니다.

쿼리의 실제 복잡성이 다른 클래스 (사용자 정의 태그 또는 Bean)에서 캡슐화 될 수 있으며 JSP가 호출 할 수있는 몇 가지 방법이 있습니다. 이것은 JSP를 단순하게 유지하지만 (목표 1) JSP는 여전히 쿼리를 "트리거"하고 있습니다.

  • 내가 이것을 완전히 잘못했고 이것을하는 것은 괜찮습니다.
  • 일반적인 규칙이지만이 경우이를 수행하는 것은 완벽하게 괜찮습니다.
  • 문제가 발생할 수 있습니까?

편집 - 예제

이 예제가 도움이되기를 바랍니다.

홈페이지는 카테고리/검색 페이지와 같은 "템플릿"이 아닙니다. 마케팅 이미지와 몇 가지 특정 제품 이미지와 함께 잘 작동하도록 맞춤화되었습니다. 그러나 동적으로 얻어야하는 두 가지 제품에 대한 정보가 있습니다 (따라서 이름과 중요하게 가격)은 DB와 동기화됩니다.

서블릿은 디자이너가 변경/제거/추가하려면 JSP를 편집 해야하는 경우 (그리고 아마도 XML이 제안한대로 XML)를 편집하면됩니다.

도움이 되었습니까?

해결책

내가 올바르게 이해하면 특정 제품을 원하는 JSP에 논리가 있지만이 시점에서 DB에서 쿼리하고 싶지 않으며 서블릿이 인식하기에는 너무 늦습니다.

(부수적 참고 사항, 나는 우려의 분리를 유지하려는 당신의 의지를 존중하지만, 이것이 문제라는 사실은 프레임 워크가 프레젠테이션 층에 너무 많은 논리를 가지고 있음을 분명히 보여줍니다 ... 그러나 우리는 아마 그것을 고칠 수 없기 때문에 .. .

내 권장 사항은 디자이너가 프론트 엔드에 필요한 특별한 경우가 포함 된 구성 XML 파일을 작성하고 서블릿이 읽은 다음 멍청한 콩을 JSP로 다시 전달할 수 있습니다.

또는 ... xmlhttprequest를 사용하여 여러 요청으로 분류하고 각 개별 쿼리에 대해 서블릿으로 다시 호출 한 다음 클라이언트의 페이지를 조립합니다.

다른 팁

디스플레이와 데이터베이스 코드를 더 잘 분리 해야하는 것 같습니다. 데이터베이스와의 상호 작용을 다루는 별도의 클래스가 있어야하며 디스플레이에 대해 아무것도 모릅니다.

그런 다음 ID로 제품을 찾아 내고 콩을 반환하여 디스플레이가 원하는 속성을 끌어낼 수있는 메소드를 만듭니다.

프론트 엔드에 대한 쿼리를 수행 할 맞춤형 콩을 만들어야합니다. 실제로, 여기서 말하는 것에 따라 데이터를 얻는 것은 몇 가지 콩과 비슷할 것입니다.

디자인 관점에서 그렇게하는 데 아무런 문제가 없습니다. 홈페이지의 특정 디자인은 나머지 사이트보다 더 이질적인 요구 사항이 있다는 것입니다. 디자이너가 자신의 요구를 개발 팀에 잘 전달하여 홈페이지 (또는 무엇이든)를위한 BO를 만들어야한다는 것을 알고 있는지 확인하십시오.

JSP를 렌더링하기 전에 모든 응용 프로그램 논리가 완료되어야한다고 생각하는 데 잘못된 것은 아닙니다.

JSP에 표시를 위해 더 많은 것을 가져올 필요가 있다면 서버에 대한 또 다른 요청과 다른 페이지주기가 될 것입니다. '대화식'로딩 경험을 찾고 있다면 Ajax를 사용할 수 있습니다.

단일 페이지 수명주기에서 JSP에서 데이터베이스 호출을 호출 해야하는 이유를 이해하기가 어렵습니다. Servlet/Helper 클래스에서 데이터를 찾는 데 도움이되는 모든 필요한 양식 변수와 함께 페이지에 게시되지 않았습니까?

사례의 예를 제시 할 수 있다면 도움이 될 것입니다.

편집하다 예를 살펴보면 예, 디자이너 (또는 사이트 관리자)는 해당 정보가 JSP의 일부가 아닌 구성으로 설정해야합니다. 또는 데이터베이스에서 정보를 유지하여 이동 중에 변경할 수 있도록 작은 앱/관리 페이지가있을 수 있습니다. 홈페이지를 표시하면 구성을 읽고 적절한 데이터를로드하십시오.

질문이 무엇인지 잘 모르겠습니다. 나는 당신이 당신의 JSP 페이지에서 sql 문을 가지고 싶다면, 당신은 그것들을 속성 파일에 넣고 JSP 페이지에서 속성 파일을 읽을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top