JSP基本介绍
一、了解JSP
JSP页面是指扩展名为.jsp的文件,一个JSP页面中,包含指令标识、HTML代码、JavaScript代码、嵌入的Java代码、注释和JSP动作标识等内容。如下:
二、指令标识
指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到网页中,对客户端不可见。
JSP指令标识的语法:
<%@ 指令名 属性1=“属性值1”属性2=“属性值2”……%>
说明:
指令名:在JSP中包含page、include、taglib3条指令。
属性:在一条指令中,可以设置多个属性,属性之间可以用空格或逗号隔开。
属性值:用于指定的属性值。
指令标识的<%@和%>是一个完整的标记,不能添加空格,但是标签中定义的属性与指令名之间是有空隔的。
1、page
page指令是JSP页面中最常用的指令,用于定义整个JSP页面的相关属性,这些属性在JSP被服务器解析成Servlet时会转换成相应的Java程序代码。page指令的语法格式如下:
<%@ page attr1="value1" attr2="value2"……%>
page指令包含的属性有15个。
01、language属性:该属性用于设置JSP页面使用的语言,目前只支持Java语言,如:<%@ page language="java"%>
02、extends属性:该属性用于设置JSP页面继承的Java类,所有的JSP页面被执行之前都会被服务器解析成Servet,而Servlet是由Java定义的,所以JSP和Servlet都可以继承指定的父类。该属性不常用,而且可能影响服务器的性能优化。
03、import属性:该属性用于设置JSP导入的类包。JSP页面可以嵌入Java代码片段,这些Java代码在调用API时需要导入相应的类包。如:<%@ page import="java.util.*"%>
04、pageEncoding属性:该属性用于定义JSP页面的编码格式,也就是指定文件编码。JSP页面中所有的代码都用该属性指定的字符集,如果该属性值设置为ISO-8859-1,那么该页面就不支持中文字符。通常设置编码格式为GBK,因为它可以显示简体中文和繁体中文,Myeclipse默认支持最新的GB18030编码格式,并不提供GBK编码的选项,如:
<%@ page pageEncoding="GB18030"%>
05、contentType属性:该属性用来设置MIME类型和字符编码,浏览器会据此显示网页内容,如:
<%@ page contentType="text/html;charset=UTF-8"%>
06、session属性:该属性指定JSP页面是否使用HTTP的seesion会话对象。该属性值为boolean类型,默认值为true。如下:
<%@ page session="true"%>
07、buffer属性:该属性用于设置JSP的out输出对象使用的缓存区大小,默认为8KB,且单位只能使用KB。建议使用8的倍数16、32、64、128等作为该属性的属性值。
08、autoFlush属性:该属性用于设置JSP页面缓存满时,是否自动刷新,默认值为true,如果设置为false,则缓存满时将抛出异常,如下:
<%@ page autoFlush="false"%>:取消了页面缓存的自动刷新。
09、isErrorPage属性:通过该属性可以将当前JSP页面设置成错误处理页面来处理另一个JSP页面的错误,也就是异常处理,如下:
<%@ page isErrorPage="true"%>
10、errorPage属性:该属性用于指定处理当前JSP页面异常错误的另一个JSP页面,指定的JSP错误处理页面必须设置isErrorPage属性为true,errorPage属性的属性值是一个url字符串,如下:
<%@ page errorPage="erreo/isErrorPage.jsp"%>
2、include指令
文件包含指令include是JSP的另一条指令。通过该指令可以在一个JSP页面中包含另一个JSP页面。不过该指令是静态包含,也就是说被包含的文件中的所有内容会被原样包含到该JSP页面中,及时被包含文件中有JSP代码,在被包含时也不会被编译执行。使用include指令时,最终生成一个文件,所以在被包含和包含的文件中,不能有相同名称的变量,语法如下:
<%@ include file="path"%>,该指令只有一个file属性,用于指定要包含文件的路径,可以是绝对路径也可以是相对。但是不可以是通过<%=%>表达式所代表的文件。
使用include指令包含文件可以提高代码的重用性,也便于维护和升级
3、taglib指令
在JSP文件中,可以通过taglib指令标识声明该页面所使用的标签库,同时引用标签库,并指定标签库的前缀。在该页面中引用标签库后,就可以通过前缀来引用标签库中标签。taglib指令的语法格式如下:
<%@ taglib prefix="tagPrefix" uri="http://java.sun.com/jsp/jstl/core"%>
三、脚本标识
在JSP页面中,脚本标识使用最频繁,它们能够很方便、灵活的生成页面中的动态内容,特别是Scriptlet脚本程序,JSP中的脚本程序包括三部分,即JSP表达式、声明标识和脚本程序。。通过这些标识,在JSP页面中可以向编写Java程序一样来声明变量、定义函数或进行各种表达式的运算。
1、JSP表达式
JSP表达式用于向页面中输出信息,语法如下:
<%=表达式%>
参数说明:
表达式:可以是任何Java语言的完整表达式,最终的运算结果转化为字符串。
注意:<%与=之间不可以有空格,但=与后面的表达式之间可以有空格,不仅可以插入到网页的文本中,用于输出文本内容,也可以插入到HTML标记中,用于动态设置属性值。
2、声明标识
声明标识用于在JSP页面中定义全局变量或方法。通过声明表示定义的变量和方法可以被整个JSP页面访问。
注意:服务器执行JSP时,会将JSP页面转化为Servlet类,在该类中使用JSP声明标识的变量和方法转化为类的成员变量和方法。
声明标识的语法格式如下: <%!声明变量或方法的代码%>
例子:
<%!
int number=0;
int count(){
number++;
return number;
}
%>
<%=count()%>
3、代码片段
所谓代码片段就是在JSP页面中嵌入的Java代码或脚本代码。代码片段将在页面请求的处理期间被执行通过Java代码可以定义变量或是流程控制语句等;而通过脚本代码可以应用JSP的内置对象在页面中输出内容、处理请求和响应、访问seesion会话等。代码片段的语法格式为: <% Java代码或脚本代码 %>
代码片段和声明标识的区别是,通过声明标识创建的变量和方法,在当前的JSP页面中有效,它的生命周期是从创建开始到服务器关闭结束;而代码片段创建的变量或方法,也是在JSP页面有效,当它的生命周期是到页面关闭后,就会销毁。
四、动作标识
1、包含文件标识
JSP的动作标识<jsp:include>用于向当前页面中包含其他的文件。被包含的文件可以是动态文件,也可以是静态文件,
<jsp:include>动作标识的语法格式如下:
<jsp:include page="url" flush="false|true"/>
或<jsp:include page="url" flush="false|true">
子动作标识<jsp:param>
</jsp:include>
参数说明:
page:用于指定被包含的相对路径。
flush:可选属性,用于设置是否刷新缓存区,默认值为false。
子动作标识<jsp:param>:用于向被包含的动态页面中传递参数。