Jsp頁面中動態的引入另外一個jsp,jsp:include路徑是變量的實現

1 問題描述

在頁面搭建時,會有這樣的需求,但願局部頁面動態的引用另外一個jsp。這裏的「動態」的意思引用的jsp的路徑是個變量。舉個例子,咱們但願局部頁面多是page1.jsp或者是page2.jsp。html

2 解決方案

2.1 解決方案描述

我使用的是jsp動態導入的技術實現的。動態導入的代碼以下。本文的重點是討論文件的url,能不能是個變量?
<jsp:include page="文件的url" flush="true"/>java

答案是能夠的,不過文件的url這個總體是個變量才行,我試過<%=變量%>作爲文件的url的一部分,發現是不可行的。下面的寫法是可行的。
<jsp:include page="<%=總體是個變量%>" flush="true"/>jsp

2.2 例子

舉個例子說明上面的結論。
例子:目標:在home.jsp中動態的引用page1.jsp或page2.jsp來構建home.jsp。試給出一個簡單的demo。
用到的文件目錄結構說明:
文件目錄結構.pngui

home.jsp的代碼:url

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<%    
    //一段代碼,用來肯定是加載page1.jsp仍是用來加載page2.jsp;
    {
        // ......        
    }
    
    // 假設肯定的結果是加載page2.jsp    
    String loadPageUrl = "/jsp/page2.jsp";    
%>

</head>
<body>
    
    <div>
        這裏是主頁的內容:^V^, enjoy coding......<br/><br/>
    </div>
    
    <!--
        動態的選擇加載哪一個jsp來構建本頁面;
    -->
    <jsp:include page="<%=loadPageUrl%>" flush="true"></jsp:include>
         
</body>
</html>

page1.jsp的代碼:spa

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>        

<div>
    這裏page1.jsp的內容;
</div>

page2.jsp的代碼:.net

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>        

<div>
    這裏page2.jsp的內容;
</div>

執行效果:
執行效果.pngcode

咱們能夠在<% %>的代碼片斷裏面,加上咱們的業務邏輯,來肯定加載哪一個路徑的url。htm

2.3 使用js修改路徑的思路不可行說明

我想到過用js來動態修改jsp:include的引入路徑。這個想法是不可行的。
緣由:這個是jsp加載時序的問題。jsp:include的內容最早執行。html內容的加載與js腳本的執行順序在jsp:include執行結束後執行。
顯然,這個思路是不可行的。對象

3 參考文獻

https://blog.csdn.net/user_lo... (JSP靜態導入與動態導入)
https://bbs.csdn.net/topics/6... (jsp:include能否包含變量?)
https://blog.csdn.net/qq_2103... (jsp本質,jsp靜態導入與動態導入區別,jsp九個內置對象,jsp傳值)
https://www.cnblogs.com/alter... (JSP頁面中<%!%>與<%%>與<%=%>)
https://blog.csdn.net/wzy_346... (jsp頁面中的代碼執行加載順序)

相關文章
相關標籤/搜索