2011-12-12 5 views
1

URL에 응답 한 다음 일반적인 MVC 패턴으로 JSP로 전달하는 서블릿이 있습니다. 가 직접 액세스 할 수 있도록JSP 개인 서블릿 포함하기

head.jsp은 WEB-INF 내부에 배치 head.jsp에 포함이되는 JSP에 있도록

많은 페이지가 같은 페이지 헤드를 공유 할 수 있습니다.

이제 헤드에 컨트롤을 추가해야합니다. 대신 WEB-INF/head.jsp로 전달하고 스크립틀릿을 넣는 대신 서블릿으로 전달하고 싶습니다.

이 서블릿에 직접 액세스하지 않으려는 서블릿을 URL에 매핑하지 않고 JSP에서 서블릿으로 전달할 수있는 방법은 무엇입니까?

또 다른 방법은 직접 액세스에서 그것을 숨길 수있는 WEB-INF와 동일한 서블릿입니까? 그래서 서블릿은 include를 통해서만 호출 될 수 있습니까?

답변

1

대신 WEB-INF/head.jsp로 전달하고 스크립트 렛을 넣는 대신 서블릿으로 전달하고 싶습니다.

실제로이 작업을 수행 할 수 있습니다 (<jsp:include> 또는 작은 스크립트 릿을 사용하여 발송합니다). 그러나 실제로 이것이 최선의 방법인지는 확실하지 않습니다. 서블릿은 응답에 직접 쓰거나 JSP가 나중에 선택할 수있는 요청 범위에 데이터를 넣습니다.

현재 응답에 직접 쓰는 것이 다소 논쟁의 여지가 있지만 다른 접근 방법에서는 전혀 Servlet이 필요하지 않습니다.

관용적 인 방법은 논리가 포함 된 일부 도우미를 사용하는 것입니다. 언급 한 원래 서블릿은이 빈을 요청 범위에 넣거나 <jsp:usebean> 태그를 사용할 수 있습니다. 헬퍼 빈이 표현 언어 또는 매우 간단한 스크립틀릿을 통해 준비된 데이터를 참조하십시오.

그래서 서블릿은 include를 통해서만 호출 될 수 있습니까?

여전히이 경로를 이동하려면, 역할 뒤에 서블릿을 확보하고 head.jsp을주는 옵션이있을 수 있습니다 web.xml 파일에서 역할 실행 등 :

<servlet> 
    <servlet-name>headInclude</servlet-name> 
    <jsp-file>/WEB-INF/head.jsp</jsp-file> 
    <run-as> 
     <role-name>SYSTEM</role-name> 
    </run-as> 
</servlet> 

면책 조항 : 나는 가능한 한 방향으로 향한 자신을 시도한 적이 없습니다.

+0

빈 제안을 주셔서 감사합니다. 전체 디자인에 좀 더 생각할 필요가 있다고 생각합니다. 제대로 된 느낌이 들지 않지만 이유는 확실하지 않습니다. – user1055212

+0

또한 영감을 얻기 위해 JSF, Wicket, Spring MVC 등과 같은 기존 MVC 프레임 워크를 살펴볼 수도 있습니다. 행운을 빕니다! –