一 什么是jsp?
jsp与asp的技术非常相似,asp的编程语言是VBScript和JavaScript,而jsp使用的是Java。
二jsp页面:
在传统的HTMl页面中加入java程序片段(<% java程序片段 %>)和JSP标签就构成了
一个jsp页面可由五种元素组合而成:
1 普通的HTML标记符
2 JSP标签:如指令标签,动作标签
3 变量和方法的声明
4 java程序片段
5 java表达式
JSP的运行原理:
当服务器上的一个jsp页面被第一次请求执行时,服务器上的jsp引擎首先将JSP页面文件转译成一个java文件,在将这个java文件编译生成字节码文件,然后执行字节码文件相应客户的请求,这也是JSP比ASP快的一个原因。
这个字节码文件的主要工作:
1 把jsp页面中普通的HTML标记符号(页面的静态部分)交给客户的浏览器显示
2 执行<%%>之间的代码,java程序片段,即动态部分,并把执行结果交给浏览器显示。
3 当多个用户请求一个JSP页面时,JSP引擎为每个客户启动一个线程而不是进程。
三 变量和方法的声明:
在“<%!”和“%>”标记符之间声明变量,即在“<%!”和“%>”之间放置Java
的变量声明语句,变量的类型可以是Java 语言允许的任何数据类型,我们将这些变量称
为JSP 页面的成员变量。如,
<%! int a, b=10 , c;
String tom=null,jerry= ”love JSP”;
Date date;
%>
也可以在在“<%!”和“%>”中声明方法,方法要写全,也可以声明类
四 Java 程序片
可以在“<%”和“%>”之间插入Java 程序片。一个JSP 页面可以有许多程序片,
这些程序片将被JSP 引擎按顺序执行。在一个程序片中声明的变量称做JSP页面的局部
变量,它们在JSP 页面内的所有程序片部分以及表达式部分内都有效。这是因为JSP 引
擎将JSP 页面转译成Java 文件时,将各个程序片的这些变量作为类中某个方法的变量,
即局部变量。一个客户对JSP 页面局部变量操作的结果,不会影响到其它客户的这个局部变量。
五 JSP 中的注释
注释可以增强JSP 文件的可读性,并易于JSP 文件的维护。JSP 中的注释可分为两种
(1) HTML 注释:在标记符号“<!--”和“-->”之间加入注释内容:
<!-- 注释内容 -->
JSP 引擎把HTML 注释交给客户,因此客户通过浏览器查看JSP 的源文件时,能够
看到HTML 注释。
(2) JSP 注释:在标记符号“<%--”和“--%>”之间加入注释内容:
<%-- 注释内容 --%>
JSP 引擎忽略JSP 注释,即在编译JSP 页面时忽略JSP 注释。
六 jsp指令标签
page 指令
page 指令用来定义整个JSP 页面的一些属性和这些属性的值
<%@ page 属性1= “属性1 的值” 属性2= “属性2 的值”……%>
如果为一个属性指定几个值话,这些值用逗号分割。page 指令只能给import 属性指
定多个值;其它属性只能指定一个值。
例如:
<%@ page import="java.util.*" ,"java.io.*" ,"java.awt.*" %>
需要注意的是:
可以使用多个page 指令给属性import 几个值,但其它属性只能使用一次page 指令指定
该属性一个值
注:page 指令的作用对整个页面有效,与其书写的位置无关,但习惯把page 指令写
在JSP 页面的最前面。
language属性
定义JSP 页面使用的脚本语言,该属性的值目前只能取"java"。language 属性的默认值是"java",
为language 属性指定值的格式:
<%@ page language="java" %>
Import属性:
用来引用java的包。
<%@ page import="java.io.*", "java.util.Date"%>
JSP 页面默认import 属性已经有如下的值:
" java.lang.*"、 "javax.servlet.*" 、"javax.servlet.jsp.*"、"javax.servlet.http.*"。
contentType 属性:
定义JSP 页面响应的MIME(MultipurposeInternet Mail Extention) 类型和JSP 页面
字符的编码。属性值的一般形式是:“MIME 类型”或“MIME 类型;charset=编码”
contentType 属性的默认值是"text/html; charset=ISO-8859-1"
session 属性:
用于设置是否需要使用内置的session 对象。
session 的属性值可以是true或false,session 属性默认的属性值是true。
buffer 属性:
内置输出流对象out 负责将服务器的某些信息或运行结果发送到客户端显示,buffer
属性用来指定out设置的缓冲区的大小或不使用缓冲区。
buffer 属性可以取值“none”,设置out 不使用缓冲区。Buffer 属性的默认值是8kb。
例如:
<%@ page buffer= “24kb”%>
lauotFlush 属性
指定out的缓冲区被填满时,缓冲区是否自动刷新。
auotFlush 可以取值true 或false。auotFlush 属性的默认值是true。当auotFlush 属性
取值false时,如果out的缓冲区填满时,就会出现缓存溢出异常。当buffer 的值是“none”
时,auotFlush的值就不能设置成false。
isThreadSafe 属性
用来设置JSP 页面是否可多线程访问。
isThreadSafe 的属性值取true 或false。当isThreadSafe 属性值设置为true 时,JSP
页面能同时响应多个客户的请求;当isThreadSafe 属性值设置成false 时,JSP 页面同一
时刻只能处理响应一个客户的请求,其他客户需排队等待。isThreadSafe 属性的默认值
是true。
info 属性:
该属性为JSP 页面准备一个字符串,属性值是某个字符串。例如,
<%@ page info= “we are students”%>
可以在JSP 页面中使用方法:
getServletInfo();
获取info 属性的属性值。
注:当JSP 页面被转译成Java 文件时,转译成的类是Servlet 的一个子类,所以在
JSP 页面中可以使用Servlet 类的方法:getServletInfo() 。
下面的例子13 使用getServletInfo() 方法获取info 的属性值。
include 指令标签
如果需要在JSP 页面内某处整体嵌入一个文件,就可以考虑使用这个指令标签。该指
令标签语法如下:
<%@ include file= “文件的名字” %>
该指令标签的作用是在JSP 页面出现该指令的位置处,静态插入一个文件。
所谓静态插入,就是当前JSP 页面和插入的部分合并成一个新的JSP 页面,然后JSP 引
擎再将这个新的JSP 页面转译成Java 类文件
JSP 动作标签
动作标签是一种特殊的标签,它影响JSP 运行时的功能。
<jsp:include page= “文件的名字”/>
或
<jsp:include page= “文件的名字”>
</jsp:include>
与
静态插入文件的include 指令标签不同,当JSP 引擎把JSP 页面转译成Java 文件时,不
把JSP 页面中动作指令include 所包含的文件与原JSP 页面合并一个新的JSP 页面,而
是告诉Java 解释器,这个文件在JSP 运行时(Java 文件的字节码文件被加载执行)才
包含进来。如果包含的文件是普通的文本文件,就将文件的内容发送到客户端,由客户
60
端负责显示;如果包含的文件是jsp 文件,JSP 引擎就执行这个文件,然后将执行的结果
发送到客户端,并由客户端负责显示这些结果
书写include 动作标签:<jsp:includepage …../>时要注意:“jsp”、“:”、
“include”三者之间不要有空格。