首页 > 代码库 > JSP指令和JSP动作

JSP指令和JSP动作

JSP指令和JSP动作

一、JSP page指令
   在JSP中,主要有3种类型的指令:page、include、taglib。page指令允许我们通过类的导入、serlvet超类的定制、内容类型的设置、以及诸如此类的事物来控制servlet的结构。page指令可以放在文档中任何地方,可以定义下面这些大小写敏感 属性:import、contentType、pageEncoding、session、isELIgnored(只限JSP2.0)、buffer、autoFlush、info、errorPage、isErrorPage、isThreadSage、language和extends。

import
    <%@ page import="package.class1,...,package.classN" %>
    import是page的属性中唯一允许在同一文档中多次出现的属性。尽管page指令可以出现在文档中的任何地方,但一般不是将import语句放在文档顶部附近,就是放在相应的包首次使用之前。

contentType和pageEncoding
    <%@ page contentType="MIME-TYPE" %>
    和下面的scriptlet所起到的作用基本相同。
    <% response.setContentType("MIME-TYPE"); %>
    两者的区别有两点:
    1.response.setContentType使用明确的Java代码,这是一些开发人员力图避免的使用方式。
    2.response.setContentType能够有条件地调用,而page指令不能。条件性地设置内容的类型主要用在同一内容能够以多种不同的形式进行显示的情况下。
    常用的MIME类型:
    application/msword            Word文档
    application/pdf               PDF文件
    application/vnd.ms-excel      Excel电子表格
    application/vnd.ms-powerpoint PowerPoint演示文稿
    text/html
    image/gif
    如果希望同时更改内容的类型和字符集,可以使用下面的语句:
    <%@ page contentType="someMimeType; charset=someCharacterSet" %>
    但是如果只想改变字符集,使用pageEncoding属性更为简单。
    日语JSP页面使用下面的语句:
    <%@ page pageEncoding="Shift_JIS" %>

errorPage和isErrorPage属性
     errorPage属性指定页面专用的错误页面,如果要为整个WEB应用指定错误页面,或者为应用中不同类型的错误指定错误处理页面,则需要使用web.xml中的error-page元素。
     <%@ page errorPage="Relative URL" % >
     <%@ page isErrorPage="true" %>

二、jsp:include 动作和 include指令
    <jsp:include page="relative-path-to-resource"/>
    <%@ include file="Relative URL"%>

jsp:include 动作和 include指令根本性的区别在于被调用的时间不同
jsp:include 动作,在请求期间将其他页面的输出包含进来。包含的内容为页面的输出。
include指令,在主页面转换成servlet之前,将JSP代码插入其中。包含的内容为文件的实际内容。

jsp:include 动作,在被包含页面发生更改时,无需对主页面做出修改。
jsp:include 动作和 include指令根本性的区别在于被调用的时间不同

jsp:include 动作注意事项:不要将完整的HTML文档作为被包含页面,诸如DOCTYPE,BODY等标签,被包含页面中只能含有适合于出现在文件插入点处的HTML标签。
     对于文件包含,应该尽可能地使用jsp:include动作。仅在所包含的文件中定义了主页面要用到的字段和方法,或者所包含的文件设置了主页面的响应报头时,才应该使用include指令(<%@ include ....%>)

include指令提供的其他功能:

    include指令允许所包含的文件中含有影响主页的JSP代码,比如响应报头的设置和字段的定义。例如,假定snippet.jsp含有下面的代码:
        <%! int accessCount = 0; %>
    这种情况下,可以在主页中执行下面的任务:
    <%@ include file="snippet.jsp"%>
    <%= accessCount++ %>
当然,使用jsp:include时这是不可能的,因为accessCount变量未定义;主页面不能成功的转换成servlet、