JSP指令

说明:
1、JSP指令用于告知JSP 引擎转译JSP时的转化参数,他们不产生输出信息,只是在JSP的转译和编译期间起作用。 
2、JSP指令必须写在规定的格式中:  <%@  [goes here]  %>
3、除了include指令外,page 和 taglib指令都必须写在JSP文件的开始处。
JSP指令主要有3个    page , include , taglib ,下面一 一介绍
 
 

page 指令

page指令由很多k-v形式的属性构成,除了import属性外,其它的属性都只能出现一次。
 
 
language ="java" 目前只能使用java,默认就好。
extends  = "className" 指定转译后的Servlet的父类,通常是JSP引擎指定的,因此不要使用这个属性,默认就好。
isThreadSafe="true"
默认是true ,不要修改这个属性,默认就好。官方已经强烈不推荐将其设置为false。
如果是false,那么多个请求串行执行service方法。
autoFlush = "true|false"
如果为true,则当out对象的输出流缓存满时,自动刷新流,将缓冲数据写入到响应正文中。
如果为false,则当out对象的输出流缓存满时将抛出异常。
默认是true,默认就好。
isELIgnored = "false | true"
此JSP页面的EL表达式是否启用。如果为true,则此JSP页面的EL不会生效。
如果为false,则可以在此JSP页面使用EL。
默认是false,默认就好。
info="" JSP页面的描述信息,可以通过getServletInfo获得。可有可无。默认就好。
   
buffer  = "none | 8kb| 16kb|等等" JspWriter对象 out 的输出缓冲的大小。默认是8kb
isErrorPage= "true | false"

指示当前JSP是否是用于处理错误的页面,如果是true,则这个JSP可以设置为其它JSP 的 errorPage 的值。

且在这个JSP中可以使用隐式对象exception。

errorPage = "error_page_url"
指定当出现异常,错误时,转发的到的错误处理页面。error_page_url是相对地址。
例如异常处理页面写在WEB/ErrorHandleJSPs下的500.jsp。
  errorPage= "WEB-INF/ErrorHandleJSPs/500.jsp"
   
import   = "java.util.*,java.io.*"
也就是导入包。import属性在JSP页面中可以出现多次(其它的只能出现一次)。例如
<%@ page import="java.io.*"   % >
 <%@ page import="java.util.*" % >
session = "true | false"
指示这个JSP页面是否需要使用session。如果为true,则隐式对象session就是引用当前会话对象。
并且,如果会话对象在这个JSP页面使用session之前没创建,则会自动创建且让隐式对象session引用这会话对象。
如果为false,则此页面不能使用session,(session为null),也不会主动生成session对象。
默认是true
contentType="text/html;charset=utf-8" 响应文档的MIME类型。将成为转移后的Servlet中的service方法中的response.setContentType("xxxxxxxx")
pageEncoding="utf-8" 定义此JSP页面保存时的字符编码。默认是 ISO-8859-1
trimDirectiveWhitespaces="true|false"

默认是false,设置为true后,会去除输出的HTML文档的前面的空白行。

 
 
下面是一个JSP转译为Servlet的源代码,可以看出page指令影响JSP转译为Servlet。
public void _jspService()
{
//..... try {
response.setContentType("text/html; charset=UTF-8"); /*page指令的contentType属性产生的语句*/
pageContext = _jspxFactory.getPageContext(
this,
request,
response,
null, /*page指令配置的error page 的URL*/
true, /*page质量配置的是否使用session*/
8192, /*page指令配置的out对象的缓存大小(kb)*/
true); /*page指令配置的out对象是否autoFlush*/ //.....
}
 
 

include指令

 
静态包含,被包含的文件的内容将会在转译期间,合并到JSP文件中去(合并的插入位置就是incude指令所在的位置),其结果就好像被包含的文件的内容原本就写在JSP中一样。
 
 <%@include file="被包含文件的相对路径url"%>
如果url是以 /开头的,则路径是相对于web根目录的路径
如果不以 / 开头,则是相对于当前包含JSP的路径。
 
被包含的页面可以是HTML,XML,JSP等。按照规范:被包含的如果是jsp文件,则这个文件的扩展名应该是jspf。
 
用处:
1、我们可以将网页底部的版权信息 写在一个单独的jsp文件中,然后其它页面如果需要在页面底部显示版权信息,则可以通过include指令包含过去。
 
2、include指令可以在JSP页面中出现任意次和任意位置。因此他常常用于构建view层的视图模板骨架,例如head ,foot  navi 都可以分离开来,并使用include包含。
 
当网页的内容板式是固定的模式,只有一部分会变动时,include就很有用。
 
例子
 
文件:index.jsp
<%@ page contentType= "text/html; charset=UTF-8"   pageEncoding ="UTF-8" trimDirectiveWhitespaces= "true"
session ="true"
%> <! DOCTYPE html>
<html>
<head>
<meta http-equiv = "Content-Type" content ="text/html; charset=UTF-8">
<title> 标题</title>
</head>
<body>
<h1> 欢迎</h1> <p> 啦啦啦啦啦啦 </p> <%@ include file= "/WEB-INF/jspf/copyright.jsp" %>
</body>
</html>
文件:copyright.jsp

位置:/WEB-INF/jspf/copyright.jsp

<%@ page pageEncoding="UTF-8"%>
<div style="width:1000px;height:100px;background:#F0F0F0">
<p style =" text-align: center ;"> 我是版权信息 </p>
</div>

taglib指令

 
taglib顾名思义是一些标签形成的库。这些tag每个都有自己的执行逻辑,是对复杂的Java代码的封装。使用这些tag时,是用XML语法来写,因此对于前端人员是友好的。
使用tablig指令用于在JSP页面中导入 标签库 ,然后才可以使用。
 
<%@taglib uri="TagLibraryURL"  prefix="tagPrefix" %>
uri:  标签库的路径。如果标签库是以jar包形式给出的,则这里填的是一个网址。
prefix:标签库的前缀。每个标签库都有(首选的)建议的一个值,一般都会使用这个建议的值,以方便和其它的程序员达成一致。
 
 
例如:标签库以jar包形式给出
<%@ taglib  prefix ="c" uri= "http://java.sun.com/jsp/jstl/core" %>
 
例如:标签库没有打包,而是存在工程中。uri指定是tld文件的在web根目录下的路径
<%@ taglib uri="/WEB-INF/tlds/myTaglib.tld" prefix="myPrefix" %>
 使用JSTL的 <c:if> 标签的例子

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"
trimDirectiveWhitespaces="true" session="true"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<!--如果用户存在,则显示购物车和个人中心-->
<c:if test="${sessionScope.user!=null}">
<li>购物车</li>
<li><a href="userCenter.jsp">个人中心 </a></li>
</c:if>
</body>
</html>
 

【JSP】JSP指令的更多相关文章

  1. JSP三大指令、七大动作、九大对象

    <%---------------------- JSP三大指令 -----------------------------%><%-- 1. page: language impo ...

  2. JSP常见指令

    JSP常见指令 标签: jspincludeservletjavaappletarchive 2011-11-07 20:07 13193人阅读 评论(3) 收藏 举报 版权声明:本文为博主原创文章, ...

  3. JSP三大指令

    JSP三大指令1.page-->最复杂,<%@page language = "java" info = "xxx" ..%>  *pageE ...

  4. Java学习-035-JavaWeb_004 -- JSP include 指令

    inclue 指令是将不同的文件插入到 JSP 网页中,这些文件可以是文本文件.HTML文件.JSP 文件,指令语法如下: <%@include file="相对路径"%&g ...

  5. Java学习-034-JavaWeb_003 -- JSP page 指令

    前文对 JSP 的基础知识进行了初步的讲解,此文主要讲述 JSP page 指令. page 指令用于定义页面的多种属性,例如:脚本语言.编码方式.导入的 Java 包等,page 执行的语法如下: ...

  6. jsp常用指令

    Jsp包含三个编译指令和七个动作指令. 三个编译指令为:page.include.taglib. 七个动作指令为:jsp:forward.jsp:param.jsp:include.jsp:plugi ...

  7. JavaWeb笔记——Jsp的指令、内置对象和动作标签

    JSP三大指令   一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info=" ...

  8. jsp 三大指令和动作标签

    jsp三大指令 一个jsp页面中可以有0-N个指令 1.page--->最复杂:<%@page language="" ...%> *pageEncoding和c ...

  9. jsp - forward指令

    forward指令 既可以指向静态的html页面,也可以转发到动态的jsp页面,并可以保留先前请求的参数. 例如,在web中新建一个Jsp_src.jsp的jsp页面: <%@ page lan ...

  10. JSP三大指令 /9大内置对象 /Javabean / EL

    一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info="xxx". ...

随机推荐

  1. Backlight当前行背景高亮显示

    下载地址:https://github.com/limejelly/Backlight-for-XCode PS:Xcode 8.0 默认支持了 跟VVDocumenter规范注释生成器的安装方式一样 ...

  2. Spring Boot 添加JSP支持【转】

    Spring Boot 添加JSP支持 大体步骤: (1)            创建Maven web project: (2)            在pom.xml文件添加依赖: (3)     ...

  3. vue实现文章内容过长点击阅读全文功能

    直接上代码: html: <div class="bodyFont clearfloat" id="bodyFont" ref="bodyFon ...

  4. geoserver REST使用

    1.部署一个简单的测试环境 测试geoserver REST接口,我们可使用python来测试,很方便.需要下载包: python,http://python.org/.我下载的是Python27版本 ...

  5. Python 多线程相关知识学习

    多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进 ...

  6. python的初始化运行了哪些?

    下面的3个print一个是在模块下面,一个是函数里面,一个是类名下面(不在方法里面) 1. 运行这段代码可以发现第3行和11行可以打印出来.第7行没有打印出来.所以可以放心,函数或者方法里面就算有错误 ...

  7. c++Valgrind内存检测工具---19

    原创博文,转载请标明出处--周学伟  http://www.cnblogs.com/zxouxuewei/ 一.Valgrind 概述 Valgrind是一套Linux下,开放源代码(GPL V2)的 ...

  8. Metropolis-Hastings算法

    (学习这部分内容大约需要1.5小时) 摘要 马尔科夫链蒙特卡洛(Markov chain Monte Carlo, MCMC)是一种近似采样算法, 它通过定义稳态分布为 \(p\) 的马尔科夫链, 在 ...

  9. Lambda模式

    Class TestPatterns '<<1.Self-Defining Functions-自定义函数>> Public Shared Sub SelfDefining() ...

  10. Dubbo -- 系统学习 笔记 -- 示例 -- 线程模型

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 线程模型 事件处理线程说明 如果事件处理的逻辑能迅速完成,并且不会发起新的IO请求 ...