opencms是如何管理jsp文件的

通常opencms的文件存放在数据库中,也就是所谓的 Virtual File System (VFS)。这意味着在本地文件系统中不存在和OpenCms workplace的explorer视图的相同的文件结构。然而,为了让jsp文件正常工作,opencms中所有的jsp文件“镜象”到了本地文件系统中。
   让我们首先看一下一个“标准”的jsp文件是如何被处理的:
  1. jsp文件必须存在于web应用的目录中。
  2. 文件的后缀必须是.jsp(你可以通过配置web.xml对此做修改)。
  3.  当servlet容器接收到针对web应用的jsp文件的请求时,被请求的jsp文件首先要转换成java源文件,即.java文件。
  4. 在转换的过程中,jsp标签(如<%@ include file= "..." %>)被解析并转换成java代码。
  5. 转换的java文件实现Servlet接口,并被编译为class文件。
  6. 最后,调用class的service()方法。
为了使opencms独立于servlet容器,它使用了一个小技巧-将jsp文件从VFS中镜象到本地文件系统,方法如下:
  1. 对opencms所有资源的请求都由opencms Servlet来处理,该servlet一般映射为/opencms/opencms。
  2.  当opencms收到对jsp资源的请求时,它将被请求jsp文件的内容导入到opencms web应用的根目录的一个子目录/WEB-INF/jsp中。
  3.  因为opencms的资源分为Online和offline,/WEB-INF/jsp中存在子目录online和offline和此对应。
  4. 在此目录中,被导出的jsp文件拥有完整的VFS路径结构和.jsp后缀。例如,你的文件在VFS中是"/index.jsp",被导出后它将是WEB-INF/jsp/online/index.jsp.jsp文件(译者注:目前opencms6.2.1可以判断导出的文件是否存在jsp后缀,而不是傻傻的直接添加)。我们可以将这个叫做jsp的“转换文件名”。
  5. 当opencms导出资源时,会使用一个简单的解析器对jsp文件内容进行预处理,以查找引用其他jsp文件的表情,最明显的是<%@ include file= "..." %> 和 <%@ page errorPage= "..."%>
    如果发现这样的标签,目标文件名将会被这个资源在真是文件系统的转换文件名替换。
  6. 现在在web应用的目录下我们已经有了一个jsp文件,我们叫他"{file.jsp}"
  7. Opencms servlet(它仍然是控制器)现在调用requestDispatcher("{file.jsp}").include(),然后将控制权转交给标准的servlet容器。
    然后按上面所述的标准jsp处理步骤进行处理。需要注意的是,在这个过程中,opencms仍然使用Request和Response包装器(Wrappers)来生成FlexCache条目。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值