a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 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中正常使用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久精品免费视频 | 欧美日韩在线一 | 婷婷色国产偷v国产偷v小说 | 日韩一级免费在线观看 | 97超碰免费在线 | 国产成人一区 | 日本www在线| www.亚洲一区二区 | 免费av观看 | 成人综合在线观看 | 国产精品久久久久一区二区三区共 | 男人的午夜影院 | 亚洲一区二区三区四区五区中文 | 日本在线一区二区 | 国产在线观看91一区二区三区 | 国产伦理片在线免费观看 | 91精品国产欧美一区二区成人 | 亚洲精品一区二区三区蜜桃久 | 亚洲电影一区 | 91污在线 | 逼逼网 | 亚洲精品免费观看 | 日韩在线一区二区三区 | 色综合久久久久 | 蜜桃av网址| 日本视频网 | 久久h| 极品久久 | 天天草天天 | 97超碰人人干| 日本精品视频在线播放 | www国产一区 | 国产精品视频免费看 | 亚洲 中文 欧美 日韩 在线观看 | 国产精品视频网 | 久久综合九色综合欧美狠狠 | 绯色av一区二区三区在线观看 | 日韩在线中文 | 久久精品久久久久电影 | 国产精品久久久av | 欧美国产日韩另类 |