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. 移动端H5地图离线瓦片方案(1)(2)

    2在作者另一篇 移动端H5地图离线瓦片方案   文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 移动端的网速和 ...

  2. 配置IDEA Scala环境

    http://snglw.blog.51cto.com/5832405/1634595

  3. Mac OS X 下安装MySQL 5.7

    下载安装包 官网下载安装包 选择相应的版本和格式,有 .dmg 和压缩包两种. 这里选择简单直接的 .dmg安装包,下载的时候可以将下载地址直接贴到迅雷,速度比较快. 安装 安装很简单,直接双击下好的 ...

  4. Oracle高级查询之CONNECT BY

    为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的. Oracle中的select语句可以用start with ... connect by prior ...子句实现递 ...

  5. koa项目用mongoose与mongodb交互,始终报错FormModel is not defined

    koa项目用mongoose与mongodb交互,始终报错FormModel is not defined,就是自己定义的model实例始终不能找到,但是明明定义了,这时候就要看大小写了,当创建一个m ...

  6. js堆栈与队列简单记忆

    在面向对象的程序设计里,一般都提供了实现队列(queue)和堆栈(stack)的方法,而对于JS来说,我们可以实现数组的相关操作,来实现队列和堆栈的功能,看下面的相关介绍. 一 看一下它们的性质,这种 ...

  7. 消息中间件的意义和应用场景 (activeMq)

    消息中间件一般两个功能,解耦和异步处理,分别举个例子吧 解耦合:比如我们做一个微博产品中的好友系统,就很需要使用消息中间件当我们添加一个关注的时候, 涉及以下几个子系统 推荐系统,需要根据你关注的人给 ...

  8. oracle 产生随机数

    -- 产生一个任意大小的随机数select dbms_random.random from dual; -- 产生一个100以内的随机数select abs(mod(dbms_random.rando ...

  9. jquery.fileupload插件 ie9下不支持上传

    根据https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support The following browsers support ...

  10. 浏览器端Less

    摘要: 之前项目用过Less,现在负责的项目也要使用,所以就总结下Less,也方便以后查看.本文主要是讲浏览器端如何使用Less. 简介: LESS是一种由Alexis Sellier设计的动态层叠样 ...