1.2.2 JSP基本语法

在JSP文件中可以嵌套很多内容,例如,JSP的脚本元素和注释等,这些内容的编写都需要遵循一定的语法规范,接下来,本节将针对这些语法进行详细的讲解。

1.1.1.1 JSP脚本元素

JSP脚本元素是指嵌套在<%和%>之中的一条或多条Java程序代码。通过JSP脚本元素可以将Java代码嵌入HTML页面中,所有可执行的Java代码,都可以通过JSP脚本来执行。

JSP脚本元素主要包含如下三种类型:

l  JSP Scriptlets

l  JSP声明语句

l  JSP表达式

1.     JSP Scriptlets

JSP Scriptlets 是一段代码段。当需要使用Java实现一些复杂操作或控制时,可以使用它。JSP Scriptlets的语法格式如下所示:

<% java 代码(变量、方法、语句等)%>

    在JSP Scriptlets中声明的变量是JSP页面的局部变量,调用JSP Scriptlets时,会为局部变量分配内存空间,调用结束后,释放局部变量占有的内存空间。

2.     JSP声明语句

JSP的声明语句用于声明变量和方法,它以“<%!”开始,以“%>”结束,其语法格式如下所示:

<%!

    定义的变量或方法等

%>

在上述语法格式中,被声明的Java代码将被编译到Servlet的_jspService()方法之外,即在JSP声明语句中定义的都是成员方法、成员变量、静态方法、静态变量、静态代码块等。在JSP声明语句中声明的方法在整个JSP页面内有效。

在一个JSP页面中可以有多个JSP声明语句,单个声明中的Java语句可以是不完整的,但是多个声明组合后的结果必须是完整的Java语句。接下来,通过一个案例来演示JSP Scriptlets和声明语句的使用。

在day12项目的WebContent目录下创建一个名称为example01.jsp的文件,在该文件中编写声明语句,如文件1-1所示。

文件1-1   example01.jsp

 1  <%@ pagelanguage="java" contentType="text/html; charset=UTF-8"

 2      pageEncoding="UTF-8"%>

 3  <!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"

 4                          "http://www.w3.org/TR/html4/loose.dtd">

 5  <html>

 6  <head>

 7  <metahttp-equiv="Content-Type" content="text/html;charset=UTF-8">

 8  <title>JSP声明语句</title>

 9  </head>

 10 <%!

 11     int a = 1, b = 2; //定义两个变量a,b

 12 %>

 13 <%!

 14    public String print() { //定义print方法

 15         String str ="itcast"; //方法内定义的变量str

 16         return str;

 17     }

 18 %>

 19 <body>

 20     <%

 21         out.println(a + b); //输出两个变量的和

 22     %>

 23     <br>

 24     <%

 25         out.println(print());//调用print()方法,输出其返回值

 26     %>

 27 </body>

 28 </html>

在文件1-1中,首先使用<%!和%>定义了两个变量a、b,以及print()方法,然后使用了<%和%>输出了两个常量的和,以及print()方法中的返回信息。启动项目后,在浏览器地址栏中输入地址“http://localhost:8080/day17/example01.jsp”访问example01.jsp文件,显示效果如图1-8所示。

从图1-8中可以看到,浏览器中已经显示出了相应的结果。

需要注意的是,<%!和%>里面定义的变量是成员变量,方法是全局的方法,此处只是声明,也就是定义,变量或方法都没有被调用。<%和%>里面定义的是局部变量,不能定义方法(Java方法中不能再嵌套定义方法),代码块操作可以将结果输出到浏览器。总之,<%!和%>是用来定义成员变量属性和方法的,<%和%>主要是用来输出内容的,因此如果涉及到了成员变量的操作,那么就应该使用<%!和%>,而如果是涉及到了输出内容的时候,就使用<%和%>。

1.     JSP表达式

JSP表达式(expression)用于将程序数据输出到客户端,它将要输出的变量或者表达式直接封装在以<%=开头和以“%>”结尾的标记中,其基本的语法格式如下所示:

<%= expression %>

在上述语法格式中,JSP表达式中的将“expression”表达式结果输出到浏览器。例如,对example01.jsp文件进行修改,将<body>内的脚本元素修改为表达式,具体如下。

<%=a+b %><br>

<%=print() %>

在浏览器中再次访问example01.jsp页面,同样可以正确输出如图1-8中的显示结果需要注意的是:

l  <%=”和“%>”标记之间插入的是表达式,不能插入语句。

l  <%=”是一个完整的符号,“<%”和“=”之间不能有空格。

l   JSP表达式中的变量或表达式后面不能有分号(;)。

1.1.1.1 JSP注释

同其他各种编程语言一样,JSP也有自己的注释方式,其基本语法格式如下:

<%-- 注释信息 --%>

需要注意的是,Tomcat在将JSP页面编译成Servlet程序时,会忽略JSP页面中被注释的内容,不会将注释信息发送到客户端。接下来,通过一个案例来演示JSP注释的使用。

在day12项目的WebContent目录下创建一个名称为example02的JSP页面,如文件1-2所示。

文件1-1   example02.jsp

 1  <%@ pagelanguage="java" contentType="text/html; charset=UTF-8"

 2      pageEncoding="UTF-8"%>

 3  <!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"

 4                            "http://www.w3.org/TR/html4/loose.dtd">

 5  <html>

 6  <head>

 7  <meta http-equiv="Content-Type"content="text/html; charset=UTF-8">

 8  <title>JSP注释</title>

 9  </head>

 10 <body>

 11     <!-- 这个是HTML注释 -->

 12     <%-- 这个是JSP注释 --%>

 13 </body>

 14 </html>

在上述页面代码中,包含HTML注释和JSP两种注释方式。启动Tomcat服务器,在浏览器的地址栏中输入地址“http://localhost:8080/day17/example02.jsp”访问example02.jsp页面,此时,可以看到example02.jsp页面什么都不显示,接下来在打开的页面中点击鼠标右键,在弹出菜单中选择【查看源文件】选项,结果如图1-9所示。

1.1.1   JSP指令

为了设置JSP页面中的一些信息,Sun公司提供了JSP指令。 JSP 2.0中共定义了page、include和taglib三种指令,每种指令都定义了各自的属性。接下来,本节将针对page和include指令进行详细的讲解。

1.1.1.1 page指令

在JSP页面中,经常需要对页面的某些特性进行描述,例如,页面的编码方式,JSP页面采用的语言等,这时,可以通过page指令来实现。page指令的具体语法格式如下所示:

<%@ page 属性名1= "属性值1"属性名2= "属性值2" ...%>

在上面的语法格式中,page用于声明指令名称,属性用来指定JSP页面的某些特性。page指令提供了一系列与JSP页面相关的属性,如表1-1所示。

表1-1     page指令的常用属性

表1-1中列举了page指令的常见属性,其中,除了import属性外,其他的属性都只能出现一次,否则会编译失败。需要注意的是,page指令的属性名称都是区分大小写的。

下面列举两个使用page指令的示例:

<%@ page language="java"contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ page import="java.awt.*" %>

<%@ pageimport="java.util.*","java.awt.*"%>

上面代码中使用了page指令的language、contentType、pageEncoding和import属性。

    需要注意的是,page指令对整个页面都有效,而与其书写的位置无关,但是习惯上把page指令写在JSP页面的最前面。

1.1.1.1 include指令

在实际开发时,有时需要在JSP页面静态包含一个文件,例如HTML文件,文本文件等,这时,可以通过include指令来实现,include指令的具体语法格式如下所示:

<%@ include file="被包含的文件地址"%>

include指令只有一个file属性,该属性用来指定插入到JSP页面目标位置的文件资源。

为了使读者更好地理解include指令的使用,接下来,通过一个案例来学习include指令的具体用法。

在day12项目的WebContent目录下创建两个JSP页面文件date.jsp和include.jsp,在include.jsp文件中使用include指令将date.jsp文件包含其中,具体如文件1-3和文件1-4所示。

文件1-1   date.jsp

 1  <%@ pagelanguage="java" contentType="text/html; charset=UTF-8"%>

 2  <html>

 3  <head><title>Inserttitle here</title>

 4  </head>

 5  <body>

 6  <% out.println(newjava.util.Date().toLocaleString());%>

 7  </body>

 8  </html>

文件1-2   include.jsp

 9  <%@ pagelanguage="java" contentType="text/html; charset=UTF-8"%>

 10 <html>

 11 <head>

 12 <title>欢迎你</title>

 13 </head>

 14 <body>

 15     欢迎你,现在的时间是:

 16     <%@ include file="/date.jsp"%>

 17 </body>

 18 </html>

启动tomcat服务器,在浏览器中访问地址“http://localhost:8080/day17/include.jsp”,浏览器的显示结果如图1-10所示。

从图1-10中可以看出,date.jsp文件中用于输出当前日期的语句已显示出来,这说明include指令成功地将date.jsp文件中的代码合并到了include.jsp文件中。

关于include指令的具体应用,有很多问题需要注意,接下来,将这些问题进行列举,具体如下:

(1) 被引入的文件必须遵循JSP语法,其中的内容可以包含静态HTML、JSP脚本元素和JSP指令等普通JSP页面所具有的一切内容。

(2) 除了指令元素之外,被引入的文件中的其他元素都被转换成相应的Java源代码,然后插入进当前JSP页面所翻译成的Servlet源文件中,插入位置与include指令在当前JSP页面中的位置保持一致。

1.1.1.1 taglib指令

用于页面中引入标签库的,这个指令会在后面介绍JSTL的时候讲解.

1.1.2   JSP内置对象

1.1.2.1 内置对象的概述

在JSP页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象则会非常麻烦。为了简化Web应用程序的开发,JSP2.0规范中提供了9个隐式(内置)对象,它们是JSP默认创建的,可以直接在JSP页面中使用。这9个隐式对象的名称、类型和描述如表1-2所示。


1.1.1.1 out对象

在JSP页面中,经常需要向客户端发送文本内容,这时,可以使用out对象来实现。out对象是javax.servlet.jsp.JspWriter类的实例对象,它的作用与ServletResponse.getWriter()方法返回的PrintWriter对象非常相似,都是用来向客户端发送文本形式的实体内容。不同的是,out对象的类型为JspWriter,它相当于一种带缓存功能的PrintWriter。接下来,通过一张图来描述JSP页面的out对象与Servlet引擎提供的缓冲区之间的工作关系,具体如图1-11所示。

从图1-11可以看出,在JSP页面中,通过out隐式对象写入数据相当于将数据插入到JspWriter对象的缓冲区中,只有调用了ServletResponse.getWriter()方法,缓冲区中的数据才能真正写入到Servlet引擎所提供的缓冲区中。为了验证上述说法是否正确,接下来,通过一个具体的案例来演示out对象的使用。

在day12项目的WebContent目录下创建一个名称为out的JSP页面,如文件1-5所示。

文件1-1    out.jsp

 1  <%@ pagelanguage="java" contentType="text/html; charset=UTF-8"%>

 2  <html>

 3  <head>

 4  <title>Insert titlehere</title>

 5  </head>

 6  <body>

 7  <%

 8     out.println("firstline<br>");

 9     response.getWriter().println("secondline<br>");

 10 %> 

 11 </body>

 12 </html>

启动Tomcat服务器,在浏览器地址栏中访问“http://localhost:8080/day12/out.jsp”,浏览器的显示结果如图1-12所示。


猜你喜欢

转载自blog.csdn.net/shitianhang123/article/details/79284200
今日推荐