国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

OpenCms中如何管理JSP?

2024-09-05 00:20:40
字體:
來源:轉載
供稿:網友

  opencms中所有的文件通常都保存在數據庫中,這也就是常說的opencms vfs(虛擬文件系統)。也就是說在opencms工作區中看到的文件結構在rfs(真實文件系統,也就是硬盤上)上并不存在(靜態導出操作除外),然而,為了jsp能夠正常工作,所有的opencms jsp文件都映射到真實文件系統中,也就是在硬盤上可以找到。

  為了能夠理解這個過程,先讓我們看一下標準的jsp文件是怎么被處理的:

  jsp文件必須存放于web應用程序的根目錄下;  

  jsp文件必須以“*.jsp”結尾(可以web.xml文件中進行配置);

  servlet容器接受jsp文件的請求,被請求的文件首先被轉化成java類源碼,擴展名為“.java”。

  在這個處理過程中,jsp directives(如<%@ include file= "..." %>)也被轉化,轉換成java源碼。

  生成的“.java”源碼然后被編譯成實現servlet接口的類。

  最后,servlet調用service()方法。

  為了使opencms能夠做到與servlet容器無關性,它使用了一個簡單的技巧:把jsp從虛擬文件系統映射到真實文件系統,如下:

  所有的opencms資源請求都由opencms servlet控制,通常映射至/opencms/opencms;

  一旦opencms接到一個jsp資源的請求,它就會把請求的jsp文件“存儲”到它自己的web應用程序根目錄下的“/web-inf/jsp/”下;

  因為opencms中用online和offline區分一個資源的“發布”與“編輯”版本,所以在這個目錄(/web-inf/jsp/)下也生成online和offline兩個子目錄;

  在這兩個目錄下,它把jsp文件存儲成帶有完整vfs路徑且以“.jsp”為后綴的文件;

  例如:jsp文件是在vfs中是“/index.jsp”,它會被映射為真實文件系統中的“/web-inf/jsp/online/index.jsp.jsp”,這叫做“文件名轉換”的jsp。

  當opencms存儲資源時,jsp directives(<%@ include file= "..." %>和 <%@ page errorpage= "..."%)所指向的jsp文件也同樣進行“文件名轉換”處理,即把它們映射到真實文件系統中;

  假設我們在web應用目錄有一下文件叫作“file.jsp”;

  opencms servlet調用requestdispatcher("{file.jsp}").include()并且把控制權傳遞到標準的servlet容器。剩下的步驟就和上面描述的標準的jsp處理一樣了。

  如何區分online和offline jsp 版本?

  其實很簡單:因為opencms為online和offline下的不同版本的jsp分別存儲到兩個目錄,這樣servlet容器就把它們當作不同的文件處理,也就做到了對offline下jsp的修改不會影響到online下的jsp。

  注意:online和offline下的jsp有著同樣的web應用上下文,因為這一點,它們共用一個應用程序下下文對象,online和offline jsp頁面訪問的是同一組數據,不慎重使用會引起未預期的副作用,可以通過嚴格地控制訪問應用程序上下文對象來避免這些副作用。

  在opencms靜態導出中如何使用jsp?

  使用opencms靜態文件導出能夠提高網站的性能。opencms對jsp文件的管理也完全支持靜態導出。當然,jsp通常是使用在動態頁面中,因此,默認的生成的jsp文件的導出屬性默認為false,萬一想要導出jsp,必須要手動設置jsp的導出屬性為true。

  為了支持到靜態導出資源的鏈接,opencms中使用了<cms:link>標簽或cms.link方法(<cms:link>用法)。

  另外,jsp directives中包含有文件名時,不要使用類似“<jsp:directive.include file="..." />”的語法,而是要使用<%@ include file="..." %>的語法 ,因為opencms中不支持對類似“<jsp:directive.include file="..." />”的語法解析,也就是說不能處理這種語法中的jsp文件,不能夠把它映射到真實文件系統中。但對其它不包含文件名的這種語法是支持的,如: <jsp:usebean id="..." /> 或 <jsp:setproperty name="..." />,它們可以在opencms的jsp中正常使用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 祁连县| 自治县| 玛纳斯县| 龙门县| 威信县| 锦州市| 定襄县| 绥宁县| 龙游县| 石门县| 曲沃县| 扬中市| 禹州市| 德庆县| 建始县| 民权县| 黔江区| 上饶市| 通山县| 富平县| 天长市| 巴中市| 诸暨市| 宜宾市| 东辽县| 酒泉市| 徐水县| 鹿邑县| 临安市| 旌德县| 大城县| 满洲里市| 常山县| 藁城市| 色达县| 定襄县| 永济市| 曲靖市| 南川市| 嘉峪关市| 汶上县|