Chinaunix首页 | 论坛 | 博客
  • 博客访问: 265687
  • 博文数量: 99
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 1270
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-20 13:27
文章分类

全部博文(99)

文章存档

2011年(1)

2010年(21)

2009年(77)

我的朋友

分类: Java

2009-04-11 21:58:44

  
jsp中有两种包含模式,一种是<%@ include file="要包含的页面路径" %>,这种叫静态包含,另一种是 ,这叫做动态包含.
   
静态包含是直接把要包含的页面原样嵌入总的页面后再统一编译,而动态包含总的页面和要嵌入的页面是分开编译的.
   

现在看到这两种包含的意义了么?

jsp是建议我们凡是*.jsp的页面如果要被另一个页面包含,那么应该用动态包含,如果只是html或者是一段文本,那么用动态包含和静态包含都可以.因此原则上我们都倾向于使用动态包含.

  
但是我们项目中遇到一种特殊情况:一个动态的*.jsp页面,它里面是动态生成的表单元素,我们把它做为一个组件,其它*.jsp页面如果要用这个组件表单的话直接把它包含到自己页面的
标签内.实现这个功能明显应该用动态包含,因为组件jsp的页面完全是"动态"生成的,但是这样做在总页面的js脚本中就有问题了,因为这两个页面是分开编译的,有不同的document树,而总页面中的document是取不到组件jsp页面中的表单元素的,即document.getElementById("组件jsp中的表单元素ID")完全失效. 后来想到一个办法,你知道怎么着?我们把组件的*.jsp改名为*.txt,把里面<%@ page contentType="" %>元素抽到总的页面里去,都不去理会*.txt的java编译报错代码,在总页面中直接<%@ include file=""%>,看到了么?动态的页面用静态包含!这样*.txt 中的代码会原封不动的嵌到总页面中,页面只有一个document树在内存中,这样再document.getElementById("组件中的元素id")就完全没问题了.
   
由此可见,虽然jsp规范中定义了动态页面的包含方式,但对一些特殊情况,完全可以绕开jsp规范的限制以求得更加灵活的效果的,以上意见供大家参考,不对之处欢迎斧正,呵呵:)
阅读(1514) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~