第2章 JSP语法(JSP实用教程第3版)
JSP设计(第三版)

第2章 HTTP和Servlet的基础知识让我们从定义Web应用程序这一章开始。
我们都看到过一般的客户端应用软件,但怎么样才是一个真正的Web应用程序?然而,它可以被定义为一个用于用户接入的运行在服务器上的程序,通过一个简单,一般用途的客户。
今天,最常见的客户端是一种运行在pc机上的网页浏览器或工作站系统,但其他类型的用户正在迅速加入,如无线PDA ,手机,和其他专门设备。
最崇高目标是从你面前的任何类型的设备上获得你所要的信息和服务。
这意味着同样的简单客户端程序必须能够与许多不同的服务器应用通话,以及应用程序必须能够适用于许多不同类型的客户。
为了满足这一需要,必须制定详细的客户端和服务器相互通信的协义。
这正是超文本传输协议( HTTP )的目的。
通信模型所确定的HTTP形式的基础,所有的Web应用程序设计。
基本了解HTTP的关键应用,适合发展中国家的限制范围内的协议,无论哪个服务器端技术的使用。
在本章中,我们看一下最重要的细节的HTTP您需要了解作为一个Web 应用程序开发。
另外一个项目:这本书是用JSP作为服务器端技术。
JSP技术是基于Java Servlet技术。
这两种技术有着大量的术语和概念,所以知道一点servlets将帮助你,即使你开发纯JSP的应用。
要真正理解和使用的全部的JSP ,你需要知道一点servlets 。
因此,我们期待在servlet的基本入在最后一章的这一节。
2.1 HTTP请求/响应模型所有扩展HTTP和基于HTTP协议是基于一个非常简单的通信模式。
其工作原理如下:客户端,通常是一个Web浏览器,发出了一个请求资源的服务器,服务器发回的响应相应的资源(或响应的错误信息,如果它不能处理请求出于某种原因)。
A资源是一些事情的数据,如一个简单的HTML文件逐字返回到浏览器或程序,动态生成的响应。
这种简单的模式意味着三个重要的事实你需要了解:HTTP是一种无状态协议。
这意味着服务器不保留任何信息发出后客户端的反应,因此,它不能承认,多请求来自同一客户端可能有亲缘关系。
chap2_JSP语法

example2_2.jsp:
5
2. JSP页面的成员变量和方法
JSP页面在“<%!”和“%>”之间声明 定义的方法 ,在该JSP页面有效,该方法 内的变量只在该方法内有效
对于在“<%!”和“%>”标记符号之间 定义类,可以在Java程序片中使用该类 创建对象。
18
不允许两次使用page 指令给contentType 属性指定不同的属性值 .
常用类型值有: text/html、text/plain、 image/gif、 image/jpeg、 application/x-shockwave-flash、 application/msword等
实例:example2_8.jsp
16
contentType属性
contentType 属 性 值 确 定 JSP 页 面 响 应 的 MIME (Multipurpose Internet Mail Extention)类型。
例如:
<%@ page contentType="text/html " %> <%@ page contentType="application/msword" %>
如果需要在JSP页面内某处整体嵌入一个文件,就 可以考虑使用include指令标记,其语法格式如下: <%@ include file= "文件的URL " %>
如果该文件和当前JSP页面在同一Web服务目录中, 那么“文件的URL”就是文件的名字;
如果该文件在JSP页面所在目录的子目录中,比如 fileDir子目录中,那么“文件的URL”就是 “fileDir/文件的名字”。
《JSP教程JSP语法》课件

JSP优点
• 简单易学,与HTML结合紧密 • 快速开发,可重用的组件 • 强大的数据处理能力 • 利用Java生态系统,拥有丰富的类库
JSP语法基础
• JSP文件结构 • 标记和指令 • 变量声明和赋值 • 表达式和脚本片段
JSP注释
JSP注释用于向开发者提供有关代码的说明和解释,增加代码可读性和维护性。
JSP的安全性问题
介绍JSP开发中的常见安全问题,并提供相应的防范措施,确保网页的安全性。
输出文本
使用JSP可以将文本内容输出到客户端浏览器上,实现动态网页的生成。
输出HTML标记
除了输出纯文本,JSP还可以输出HTML标记,使网页更加丰富和交互。
声明变量
在JSP中,可以声明和使用变量,方便存储和操作数据。
引入JAVA类
JSP可以通过引入Java类的方式,使用Java的功能和类库,增强网页的处理能力。
条件语句
使用条件语句,可以根据条件判断执行不同的代码块,实现网页的不同展示效果。
ห้องสมุดไป่ตู้
循环语句
循环语句可以重复执行特定的代码块,适用于展示数据列表、遍历集合等场景。
跳转语句
通过跳转语句,可以实现页面间的跳转和传递数据,提供更好的用户体验。
JSP表达式
JSP表达式可以在网页中嵌入动态的Java代码和变量,实现动态的数据展示和计算。
JSP脚本片段
通过JSP脚本片段,可以编写更复杂的Java代码,实现业务逻辑和数据处理。
JSP内置对象
JSP提供了一些内置的对象,如request、response、session等,方便在网页中访问和操作数据。
JSP中的EL表达式
EL(Expression Language)是一种用于简化表达式和变量操作的语法,提高JSP代码的可读性。
2JSP的基础语法PPT课件

本章将详细介绍什么是JSP,JSP具有哪些特点。还将介绍 JSP的运行机制以及JSP的脚本元素。通过本讲的学习,应该能够 完成如下几个目标。 • 了解JSP的基本特点。 • 理解JSP的运行机制 • 熟练使用JSP声明语句 • 熟练使用JSP Scriptlets • 熟练使用JSP表达式
04
</head>
05
<body>
06
<%
07
String str = "Hello"; //声明字符串str
08
%>
09
<%= str%>
10
</body>
11
</html>
2.4 注释
JSP的注释分为两类,一类为可以在客户端显示的注释,即HTML注释;一 类是不能在客户端显示的注释,即JSP注释。
<html>
02
<head>
03
<title>JavaScriptletsDemo</title>
04
</head>
05
<body>
06
<%
07
String str = "Java Scriptlets Demo"; //声明字符串str
08
out.println(str); //输出字符串str
09
HTML注释使用<!--作为开始,以-->作为结束,中间包含的代码即为注释部 分。
JSP注释使用<%- -作为开始,以--%>作为结束,中间包含的代码即为注释 部分。
第2章 JSP语法基础 2.3 JSP指令元素、2.4 JSP动作元素

第2章 JSP语法基础
2.3 JSP指令元素 2.4 JSP动作元素
JSP开发案例教程
本章内容
01 脚本元素 03 JSP指令元素
02 案例ch2.2_datetime: 时间格式化
04 JSP动作元素
05 案例ch2.5_include: 框架类型网页
06 小结与练习
2.3 JSP指令元素
指定在当前页
4
session
中是否允许 10 isThreadSafe 指定是否线程安全
session操作
5
buffer
指定处理页面 输出内容时的 11 缓冲区大小
autoFlush
是定当缓冲区满时是 否自动清空
指定当前页面
说明当前页面是否为
6
errorPage 运行异常时调 12 isErrorPage 其他页面的异常处理
该JSP动作表示获取或创建一个名称为guess的、属于类com.GuessNumber的、生命周期 为session的对象,详见本书案例ch5.4_guessNumber(猜数游戏)。
JSP开发案例教程
所有的动作元素需要两个属性:
id属性
id属性是动作元素的唯一标识,可以在 JSP页面中被引用。动作元素创建的id值 可以通过PageContext来调用。
可以使用绝对或相对URL。 ✓ tagDir属性指示前缀将被用于标识在WEB-INF/tags目录下的标签文件。
2.4 JSP动作元素
JSP开发案例教程
2.4 JSP动作元素
JSP动作元素
➢ JSP动作利用XML语法格式的标记,来控制JSP容器Servlet引擎的行为。 ➢ 利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件
JSP程序设计教程(第2章)

如何实现 JavaScript
HTML 的 <script> 标签用于把 JavaScript 插入 HTML 页面当中。 页面当中。 如何把 JavaScript 放入 HTML 页面 <html> <body> <script type="text/javascript"> document.write("Hello World!"); </script> </body> </html> 上面的代码会在 HTML 页面中产生这样的输 出: Hello World!
JavaScript 语句
JavaScript 是由浏览器执行的语句序列。 是由浏览器执行的语句序列。 JavaScript 语句是发给浏览器的命令。这些命令的作 用是告诉浏览器要做的事情。 这个 JavaScript 语句告诉浏览器向网页输出 "Hello world" world": document.write("Hello world"); 通常要在每行语句的结尾加上一个分号。大多数人都 认为这是一个好的编程习惯,而且在 web 上的 JavaScript 案例中也常常会看到这种情况。 分号是可选的(根据 JavaScript 标准),浏览器把行 末作为语句的结尾。正因如此,常常会看到一些结尾 没有分号的例子。 注释: 注释:通过使用分号,可以在一行中写多条语句。
JavaScript 代码块
JavaScript 可以分批地组合起来。 代码块以左花括号开始,以右花括号结束。 代码块的作用是一并地执行语句序列。 本例向网页输出一个标题和两个段落:
JavaScript 注释
第2章 JSP语法

第2章 JSP语法
配合《JSP实用教程(第三版)》 例子源代码一起使用
Power Point 制作 张跃平 耿祥义
本章主要内容
2.1 JSP页面的基本结
2.2 变量和方法的声明 2.3 Java 程序片
2.4
Java表达式
2.5 JSP中的注释
2.6 JSP 指令标记
2.7 JSP 动作标记
<%@ page 属性1=“属性1的值” 属性2= “属性2的值” ……%>
或
<%@ page 属性1="属性1的值" %> <%@ page 属性2="属性2的值" %> …… <%@ page 属性n=“属性n的值” %>
page 指令标记可以指定如下属性的值 contentType、import、 language 、session、buffer、auotFlush 、isThreadSafe. 18 2016/5/4
1 contentType属性
当用户请求一个 JSP页面时, Tomcat 服务器负责解释执 行 JSP 页面,并将某些信息发送到用户的浏览器,以便用 户浏览这些信息。Tomcat服务器同时负责通知用户的浏览 器使用怎样的方法来处理所接收到的信息。 contentType 属 性 值 确 定 JSP 页 面 响 应 的 MIME (Multipurpose Internet Mail Extention)类型和JSP页面字 符的编码。属性值的一般形式是"MIME类型”或 "MIME类型;charset=编码"
2016/5/4 3
当服务器上的一个 JSP 页面被第一次请求执 行时,服务器上的JSP引擎首先将JSP页面文件转 译成一个Java文件,再将这个Java文件编译生成 字节码文件,然后通过执行字节码文件响应用户 的请求。 当多个用户请求一个 JSP 页面时, JSP 引擎为 每个用户启动一个线程,该线程负责执行常驻内 存的字节码文件来响应相应用户的请求。这些线 程由 Tomcat 服务器来管理,将 CPU 的使用权在各 个线程之间快速切换,以保证每个线程都有机会 执行字节码文件。
第2章 JSP语法(1)

• • • • • • • • • • • • • • • • • • • • •
JSP页面组成元素
<html> <head> <title>JSP 页面构成</title> </head> <!-- 这是注释,但客户端可以察看到 --> <%-- 这也是注释,但客户端不能察看到 --%> <body> <h1 align="center">JSP页面构成</h1> <%=getHello("朋友")%> <%if (now.get(Calendar.AM_PM) == Calendar.AM) {%> 早上好! <%} else {%> 下午好! <%}%> <br> <br> <jsp:include flush="false" page="welcome.jsp"> <jsp:param name="str" value="参数"/> </jsp:include> </body> </html>
错误
• • • • • • • • • • • • • • •
例子:example2-6 <%@ page contentType="text/html;charset=GB2312" %> <HTML><BODY bgcolor=cyan><FONT size=3> <% double a=12.89; int x=12,y=10; %> 计算表达式a+x*y-100/x+x%5的值: <%= a+x*y-100/x+x%5 %> <BR>计算表达式x>y&&a>0的值: <%=x>y&&a>0%> <BR>计算表达式sin(x)+cos(y): <%=Math.sin(x)+Math.cos(y)%> <BR> 求8的平方根: <%=Math.sqrt(8)%> </FONT></BODY></HTML>
JSP实用教程

在<%! … … %>中声明的变量,方 法,类,在整个jsp文件内都有效. 练习:记数器程序.
声明
<%@ page language="java" import="java.util.*" %> <html> <head> <title> test </title> </head> <body> <%! int i = 0; %> <%! int a, b, c; %> <%! Date date; %> </body> </html>
令",还有其他指令. 它们包含在"<%@ %>"卷标里. 两个主要的指令是page与include. page include
提问: 提问: <%! <% <%= <%@ <%-<jsp:
%> %> %> %> --%> />
页指令Page
Page 定义整个JSP页面的一些属性, ---language,import,contentType, session,buffer,auotFlush, isThreadSafe,info
三,JAVA程序片
一个JSP页面可以有多个JAVA程序片. 语法格式如下: <% JAVA程序片 %>
JAVA程序片(Example2_8.jsp)
<%@ page contentType="text/html;charset=GB2312" %> <HTML> <BODY bgcolor=cyan><FONT size=1> <%! long continueSum(int n) { int sum=0; for(int i=1;i<=n;i++) { sum=sum+i; } return sum; } %> <P>1到100的连续和:<BR> <% long sum; sum=continueSum(100); out.print(sum); %> </BODY> </HTML>
JSP程序设计 第02章习题答案

ԛ 08 Ⴣ JSP ᅙᄉಭ ඕӓ̣
˄3˅ Java ᑣЁˈབᵰ䳔㽕ᶤϾব䞣ǃՓ⫼Пࠡᖙ乏䖯㸠ໄᯢˈ㗠 JavaScript ϡᖙ џܜໄᯢህৃҹՓ⫼ব䞣DŽ
˄4˅JavaScript ᰃϔ辵ጠܹ䇁㿔ˈᅗ䗮䖛 HTML ᭛ᴀЁՓ⫼བϟܗ㋴䖯㸠ࣙ˖
<script></script>
2ˊՓ⫼䍙䫒Ёⱘџӊܗ㋴ᰃાϾ˛
ㄨḜ˖ 䍙䫒<a>ܗ㋴Ёⱘџӊᰃ“onclickāџӊˈ⫼᠋ऩߏ哴ᷛᎺ䬂ᯊথ⫳˄བᵰে䬂гᣝ ϟ߭ϡӮথ⫳˅DŽᔧ⫼᠋ⱘ⛺⚍ᣝ䪂Ϟˈᑊᣝಲ䔺䬂ˈৠḋӮ㾺থ䆹џӊDŽ
3ˊㅔ䗄 JavaScript Ёˈব䞣ੑৡⱘ㾘߭DŽ
ㄨḜ˖ ব䞣ੑৡ䳔㽕䙉ᅜҹϟ 5 Ͼ㾘߭˖ ˄1˅ব䞣ੑৡᖙ乏ҹϔϾ㣅᭛ᄫ↡ᰃϟߦ㒓Ўᓔ༈ˈгህᰃব䞣ৡϔᄫヺᖙ乏ᰃ A ࠄ Z a ࠄ z П䯈ⱘᄫ↡ˈᰃ“_āDŽ ˄2˅ব䞣ৡ䭓ᑺ 0~255 ᄫヺП䯈DŽ ˄3˅䰸њ佪ᄫヺˈ݊ҪᄫヺৃҹՓ⫼ӏԩᄫヺǃ᭄ᄫϟߦ㒓ˈԚϡ㛑Փ⫼ぎḐDŽ ˄4˅ϡ㛑Փ⫼ JavaScript ⫼ⱘֱ⬭ᄫDŽ ˄5˅ϡ㛑Փ⫼ JavaScript ⱘ䖤ㅫヺDŽ
–3–
ԛ 08 Ⴣ JSP ᅙᄉಭ ඕӓ̣
<td>⫼᠋ৡ˖</td> <td><input type="text" name="username"></td> </tr> <tr> <td>ᆚⷕ˖</td> <td><input type="password" name="password"></td> </tr> <tr> <td>⹂䅸˖</td> <td><input type="password" name="repassword"></td> </tr> <tr> <td>⫼᠋ⳳᅲྦྷৡ˖</td> <td><input type="text" name="realname"></td> </tr> <tr> <td>ᗻ߿˖</td> <td>
《JSP实用教程(第三版)》课后答案

《JSP实用教程(第三版)》课后答案第1章 JSP简介1.安装Tomcat引擎的计算机需要事先安装JDK吗?答:需要。
2.怎样启动和关闭Tomcat服务器?答:bin目录下使用startup.bat启动Tomcat服务器。
bin目录下使用shutdown.bat 关闭Tomcat服务器。
3. Boy.jsp和boy.jsp是否是相同的JSP文件名字?答:不是4. 请在D:\下建立一个名字为water的目录,并将该目录设置成一个Web服务目录,然后编写一个简单JSP页面保存到该目录中,让用户使用虚拟目录fish 来访问该JSP页面。
答:设置方法:①建立D:\ water目录;②修改server.xml文件,在</host>上一行添加:<Context path="/fish" docBase="D:\ water" debug="0" reloadable="true"/>③使用http://localhost:8080/ fish /example1_1.jsp访问example1_1.jsp页面.5. 假设Dalian是一个Web服务目录,其虚拟目录为moon。
A.jsp保存在Dalian 的子目录sea中。
那么在Tomcat服务器(端口号8080)所在计算机的浏览器键入下列哪种方式是访问A.jsp的正确方式?A.http://127.0.0.1:8080/A.jsp B. http://127.0.0.1:8080/Dalian/A.jspC. http://127.0.0.1:8080/moon/A.jspD. http://127.0.0.1:8080/moon/sea/A.jsp 答:D6.如果想修改Tomcat服务器的端口号,应当修改哪个文件?能否将端口号修改为80?答:修改Tomcat服务器的conf目录下的主配置文件server.xml可以更改端口号.若Tomcat服务器上没有其它占有80端口号的程序,可以将其修改为80,否则不能。
JSP第2章

page指令
• page指令用于定义JSP页面中的全局属性。 • page指令定义了许多影响页面效果的重要属性。 • 一个JSP页面可以包含多个page指令,在编译过程中,所有
的page指令都被抽出来同时应用到一个页面中。 • 除了import外,其他page指令定义的属性只能出现一次。
page指令的属性 page指令有下列属性:
• Include
– include指令用来指定怎样把另一个文件包含到当前的JSP页面中,这个文 件可以是普通的文本文件,也可以是一个JSP页面。例如“<%@ include file = ”logo.htm“%>”。
• taglib
– taglib指令允许页面使用标记扩展(定制标记),命名了标记库。在JSP页 面里遇到定制的标记时,引擎将找到在标记库中的该标记,并且找到要 实施的操作——实际上是执行Java代码。taglib指令的语法为:<%@ taglib uri=“tagLibraryURI” prefix=“tagPrefix” %>。
<h3><c:out value="我是用标签输出来的,嘿嘿…"/></h3> </body> </html>
脚本元素
• JSP脚本元素是JSP代码中使用的最频繁的元素,特别是Scriptlets。
• 脚本元素把JSP中所有的一切都集中在一起,它通常是用Java编写的脚
本代码。
表达式: <%= expression %>
声明
• 声明
– 用来在JSP程序中声明变量和方法,可以一次性声明多 个变量和方法,声明语句要使用“;”结尾,当然声明 要符合Java编程规范。
JSP的基本语法

3.4JSP内置对象
• 为了简化页面开发的复杂度,JSP提供了一些可在脚本 中使用的内置对象,在使用这些内置对象之前不需要 对它们进行声明。通过使用这些对象,可以使用户更 容易收集客户端发送的请求信息,并响应客户端的请 求以及存储客户信息。内置对象的名称是 JSP的保留 字,JSP使用内置对象来访问网页的动态内容,它一般 分为输入/输出对象、作用域通信对象、Servlet对象和 错误对象四类。
• 2.注意事项
• (1)用户不能用分号(;)作为表达式的结束 符。
• (2)一个表达式元素可以是任何一个符合 Java 语言规范的表达式,也可以由多个表达式 组成。
• (3)表达式也能作为其他JSP元素的属性值。
3.2.2脚本程序
• JSP脚本程序就是在JSP页面里嵌入的一 段Java代码。
• 1.语法格式 • JSP脚本程序的语法格式如下: • <% 代码段 %>
第3章 JSP语法
3.1 JSP通用语法
• 掌握一门编程语言要从它的语法开始。 本章在介绍JSP的通用语法和脚本元素的 基础上,详细介绍JSP的内置对象、指令 和动作。
3.1JSP通用语法
• JSP是由Sun 公司在Java语言上开发出来的一种动态网 页制作技术,可以将网页中的动态部分和静态的HTML 相分离。用户可以使用平常惯用的工具(如 Dreamweaver)并按照平常的方式来书写HTML语句。 然后,将动态部分用特殊的标记嵌入即可,这些标记 常常以“<%”开始并以“%>”结束。
3.4.3Servlet对象
• JSP引擎为每个JSP生成一个Servlet,Servlet对象提供了访问 Servlet信息的方法和变量。Servlet对象包括page对象和config对 象。
JSP实用教程课后答案

《JSP实用教程(第三版)》课后答案第1章 JSP简介1.安装Tomcat引擎的计算机需要事先安装JDK吗答:需要。
2.怎样启动和关闭Tomcat服务器答:bin目录下使用启动Tomcat服务器。
bin目录下使用关闭Tomcat服务器。
3. 和是否是相同的JSP文件名字答:不是4. 请在D:\下建立一个名字为water的目录,并将该目录设置成一个Web服务目录,然后编写一个简单JSP页面保存到该目录中,让用户使用虚拟目录fish 来访问该JSP页面。
答:设置方法:①建立D:\ water目录;②修改文件,在</host>上一行添加:<Context path="/fish" docBase="D:\ water" debug="0" reloadable="true"/>③使用 fish /访问页面.5. 假设Dalian是一个Web服务目录,其虚拟目录为moon。
保存在Dalian的子目录sea中。
那么在Tomcat服务器(端口号8080)所在计算机的浏览器键入下列哪种方式是访问的正确方式A. B. D. 答:D6.如果想修改Tomcat服务器的端口号,应当修改哪个文件能否将端口号修改为80答:修改Tomcat服务器的conf目录下的主配置文件可以更改端口号.若Tomcat服务器上没有其它占有80端口号的程序,可以将其修改为80,否则不能。
第2章 JSP语法1."<%!"和"%>"之间声明的变量与"<%"和"%>"声明的变量有何不同答:"<%!"和"%>"声明的变量为类的成员变量,其所占的内存直到Tomcat服务器关闭才释放."<%"和"%>"为类方法中声明的局部变量,仅在JSP页面后继的程序片及表达式中有效.2. 如果有2个用户访问一个JSP页面,该页面中的Java程序片将被执行几次答:2次(当有一个用户访问JSP页面,JAVA程序片就被访问一次).5. 假设有两个不同用户访问下列JSP页面,请问第一个访问和第二个访问页面的用户看到的页面的效果有何不同<%@ page contentType="text/html;charset=GB2312" %><%@ page isThreadSafe="false" %><BODY><HTML><%! int sum=1;void add(int m){sum = sum +m;}%><% int n =100;add(n);%><%=sum%></BODY></HTML>答:第一个客户看到结果是101;第二个客户看到结果是201;6. 请编写一个简单的JSP页面,显示英文字母表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§2.1 JSP 页面的基本结构
在传统的HTML 页面文件中加入 Java程序片 和JSP标签,就构成了一个JSP页面。
JSP页面可由5种元素组合而成: ① 普通的HTML标记符; ② JSP标记,如指令标记、动作标记; ③ 变量和方法的声明; ④ Java程序片; ⑤ Java表达式
9
例子2_3
例子 2_3 中,在“ <%! ”和“ %> ”之间定义了 两个方法:multi (int x,int y)和div (int x,int y),然 后在程序片中调用这两个方法。 example2_3.jsp效果如图2.3所示。
2015-1-17
10
§2.3 Java 程序片
在“ <%” 和“ %>” 之间插入 Java 程序片。一个 JSP 页面可 以有许多程序片,这些程序片将被JSP引擎按顺序执行。 程序片中声明的变量称为JSP页面的局部变量 。
2015-1-17 4
例子2_1 Tomcat 服务器的 webapps 目录的子目录都可以作 为一个Web服务目录。本章在webapps目录下新建一个Web 服务目录“ ch2”,除非特别约定,本章例子中的 JSP页 面均保存在ch2中。
例子 2_1 中, example2_1.jsp 页面包含了5种 元素(效果如图 2.1 所示),其中使用 HTML 语言 的<body>标记让网页的背景是一幅图像(需要将一 幅图像back.jpg保存在服务目录ch2中). 使用Java程序 片显示服务器端的时间,使用 Java 表达式显示一 些变量的值。
多个客户请求一个 JSP 页面时 ,Java 程序片将被执行多次, 分别在不同的线程中执行 。 Java程序片执行特点如图2.4所示。
2015-1-17
11
例子2_4
如果一个用户在执行 Java 程序片时调用 JSP页面的方法操作成 员变量,可能不希望其他用户也调用该方法操作成员变量,以免 对其产生不利的影响,那么就应该将操作成员变量的方法用 synchronized关键字修饰。
例子2_4中,通过synchronized方法操作一个成员变量 来实现一个简单的计数器。example2_4.jsp
<%@ page contentType="text/html;Charset=gb2312" %> <HTML><BODY> <%! int count=0; //被用户共享的count synchronized void setCount() //synchronized修饰的方法 { count++; } %> <% setCount(); out.println("您是第"+count+"个访问本站的用户"); %> </BODY></HTML> 2a表达式 可以在“<%=”和“%>”之间插入一个表达式, 这个表达式必须能求值。表达式的值由服务器负 责计算,并将计算结果用字符串形式发送到用户 端显示。 注意:不可插入语句,“ <%=”是一个完整的 符号,“<%”和“=”之间不要有空格 在 JSP 页面中,表达式的值被表示成一个字符 串的形式,即 Tomcat 引擎将表达式的结果转换成 字符串,然后发送给用户的浏览器。因此,在编 写 JSP 页面时,要把 Java 表达式按普通的文本来使 用。
2015-1-17 7
例子2_2 当多个用户请求一个JSP页面时,JSP引擎为每个用 户启动一个线程,这些线程由JSP引擎来管理,这些线程 共享 JSP页面的成员变量,因此任何一个用户对 JSP页面 成员变量操作的结果,都会影响到其他用户。
例子2_2利用成员变量被所有用户共享这一性 质,实现了一个简单的计数器, example2_2.jsp 效果如图2.2所示。
例子2_5
一个 JSP 页面中的 Java 程序片会按其在 页面中的顺序被执行 , 而且某个 Java 程序片 中声明的局部变量在其后继的所有 Java 程 序片以及表达式部分内都有效。利用 Java 程序片的这个性质 , 有时候可以将一个 Java 程序片分割成几个 Java 程序片 , 然后在这些 Java程序片之间再插入其他标记元素。
§2.5 JSP中的注释
注释可以增强 JSP页面的可读性,使 JSP 页面易于维 护。JSP页面中的注释可分为两种。 ( 1 ) HTML 注释:在标记符号“ <!--” 和“ -->” 之间加入 注释内容: <!-- 注释内容 --> JSP 引擎把 HTML 注释交给用户,因此用户通过浏览 器查看JSP页面的源文件时,能够看到HTML注释。 (2) JSP 注释:在标记符号“<%--”和“--%>”之间加入 注释内容:<%-- 注释内容 --%> JSP引擎忽略JSP注释,即在编译JSP页面时忽略JSP注 释。
2015-1-17 14
例子2_6
例子2_6计算表达式的值,效果如图2.6所示。example2_6.jsp <%@ page contentType="text/html;charset=gb2312" %> <HTML><body bgcolor=cyan><font size=3> <% int x=12,y=9; %> 计算表达式x+y+x%y,即<%=x%>+<%=y%>+<%=x%>%<%=y%>的值: <%= x+y+x%y %> <br>计算表达式x>y即<%=x%> > <%=y%>的值: <%= x>y %> <br>计算表达式sin(<%=Math.PI %>/2)的值: <%= Math.sin(Math.PI/2)%> <br> <% if(x-y>=0) { %> 如果<%=x%>大于<%=y%>计算<%=x%>与<%=y%> 的差:<%=x-y%>的平方根: <%=Math.sqrt(x-y)%> <% } 2015-1-17 15 %>
JSP实用教程(第三版)
第2章 JSP语法
配合《JSP实用教程(第三版)》 例子源代码一起使用
Power Point 制作 张跃平 耿祥义
本章主要内容
2.1 JSP页面的基本结
2.2 变量和方法的声明 2.3 Java 程序片
2.4
Java表达式
2.5 JSP中的注释
2.6 JSP 指令标记
2.7 JSP 动作标记
<%@ page 属性1=“属性1的值” 属性2= “属性2的值” ……%>
或
<%@ page 属性1="属性1的值" %> <%@ page 属性2="属性2的值" %> …… <%@ page 属性n=“属性n的值” %>
page 指令标记可以指定如下属性的值 contentType、import、 language 、session、buffer、auotFlush 、isThreadSafe. 18 2015-1-17
2015-1-17 17
§2.6 JSP 指令标记 2.6.1 page 指令标记
page 指令用来定义整个JSP页面的一些属性和这些属性的值, 属性值用单引号或双引号括起来。可以用一个 page指令指定多个 属性的值 ,也可以使用多个page指令分别为每个属性指定值 . page指令的作用对整个JSP页面有效,与其书写的位置无关, 习惯把page指令写在JSP页面的最前面。 例如:
1 contentType属性
当用户请求一个 JSP页面时, Tomcat 服务器负责解释执 行 JSP 页面,并将某些信息发送到用户的浏览器,以便用 户浏览这些信息。Tomcat服务器同时负责通知用户的浏览 器使用怎样的方法来处理所接收到的信息。 contentType 属 性 值 确 定 JSP 页 面 响 应 的 MIME (Multipurpose Internet Mail Extention)类型和JSP页面字 符的编码。属性值的一般形式是"MIME类型”或 "MIME类型;charset=编码"
<% Java程序片1 %> HTML标记 <% Java程序片2 %> HTML标记
例子2_5获得一个7至19之间的随机数,如果获得的数小于或等 于13就显示一幅小学生的图像,否则显示一幅中学生的图像。显 示图像需要在程序片之间插入用于显示图像的 <image src = 图像的URL>文字说明</image>的HTML标记, 且要将两幅名字分别为 xiao.jpg 和 zhong.jpg 的图像保存到 Web 服务 目录 ch2的image 文件夹中。程序运行的效果如图 2.5( a )和图2.5 (b)所示。example2_5.jsp
2015-1-17 5
§2.2 变量和方法的声明
在“<%!”和“%>”标记符号之间声明变量 和方法。
2015-1-17
6
2.2.1 声明变量 在 “ <%! ” 和 “ %> ” 标 记 符 之 间 声 明 变 量 , 即 在 “<%!”和“%>”之间放置Java的变量声明语句。变量的 类型可以是 Java 语言允许的任何数据类型,将这些变量 称为JSP页面的成员变量。例如: <%! int a, b=10 , c; String tom=null,jerry="love JSP"; Date date; %> “<%!”和“ %>”之间声明的变量在整个 JSP 页面内 都有效,与“<%!”、“%>” 标记符在JSP页面中所在的 书写位置无关。JSP引擎将JSP页面转译成Java 文件时, 将“ <%!”、“ %>” 标记符之间声明的变量作为类的成 员变量,这些变量占有的内存空间直到JSP引擎关闭才释 放。