JSP基本介绍

一、了解JSP

JSP页面是指扩展名为.jsp的文件,一个JSP页面中,包含指令标识、HTML代码、JavaScript代码、嵌入的Java代码、注释和JSP动作标识等内容。如下:

jsp和themeleaf 双视图解析_属性值

二、指令标识

指令标识主要用于设定整个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>:用于向被包含的动态页面中传递参数。