在頁面搭建時,會有這樣的需求,但願局部頁面動態的引用另外一個jsp。這裏的「動態」的意思引用的jsp的路徑是個變量。舉個例子,咱們但願局部頁面多是page1.jsp或者是page2.jsp。html
我使用的是jsp動態導入的技術實現的。動態導入的代碼以下。本文的重點是討論文件的url
,能不能是個變量?<jsp:include page="文件的url" flush="true"/>
java
答案是能夠的,不過文件的url
這個總體是個變量才行,我試過<%=變量%>
作爲文件的url
的一部分,發現是不可行的。下面的寫法是可行的。<jsp:include page="<%=總體是個變量%>" flush="true"/>
jsp
舉個例子說明上面的結論。
例子:目標:在home.jsp中動態的引用page1.jsp或page2.jsp來構建home.jsp。試給出一個簡單的demo。
用到的文件目錄結構說明:
ui
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>
執行效果:
code
咱們能夠在<% %>
的代碼片斷裏面,加上咱們的業務邏輯,來肯定加載哪一個路徑的url。htm
我想到過用js來動態修改jsp:include
的引入路徑。這個想法是不可行的。
緣由:這個是jsp加載時序的問題。jsp:include
的內容最早執行。html內容的加載與js腳本的執行順序在jsp:include
執行結束後執行。
顯然,這個思路是不可行的。對象
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頁面中的代碼執行加載順序)