jsp include指令

来源:互联网 发布:算法时代 下载 编辑:程序博客网 时间:2024/05/17 06:40

JSP主要有三个编译指令:page 、include、taglib
其中使用include指令可以将一个外部文件嵌入到当前JSP文件中,如下:

<%@include file="relativepath/test.jsp">

这种引用是静态的include语句,
使用静态的include语句,就可以将被包含页面(子页面,如test.jsp)文件嵌入到包含页面(父页面)中,同时解析子页面中的jsp语句;即会把子页面中的其他编译指令也包含进来,因此子页面甚至不需要是一个完整的页面。

注:父页面在编译时将完全包含了子页面的代码,又因为还会将子页面的编译指令也包含进来,所以,如果两个页面的编译指令冲突,那么页面就会出错。

相对于静态include指令,动态include指令则是:

1. <jsp:include page="relativepath/test.jsp" flush="true"/>2.<jsp:include page="relativeUrl|<%=expression%>" flush="true">    <jsp:param name="paramname" value="paramvalue"/></jsp:include>

同样,这种用法也表示包含某个页面,它不会导入子页面的编译指令,仅仅是将子页面中的body内容插入页面;
通过第二种用法,可以看出动态的include方法可以额外的传入参数;
flush属性用于指定输出缓存是否转移到被导入文件中(对于jsp1.1以前版本,只能设置为false)
如果用动态的include方法:通过jsp生成的源代码中可以看到这样一句话:

org.apache.jasper.runtime.jspRuntimeLibrary.include(request,response,"test.jsp",out,false);

表明动态导入只是使用一个include方法来插入子页面的内容,而不是将子页面完全融入父页面中。

  • 静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容;
  • 静态导入时被 导入页面的编译指令会起作用;而动态导入时被导入编译指令则失去作用,只是插入被导入页面的body内容
  • 动态包含还可以参数

jsp的动作指令

  • jsp:forward 执行页面转向,将请求的处理转发到下一个页面
  • jsp:include 用于动态引入一个页面
  • jsp:param 用于传递参数,必须与其他支持参数的标签一起使用
  • jsp:plugin 用于下载JavaBean或Applet到客户端执行
  • jsp:useBean 创建一个JavaBean的实例
  • jsp:setProperty 设置JavaBean实例的属性值
  • jsp:getProperty 输出JavaBean实例的属性值
0 0