2011-09-27 2 views
0

저는 JSP의 초보자입니다. 샘플 시나리오 용 웹 응용 프로그램을 개발하는 동안 이 미묘한 점을 발견했습니다. 나는 모든 분할 코드 재사용을 촉진하기다른 로그인 역할에 대한 다른 페이지

  • index.jsp를
  • 의 login.jsp (및 LoginServlet.java)

account.jsp의 :

나는 다음과 같은 페이지가 3 부분 - 메뉴 머리말, 내용, 꼬리말로 페이지.

위의 모든 페이지에서 메뉴 머리글과 바닥 글은 동일하게 유지되며 내용 만 변경됩니다. 그래서 모든 페이지에 포함될 menuandheader.jsp와 footer.jsp를 만들었습니다. index.jsp = (menuandheader.jsp + content + footer.jsp)

이제 5 가지 다른 사용자 역할이 있으므로 5 가지 인덱스 및 계정 페이지가 있습니다. (이 페이지에 대해서도 내용 영역 만 변경됨).

LoginServlet.java에 대한 Filter 클래스는 인증을 담당하고 적절한 페이지 이름을 요청 속성으로 저장합니다. (역할 # 1 등을위한 index1.jsp는) 이제 LoginServlet.java의 유일한 내용

dispatch = request.getRequestDispatcher(request.getAttribute("page").toString()); 
dispatch.forward(request, response); 

이다 그러나이 방법에서 나는 5 거의 유사한 인덱스 및 계정 페이지가 있어야합니다. 이 시나리오를 다루는 더 좋은 방법이 있습니까?

답변

0

것을 우선 보자는

  1. 는, 당신은 배포// 빌드
  2. 귀하 단단히 coupling 귀하의 비즈니스 요구 사항 (역할 기반 액세스)를 개발 필요 귀하의 구현에 요구 사항 변경에 대한 구현 변경을 일으킬 수 있습니다.

더 나은 방법은 문제를 즉시 해결하는 것입니다 (즉, 사용자 역할에 따라 리소스 액세스 제한). 당신은 여기

  1. 이 다른 자원에 대한 내용이나 하이퍼 링크의 경우, 액세스를 제한하는 역할을 바탕으로 하나 개의 index.jsp 페이지
  2. 유지 문제를 해결할 수있는 하나의 방법이며, 여러 가지 방법으로이 작업을 수행 할 수 있습니다 단지 숨길
  3. 또한 프레임 워크 (spring, struts, jsf 등)을 사용하는 benfit 수 (당신은 간단한 jsp 태그로이 작업을 수행 할 수 있습니다), 그들은 지수에 좋은 MVC 구현을
  4. 을 제공합니다.JSP,이 같은 몇 가지 일을 할 수있는, 내가

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
    
    <c:if test="${role.admin == true}"> 
        only admin could see this content 
    </c:if> 
    
    <c:if test="${role.supervisor == true}"> 
    <a href="">only supervisor's link</a> 
    </c:if> 
    
        every one can see this content 
    

난 그냥이 문제를 해결하기 위해 당신에게 간단한 방법을 준, 당신이 선택할 수 있도록 할 예에서 간단한 JSTL 태그를 사용하는 것을 최선의 선택이 것 요구 사항을 기반으로 구현을 느슨하게 결합하고 쉽게 확장 할 수 있다고 말하고 싶습니다.

+0

내 작은 응용 프로그램을 이용해 주셔서 감사합니다. 나는 JSTL 태그에 갈 것이다. – John

0

서블릿의 매개 변수 반환 값에 따라 변경된 부분을 동적으로 생성하거나 포함하려면 index.jsp에 스위치를 작성하십시오. 그런 다음 새로운 role을 추가하고 싶은 경우에 당신의 접근 방식의 단점에

관련 문제