在传统的HTML页面文件中嵌入脚本语言和JSP标签就构成了一个JSP页面文件。一个JSP页面可有5中元素组合而成。
HTML页面内容
JSP注释
JSP指令
JSP脚本元素
JSP动作元素
Jsp指令是:
Jsp指令是为jsp引擎而设计的,他们并不直接产生任何可见输出,而只是告诉引擎如何处理jsp页面中的其余部分,在jsp2.0规范中共定义了三个指令:
Page指令
Include指令
Taglib指令
语法:
<%@ 指令名称 属性1="属性名称" 属性2="属性名称" ...%>
或者将属性分开单独成句
<%@指令名称 属性1="属性名称" %>
<%@指令名称 属性2="属性名称" %>
如:<%@ page import="java.util.*"%>
jsp会自动导入一下包:
import.java.lang.*;
import.javax.servlet.*;
import.javax.servlet.http.*;
import.javax.servlet.jsp.*;
page指令:
称为页面指令,用来定义JSP页面的全局属性,该配置会作用于整个JSP页面。page指令用来指定所使用的脚本语言、导入指定的类及软件包等。
<%@ page language="java" contentType="text/html;charest=GBK"%>
<%@ page import="java.util.*, java.io.*, java.awt.*"%>
作用:用于定义jsp页面的各种属性
属性:
import:和Java代码中的import是一样的
如:<%@ page import="java.util.*"%>
属性名称 | 取值范围 | 描述 |
language | java | 指明解释该JSP文件时采用的语言。一般为Java语言。默认为Java |
extends | 任何类的全名 | 指明编译该JSP文件时继承那个类。JSP为Servlet,因此当指明继承普通类是需要实现Servlet的inti、 destoy等方法 |
import | 任何包名,类名 | 引入该JSP中用到的类、包等。import是唯一可以声明多次的page指令属性。一个import属性可以引用多 个类,中间用英文逗号隔开,如<%@ page import="java.util.List,java.util.ArrayList"%>。JSP中下 面四个包里的类可以直接使用: java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.* |
session | true,false | 指明该JSP内是否内置Session对象。如果为true,则内置Session对象,可直接使用。否则不内置 Session对象。默认为true |
autoFlush | true,false | 是否运行缓存。如果为true,则使用out.println()等方法输出的字符串并不是立刻到达客户端服务器的 ,而是暂时存在缓存里,缓存满或者程序执行完毕或者执行out.flush()操作是才到客户端。默认为true |
buffer | none或者数字+kb | 指定是否线程安全。如果为true,则运行多个线程同时运行该JSP程序,否则只运行一个线程运行,其余 线程等待。默认为false |
isErrorPage | true,false | 指定该页面是否为错误处理页面。如果为true,则该JSP内置有一个Exception对象exception,可直接使 用,否则没有。默认为false |
isThreadSafe | true,false | 指定是否线程安全。如果为true,则运行多个线程同时运行该JSP程序,否则只运行一个线程运行,其余线程等待。默认为false |
errorPage | 某个JSP页面的相对路径 | 指明一个错误显示页面,如果该JSP程序抛出了一个未捕捉的异常, 则转到errorPage指定的页面。errorPage指定的页面通常isErrorPage属性为ture,且内置的exception 对象为未捕捉的异常 |
include指令 :
是文件加载指令,用于在JSP文件中插入一个包含文本或代码的文件。它把文件插入后与原来的JSP文件合并成一个新的JSP页面。还需要注意的是,如果被插入的文件发生了变化,则包含这个文件的JSP文件需要被重新编译。
<%@ include file="baozi.txt"%>
<%@ include file="baozi.html"%>
<%@ include file="baozi.jsp"%>
静态包含语法:
<%@ include file="/*.jsp"%>
动态包含语法:
<jsp:include include page="/*.jsp"></jsp:include>
二者的区别:翻译的时间段不同
前者:在翻译的时就把两个文件合并。
后者:不会合并文件,当执行include代码时,才会包含另外一个文件的内容。
原则:能使用静态include,就不要使用动态include。
taglib指令:
用来引用标签库并设置标签库的前缀。这个指令允许JSP页面使用用户自定义的标签,它也可以为标签库命名,标签在这个库中定义。
<%@ pagelanguage="java" contentType="text/html"pageEncoding="UTF-8"%>
<%--声明要引用的标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>taglib标签</title>
</head>
<body>
<%--使用JSTL标签输出--%>
<c:out value="taglibexample!"/>
</body>
</html>
作用:在jsp页面中导入JSTL标签库。替换jsp中的Java代码片段。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="core" %>
prefix:别名