我在尋找幫助/建議,使用PHP include + switch功能創建簡單的JSP網站。簡單的JSP網站
目標是我希望能夠在一個主頁面中的多個JSP包含頁面之間切換。
以上'功能'的最簡單可能的形式是什麼?
我在尋找幫助/建議,使用PHP include + switch功能創建簡單的JSP網站。簡單的JSP網站
目標是我希望能夠在一個主頁面中的多個JSP包含頁面之間切換。
以上'功能'的最簡單可能的形式是什麼?
那裏你有<jsp:include>
的。您可以使用EL指定page
屬性。
創建/WEB-INF/main.jsp
文件看起來像:
<!doctype html>
<html lang="en">
<head>
<title>Title</title>
</head>
<body>
<jsp:include page="${page}" />
</body>
</html>
您可以控制${page}
值與頁面控制器servlet的幫助。喜歡的東西:
public class PageController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("page", "/WEB-INF" + request.getPathInfo());
request.getRequestDispatcher("/WEB-INF/main.jsp").forward(request, response);
}
}
地圖這個servlet在web.xml
如下:
<servlet>
<servlet-name>pageController</servlet-name>
<servlet-class>com.example.PageController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>pageController</servlet-name>
<url-pattern>/page/*</url-pattern>
</servlet-mapping>
這樣,該servlet可以訪問通過http://example.com/context/page/foo.jsp
在這個網址例如,它便會從PATHINFO得到/foo.jsp
和所設定的page
屬性的值爲/WEB-INF/foo.jsp
,因此它在EL中可用爲${page}
,因此jsp:include
知道它應該包含什麼。不需要討厭的scriptlet或switch語句。
在/WEB-INF/foo.jsp
中,您可以像寫入HTML <body>
標籤一樣將HTML寫下來。
請注意,JSP文件放置在/WEB-INF
中,這樣做是爲了防止通過URL直接訪問,以便用戶無需通過頁面控制器就可以請求它們,例如http://example.com/context/foo.jsp
(僅返回部分內容(即將包含的頁面)。
希望這會有所幫助。
比我的更可擴展的解決方案,只是不那麼簡單。 ;)+1 – Drew
免維護:) – BalusC