购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 JSP语法

JSP 网页主要由两部分组成,一部分是 需要在服务器端处理 的(如Java代码段),另一部分是 直接发送回客户端 的(如HTML部分)。

一个较完整的JSP网页通常由以下几部分组成。

· HTML注释 :在客户端显示的注释。

· JSP隐藏注释 :不发送给客户端,但保留在JSP页面中的注释。

· HTML页面元素 :普通的HTML页面组成元素

· 声明 :用于声明JSP中的合法变量和方法。

· 表达式 :符合JSP语法的表达式。

· 代码段 :符合JSP语法的代码段。

· JSP指令 :JSP为我们提供的预定义指令。

· JSP行为标签 :JSP为我们提供的action标签。

下面对JSP的组成部分分别进行讲解。

3.2.1 HTML注释

在客户端显示一个注释。

这种注释和HTML中的注释很相似,唯一不同的就是可以在这个注释中用表达式,以便动态生成不同内容的注释。

语法格式:

<!-- 注释内容 [ <%= 表达式 %> ] -->

用法举例:

<!-- 本文件创建于 2006 年 4 月16日 -->

<!-- 现在时间为:<%=(new java.util.Date()).toLocaleString( )%> -->

3.2.2 隐藏注释

不发送给客户端,但保留在JSP页面中的注释。JSP编译时将忽略掉<%-- 和 --%>之间的内容,因此在客户端看不到这部分内容。

语法格式:

<%-- 注释内容 --%>

用法举例:

3.2.3 声明

用于声明JSP中的合法变量和方法。

在<%! 和 %> 中可定义一个或多个变量或方法,凡是在<%! 和 %>之间定义的变量为该页面级别的共享变量,可被访问此网页的所有用户共享,使用不当可能会有某些意想不到的副作用。因此建议读者定义变量时,可在后面将讲到的<% 和 %>中定义。

一个声明仅在一个页面中有效。如果每个页面都需要用到的一些声明,最好把它们写成一个单独的文件,然后用<%@ include %>或<jsp:include >元素包含进来。

语法格式:

<%! 变量或方法声明 %>

用法举例:

3.2.4 表达式

在JSP中表达式经常被用到,在<%= 和 %> 中间可包含任何一个有效的Java表达式。表达式在服务器端经过计算后,将计算结果转化成字符串插入到该表达式在JSP文件中的位置上。

表达式后不能加分号,这是一个需要特别注意的地方。

语法格式:

<%= Java表达式 %>

用法举例:

<%@ page language='java' contentType='text/html; charset=gb2312'%>

<html>

<head><title>测试页面</title></head>

<body>

<h1>现在的时间是:<%=(new java.util.Date()).toLocaleString()%></h1>

</body>

</html>

3.2.5 代码段

在<% 和 %> 中间可以包含任何符合Java语言语法的程序片段。JSP中的主要程序也就写在<% 和 %>的中间。

<% 和 %> 中间的代码段在服务器端被执行,产生与代码段功能对应的输出结果,真正实现动态网页的功能。

语法格式:

用法举例:

3.2.6 JSP指令

JSP指令主要用来提供整个JSP页面的相关信息和设定JSP页面的相关属性,如设定网页的编码方式、脚本语言,以及包含外部文件等。

语法格式:

<%@ 指令名 属性名='属性值' %>

用法举例:

<%@ page language='java' contentType='text/html; charset=gb2312'%>

平时常用的有3条指令:page、include 和taglib,下面逐一讲解。

1.page指令

page指令用于定义JSP文件中的全局属性,主要用来设定整个JSP 文件的属性和相关功能。

语法格式:

<%@ page 属性 1='值 1' 属性 2= '值 2' …… %>

page指令的常用属性见表3-4。

表3-4 page指令的常用属性

用法举例:

<%@ page language='java' contentType='text/html; charset=gb2312'%>

<%@ page import='java.util.*, java.sql.*' %>

<%@ page buffer='30kb' autoFlush='true' %>

<%@ page errorPage='errors.jsp' %>

2.Include 指令

在JSP中Include指令用来包含一个静态的文件(如JSP网页文件、HTML网页文件等),不能包含用<%= 和 %> 表示的表达式代表的文件。如果某部分的代码在众多地方需要用到的话,可以将这部分代码单独存放到一个文件中,所有需要用到该文件的页面使用Include指令将它包含进来,这样就大大提高了代码的可复用性,而且也便于日后维护升级。

为了使整个页面的标签结构体系不发生冲突,建议最好不要在被包含的文件中出现诸如<html>、</html>、<body>、</body>等的标签。

语法格式:

<%@ include file='被包含文件URL' %>

用法举例:

header.inc文件

<%@ page language='java' contentType='text/html; charset=gb2312'%>

<%@ page import='java.util.*, java.sql.*' %>

<%@ page buffer='30kb' autoFlush='true' %>

<%@ page errorPage='errors.jsp' %>

index.jsp文件

<%@ include file='header.inc' %>

3.taglib指令

在JSP中taglib指令用来声明此JSP文件使用的自定义标签,同时引用标签库,并指定标签的前缀。

语法格式:

<%@ taglib uri = 'tagLibraryURI' prefix='tagPrefix' %>

taglib指令有两个属性值:

· uri = 'tagLibraryURI':指明标签库文件的存放位置。

· prefix ='tagPrefix':指明该自定义标签使用时的前缀。

用法举例:

注:该示例只是想说明自定义标签的使用语法,对示例中所使用的标签的具体含义不需要明白,这是一个使用了Struts标签的示例,标签的含义在后续章节将有讲解。

3.2.7 JSP行为标签

JSP行为标签即Action标签。属于服务器端的JSP元素,它执行服务器端的任务而不需我们编写Java代码,大大提高了开发效率。

常用的JSP Action标签见表3-5。

表3-5 JSP行为标签列表

1.<jsp:include>、<jsp:param>标签

使用<jsp:include>标签实现在JSP中包含一个静态的或者动态的文件,而<jsp:param>标签通常用来传递参数。

语法格式一:

<jsp:include page='{静态URL | <%= 表达式%>}' flush='true | false' />

语法格式二:

<jsp:include page='{静态URL | <%= 表达式%>}' flush=' true | false ' >

<jsp:param name='参数名' value='{参数值 | <%= 表达式 %>}' />

</jsp:include>

用法举例:

<jsp:include page='common/header.jsp' />

<jsp:include page='common/menu.htm' />

<jsp:include page='login.jsp'>

<jsp:param name='username' value='admin' />

</jsp:include>

<jsp:include page='common/footer.jsp' />

2.<jsp:forward>标签

该标签可以把请求转发给同一Web应用中的其他组件。

语法格式一:

<jsp:forward page='{静态URL | <%= 表达式%>}' />

语法格式二:

<jsp:forward page='{静态URL | <%= 表达式%>}' >

<jsp:param name='参数名' value='{参数值 | <%= 表达式 %>}' />

</jsp:forward>

用法举例:

<jsp:forward page='login.jsp'>

3.< jsp:plugin >和<jsp:fallback>标签

使用< jsp:plugin >标签在浏览器中执行一个Applet或Bean。

语法格式:

用法举例:

4.<jsp:useBean>标签

该标签用来在JSP页面中创建一个Bean实例并指定其名字及作用范围。

语法格式:

<jsp:useBean id='name' scope='page | request | session | application' typeSpec />

其中typeSpec有以下几种情况:

·class='package.class'

·type='typeName'

·class='package.class' type='typeName'

·beanName='beanName' type='typeName'

用法举例:

<jsp:useBean id='service' class='autocomplete.Department' scope='page' />

5.<jsp:setProperty>标签

<jsp:setProperty>元素使用Bean给定的setter方法,在Bean中设置一个或多个属性值。我们在使用这个元素之前必须使用<jsp:useBean>声明此Bean。

<jsp:useBean>和<jsp:setProperty>是联系在一起的,在<jsp:setProperty>中的name的值应当和<jsp:useBean>中id的值相同。

语法格式:

<jsp:setProperty name='beanName' propertyExpression/>

其中propertyExpression有以下几种情况:

·property='*'

·property='propertyName'

·property='propertyName' param='parameterName'

·property='propertyName' value='propertyValue'

用法举例:

<jsp:setProperty name='mybean' property='*' />

<jsp:setProperty name='mybean' property='username' />

<jsp:setProperty name='mybean' property='username' value='admin' />

6.<jsp: getProperty >标签

获取Bean的属性值,用于显示在页面中。

语法格式:

<jsp:getProperty name=' beanName ' property='propertyName' />

用法举例:

<jsp: getProperty name='mybean' property='username' /> NpZ+6hGNJfe2l0PVDkJ+JwXptf5mdzITZpmWQlHq439di1BzuEGnoHUEOR2WIVOc

点击中间区域
呼出菜单
上一章
目录
下一章
×