[jsp] 다른 JSP 파일 포함

현재 JSP를 배우려고합니다. 내 질문은 현재 다음을 사용하여 페이지의 머리글과 바닥 글을 포함하는 데 사용되었습니다.

<%@include file="includes/header.jsp" %>

<%@include file="includes/footer.jsp" %>

그러나 이제 페이지 내용도 분리했습니다. 따라서 사용자가 제품과 같은 페이지를 클릭하면 다음 위치에있는 JSP 파일을로드해야합니다. includes/pages/products.jsp
따라서 사용자 링크는 다음과 같습니다 <a href="index.jsp?p=products">Products</a>.

따라서 p 값을 가져 와서 페이지를 표시해야합니다.

다음은 내가 지금까지 한 일입니다.

<%
 if(request.getParameter("p")!=null)
 {
   String p = request.getParameter("p");
%>

<%@include file="includes/page_name.jsp" %>

<%
 }
%>

그렇다면 변수 “p”의 값을 “page_name”의 위치에 어떻게 배치합니까?

아니면 사용할 수있는 다른 방법이 있습니까?

PHP에서는 include()or를 사용할 수 있습니다 include_once(). 이 JSP에 조금 갇혀 있습니다. 🙁



답변

당신이하고있는 일은 정적 포함입니다. 정적 포함은 컴파일 타임에 해결되므로 실행시에만 알려진 매개 변수 값을 사용하지 않을 수 있습니다.

필요한 것은 다음과 같습니다.

<jsp:include page="..." />

스크립틀릿 대신 JSP EL을 사용해야합니다. 또한 index.jsp로 중앙 컨트롤러를 구현하고있는 것 같습니다. 대신 서블릿을 사용하여이 서블릿에서 적절한 JSP로 디스패치해야합니다. 또는 Stripes 또는 Spring MVC와 같은 기존 MVC 프레임 워크를 사용하십시오.


답변

그런 매개 변수를 사용할 수 있습니다

<jsp:include page='about.jsp'>
    <jsp:param name="articleId" value=""/>
</jsp:include>

about.jsp에서 매개 변수를 사용할 수 있습니다

<%String leftAds = request.getParameter("articleId");%>


답변

Include 지시문을 사용할 수 있습니다

<%
 if(request.getParameter("p")!=null)
 {
   String p = request.getParameter("p");
%>

<%@include file="<%="includes/" + p +".jsp"%>"%>

<%
 }
%>

또는 JSP 포함 조치

<%
 if(request.getParameter("p")!=null)
 {
   String p = request.getParameter("p");
%>

<jsp:include page="<%="includes/"+p+".jsp"%>"/>

<%
 }
%>

다른 것은 include 지시문이 변환 단계 동안 파일을 포함한다는 것입니다. JSP 포함 조치에는 페이지 요청시 파일이 포함되는 반면

물건을 조작하는 컨트롤러로 Spring MVC Framework를 권장합니다. 매개 변수 대신 url 패턴을 사용하십시오.

예:

www.yourwebsite.com/products

대신에

www.yourwebsite.com/?p=products

이 비디오보기 Spring MVC Framework


답변

페이지 변환시 include 지시문에 제공된 파일의 컨텐츠는 JSP include 지시문이 사용되는 위치에있는 그대로 ‘붙여 넣기’됩니다. 그런 다음 소스 JSP 페이지가 Java 서블릿 클래스로 변환됩니다. 포함 된 파일은 정적 자원 또는 JSP 페이지 일 수 있습니다. 일반적으로 JSP include 지시문은 머리글 배너 및 바닥 글을 포함하는 데 사용됩니다.

jsp 파일 포함 구문 :

<%@ include file="relative url">

<%@include file="page_name.jsp" %>


답변

1.<a href="index.jsp?p=products">Products</a> 사용자가 제품 링크를 클릭하면 products.jsp를 직접 호출 할 수 있습니다.

나는 매개 변수 값과 동일하게 JSP 파일의 이름을 유지할 수 있음을 의미합니다.

<%
 if(request.getParameter("p")!=null)
 {
   String contextPath="includes/";
   String p = request.getParameter("p");
   p=p+".jsp";
   p=contextPath+p;

%>

<%@include file="<%=p%>" %>

<%
 }
%>

또는

2. 키, 값 쌍으로 외부 리소스 파일을 유지할 수 있습니다. 아래처럼

products : products.jsp

customer : customers.jsp

속성 파일에서 JSP 파일 이름을 프로그래밍 방식으로 검색 할 수 있습니다.

이 방법으로 JSP 파일의 이름을 쉽게 변경할 수 있습니다


답변

내가 사용 후 이유로 나는 아직 이해하지 못하는 <%@include file="includes/footer.jsp" %>내에서 index.jsp같은 다른 JSP 파일에 다음 register.jsp내가 사용했다 <%@ include file="footer.jsp"%>. 전체 경로를 더 이상 사용할 필요가없는 것처럼 STS는 초기 경로를 저장했습니다.


답변