JSP基本语法

了解JSP页面 

在一个 JSP 页面中,可以包括制定标识、HTML 代码、JavaScript 代码、嵌入的 Java 代码、注释和 JSP 动作标识等内容。这些内容并不是一个 JSP 页面所必需的。

指令标识                                      

page指令

这是 JSP 页面最常用的指令,用于定义整个 JSP 页面的相关属性,这些属性在 JSP 被服务器解析成 Servlet 时会转换为相应的 Java 程序代码

language 用于设置  JSP  使用的语言,目前只支持 a Java  语言,以后可能会支持其他语言,如  C++ 、 C# 等。该属性的默认值为  Java 。
import  用于设置 p jsp  导入的类包。p Jsp  页面可以嵌入 a Java  代码片段,这些 a Java  代码在调用 I API 
contentType 

用于设置 p jsp 页面的 MIME 类型和字符编码,浏览器会据此显示网页内容。默认编码格式为 ISO-8859-1 ,该编码格式是不支持中文

autoFlush  用于设置 p jsp  页面缓存满时,是否自动刷新缓存。默认值为  true ;如果设置为  false
buffer

用于设置 p jsp 的 t out 输出对象使用的缓冲区大小,默认大小为 8KB ,且单位只能使用 kb ,建议程序员使用 8 8 的倍数 8 16,32,64,128 等
作为该属性的属性值

errorPage 

用于指定处理当前 p jsp 页面异常错误的另一个 p jsp 页面,指定的 p jsp 错误错误页面必须设置 e isErrorPage 属性为 true.
e errorPage 的属性值是一个 l url 字符串。如果设置该属性,那么在 l web.xml 文件中定义的任何错误页面都将被忽略,而优先使用该属
性定义的错误处理页面。

isErrorPage 

通过该属性可以将当前 p jsp 页面设置成错误处理页面来处理另一个 p jsp 页面的错误,也就是异常处理。这意味着当前 p jsp 页面业务的
改变。指明当前页是否能充当其他 JSP 页面的错误页。缺省值为 false

isThreadSafe 控制从  JSP  页中产生的 t Servlet  是否将实现 l SingleThreadModel  接口。(默认是  true) 
session 指定 p jsp  页面是否使用 p http 的 的 n session  会话对象。(默认是  true )
isELIgnored 表示是否在此  JSP  页面中  EL  表达式。e true  则忽略,反之 e false  则支持。默认为  false
info 定义一个通过 o getServletInfo  方法可以从 t Servlet  中检索到的串
extends

指定为 JSP 页生成的 t Servlet 的超类。格式: <%@ page extends= “ package.class” ” %>
该属性用于设置 JSP 页面继承的 a Java 类,所有 p jsp 页面在执行之前都会被服务器解析成 Servlet ,而 t Servlet 是由 a Java 类定义的,
所以
类定义的,
所以 JSP 和 t servlet 都可以继承指定的父类。该属性并不常用,而且有可能影响服务器的性能优化。

 

include指令

文件包含指令 include 是 jsp 的另一条指令标识。通过该指令可以再一个 jsp 页面中包含另一个 jsp 页面。不过该指令是静态包含,也就是说被包含文件中所有内
容会被原样包含到该 jsp 页面中,即使被包含文件中有 jsp 代码,在包含时也不会被编译执行。使用 include 指令,最终将生成一个文件,所以在被包含和包含的文件
中,不能有相同名称的变量。Include 指令包含文件的过程如图所示

说明 使用 include 指令包含文件可以大大提高代码的重用性,而且也便于以后的维护和升级

例子 2 10.2  用 e include  指令包含网站 r Banner 和版本信息栏。

 (1 )编写一个名称为 p top.jsp 的文件,用于放置网站的Banner 信息和导航条。这里将Banner 信息和导航设计为一张图片。这样完成top.jsp 文件,只需要在该

页面通过 <img> 标记引入图片即可。top.jsp 文件的具体代码如下:

(2 )编写一个名称为 copyright.jsp  的文件,用于放置网站的版权信息。 Copyright.jsp  文件的具体代码如下:

(3 )创建一个名称为 p index.jsp  的文件,在该页面中包括top.jsp 和 copyright.jsp  文件,从而实 一 完整的页面。

效果图

taglib指令

在 JSP 文件中,可以通过 taglib 指令标识声明该页面中所使用的标签库,同时引用标签库,并指定标签的前缀。在页面中,引用标签库后,就可以通过前缀来引
用标签库中的标签。taglib 指令的语法格式如下:
<%@ taglib prefix="tagPrefix" uri="tagURI" %>
参数说明:
1.prefix:用于指定标签的前缀。该前缀不能命名为 jsp,jspx,java,javax,sum,servlet 和 sunw,.
2.uri:用于指定标签库文件的存放位置。

例如:在页面中引用  JSTL  中的核心标签库。 <%@taglib prefix=”c” uri=”http:java.sun.com/jsp/jstl/core”%>

脚本标识                                

在 jsp 页面中,脚本标识使用得最为频繁。因为它们能够很方便、灵活的生成页面中的动态内容,特别是 Scriptlet 脚本程序。JSP 中的脚本标识包括 3 部分,即
jsp 表达式、声明标识和脚本程序。通过这些标识,在 jsp 页面中可以像编写 Java 程序一样声明变了、定义函数或进行各种表达式的运算。

代码片段

所谓代码片段就是在 JSP 页面中嵌入的 Java 代码或是脚本代码。代码片段将在页面请求的处理期间被执行,通过 Java 代码可以定义变量或是流程控制语句等;
而通过脚本代码可以应用 JSP 的内置对象在页面输出内容、处理请求和响应、访问 session 会话等。代码片段的语法格式如下:
<% Java 代码或是脚本代码 %>
代码片段的使用比较灵活,它所实现的功能是 jsp 表达式无法实现的。

例:

JSP表达式

JSP 表达式用于向页面中输出信息,其语法格式如下: <% = 表达式%>。表达式:可以是任何 Java 语言的完整表达式。该表达式的最终运算结果将被转换为
字符串。
注意:<%与=之间不可以有空格,但是=与其后面的表达式之间可以有空格>

例:

说明
Jsp 表达式不仅可以插入到网页的文本中,用于输出文本内容。也可以插入到 HTML 标记中,用于动态设置属性值

声明标识

声明标识用于在 JSP 页面中定义全局的变量或方法。通过声明标识定义的变量和方法可以被整个 JSP 页面访问,所以通常使用该标识定义整个 JSP 页面都需要引
用的变量或方法。

说明:
服务器执行 sql 页面时,会将 jsp 页面转换为 Servlet 类,在该类中会把使用 jsp 声明标识定义的变量和方法转换为类的成员变量和方法。
声明标识的语法格式如下:
<%! 声明变量或方法的代码 %>
注意:
<%与!之间不可以有空格,但是!其后面的代码之间可以有空格。另外,<%!与%>可以不在同一行。

例:

通过上面的代码声明全局变量和全局方法后,在后面如果通过<%=count()%>调用全局方法,则每次刷新页面,都会输出前一次值+1 的值。

说明:
代码片段与声明标识的区别是,通过声明标识创建的变量和方法,在当前 jsp 页面中有效,它的生命周期是从创建开始到服务器关闭结束;而代码片段创建的变
量或方法,也是在当前 jsp 页面中有效,但它的生命周期是页面关闭后,就是被销毁。即声明标识与代码片段的存活周期不同

JSP注释                            

由于 jsp 页面由 HTML、jsp、Java 脚本等组成,所以在其中可以使用多种注释格式

HTML中的注释

HTML 语言的注释不会被显示在网页中,但是在浏览器中选择查看网页源代码时,还是能够看到注释信息的。语法:<!-- 注释文本 -->

带有JSP表达式的注释

在 JSP 页面中可以嵌入代码片段,在代码片段中也可加入注释。在代码片段中加入的注释同 Java 的注释相同,同样也是包括以下 3 种情况。
1、单行注释     // 注释

2、多行注释     /* 注释 */

3、文档注释    /** 注释 */

隐藏注释

通过在文档中添加的 HTML 注释虽然在浏览器中不显示,但是可以通过查看源代码看到这些注释信息。所以严格来说,这种注释是不安全的。不过 JSP 还提供
了一种隐藏注释,这种注释不仅在浏览器中看不到,而且在查看 HTML 源代码时,也看不到,所以这种注释的安全性比较高。
隐藏注释的语法格式如下:<%-- 注释内容 --%>

说明:
Jsp 编译时会忽略掉隐藏注释,即使有错误,也不影响程序的运行。

动态注释

由于 HTML 注释对 JSP 嵌入的代码不起作用,因此可以利用它们的组合构成动态的 HTML 注释文本。在 JSP 页面中添加动态注释。示例代码如下:
<!-- <%=new Date()% -->

动态标识                                    

包含文件标识

Jsp 的动作标识<jsp:include>用于向当前包含其他的文件。被包含的文件可以是动态文件,也可以是静态文件。<jsp:include>动作标识包含文件的过程如图所

<jsp:include>动作标识的语法格式如下:
    <jsp:include page=”url” flush=”false|true”>
        子动作标识<jsp:param>
    </jsp:include>

参数说明:
1.page:用于指定被包含文件的相对路径。例如,指定属性值为 top.jsp.则标识包含的是与当前 jsp 文件相同文件夹中的 topjsp 文件包含到当前 jsp 页面中。
2.Flush:可选属性,用于设置是否刷新缓冲区。默认值为 false,如果设置为 true,在当前页面输出使用了缓冲区的情况下,先刷新缓冲区,然后再执行包含工作。
3.子动作标识<jsp:param>:用于向被包含的动态页面中传递参数

说明:
<jsp:include>标识对包含的动态文件和静态文件的处理方式是不同的,如果被包含的是静态的文件,则页面执行后,在使用了该标识的位置将会输出这个文
件的内容。如果<jsp:include>标识包含的是一个动态文件,那么 jsp 编译器将编译并执行这个文件。<jsp:include>标识会识别出文件的类型,而不是通过文件的名称来
判断该文件时静态的还是动态的

 例子:

 (1)top.jsp

(2)copyright.jsp

(3)index.jsp

<include>指令与<jsp:include>指令的区别:

(1)include 指令通过 file 属性指定被包含的文件,并且 file 属性不支持任何表达式;<jsp:include>动作标识通过 page 属性指定被包含的文件,而且 page 属性支
持 jsp 表达式。
(2)使用 include 指令时,被包含的文件内容会原封不动地插入到包含页中,然后 jsp 编译器再将合成后的文件最终编译成一个 Java 文件;使用<jsp:include>动
作标识包含文件时,当该标识被执行时,程序会将请求转发(注意是转发不是请求重定向)到被包含的页面,并将执行结果输出到浏览器中,然后返回包含页继续执
行后面的代码。因为服务器执行的是多个文件,所以 jsp 编译器会分别对这些文件进行编译。
(3)在应用 include 指令包含文件时,由于被包含的文件最终会生成一个文件,所以在被包含文件,包含文件中不能有重名的变量或方法;而在应用<
jsp:include>动作标识包含文件时,由于每个文件时单独编译的,所以在被包含文件和包含文件中重名的变量和方法是不相冲突的。

请求转发标识

通过<jsp:forward>动作标识可以将请求转发到其他的 web 资源。流程图如下:

<jsp:forward>动作标识语法格式如下:

    <jsp:forward page=”url”>

    或

    <jsp:forward page=”url”>

        子动作标识<jsp:param>

    </jsp:forward>

参数说明:
(1)page: 用于指定请求转发的目标页面。该属性值可以是一个指定文件路径的字符串,也可以是表示文件路径的 jsp 表达式。但是请求被转向的目标文件必须是
内部的资源,即当前应用中的资源。
(2)子动作标识<jsp:param>:用于向转向的目标文件中传递参数。

例子:

(1)index.jsp 主要代码

(2)login.jsp 主要代码

传递参数标识

JSP 的动作标识<jsp:param>可以作为其他标识的子标识,用于为其他标识传递参数。

语法格式如下:

    <jsp:param name="参数名" value="参数值" />

参数说明:
(1)name: 用于指定参数名称
(2)value: 用于设置对应的参数值。

例子:
    

1 <jsp:forward page=”modify.jsp”>
2     <jsp:param name=”userId” value=”7” />
3 </jsp:forward>

在上面的代码中,实现了在请求转发到 modify.jsp 页面的同时,传递了参数 userId,期参数值为 7

 

posted @ 2018-05-12 18:02  Jin同学  阅读(317)  评论(0)    收藏  举报