Java Web编程技术(第3版微课版21世纪高等学校计算机类课程创新规划教材)
出版时间 2019-04-01T00:00
Java
88999
作者:
编者:沈泽刚
出版社:
清华大学
原售价:
79.50
折扣价:
59.70
折扣购买:
Java Web编程技术(第3版微课版21世纪高等学校计算机类课程创新规划教材)
ISBN:
9787302511427
作者简介
内容简介
第3章
JSP技术基础
本章目标
熟悉JSP页面中的各种语法元素;
理解JSP页面转换过程与生命周期;
掌握JSP页面中脚本元素的使用;
掌握隐含变量的使用;
学会page指令的各种属性的含义;
区分不同作用域对象及使用;
学会静态包含和动态包含布局页面;
掌握J**aBeans的定义和使用;
学会Web应用中异常处理方法;
了解MVC设计模式。
JSP(J**aServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来,实现表示逻辑。本章首先介绍JSP语法和生命周期、脚本元素、隐含变量,作用域对象,接下来介绍组件包含和J**aBeans使用,*后介绍异常处理和MVC设计模式。
3.1JSP语法概述
JSP语法概述
在JSP页面中可以包含多种JSP元素,比如声明变量和方法、JSP表达式、指令和动作等。这些元素具有严格定义的语法。当JSP页面被访问时,Web容器将JSP页面转换成Servlet类执行后将结果发送给客户。与其他的Web页面一样,JSP页面也有一个**的URL,客户可以通过它访问该页面。一般来说在JSP页面中可以包含的元素如表31所示。
表31JSP页面元素
JSP页面元素
简 要 说 明
标 签 语 法
声明
声明变量与定义方法
<%! J**a声明%>
小脚本
执行业务逻辑的J**a代码
<% J**a代码%>
表达式
用于在JSP页面输出表达式的值
<%=表达式%>
指令
**转换时向容器发出的指令
<%@指令%>
动作
向容器提供请求时的指令
续表
JSP页面元素
简 要 说 明
标 签 语 法
EL表达式
JSP 2.0引进的表达式语言
${applicationScope.email}
注释
用于文档注释
<%任何文本%>
模板文本
HTML标签和文本
同HTML规则
下面是一个简单的JSP页面todayDate.jsp,它输出当前的*期。
程序3.1todayDate.jsp
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="j**a.time.LocalDate" %>
<%! LocalDate date = null; %>
当前*期
<%
date = LocalDate.now();//创建一个LocalDate对象
%>
**的*期是: <%=date.toString() %>
该页面包含JSP指令、声明、小脚本和JSP表达式,其他内容称为模板文本(template text)。当JSP页面被客户访问时,页面首先在服务器端被转换成一个J**a源程序文件,然后该程序在服务器端编译和执行,*后向客户发送执行结果,通常是文本数据。这些数据由HTML标签包围起来,然后发送到客户端。由于嵌入在JSP页面中的J**a代码是在服务器端处理的,客户并不了解这些代码。
3.1.1JSP脚本元素
在JSP页面中有三种脚本元素(scripting elements): 声明、小脚本和表达式。
1. JSP声明
声明(declaration)用来在JSP页面中声明变量和定义方法。声明是以“<%!”开头,以“%>”结束的标签,其中可以包含任意数量的合法的J**a声明语句。下面是JSP声明的一个例子:
<%!LocalDate date = null; %>
上面代码声明了一个名为date的变量并将其初始化为null。声明的变量仅在页面**次载入时由容器初始化一次,初始化后在后面的请求中一直保持该值。注意,由于声明包含的是声明语句,所以每个变量的声明语句必须以分号结束。
下面的代码在一个标签中声明了一个变量r和一个getArea()方法。
<%!
dou**e r = 0; //声明一个变量r
dou**e getArea(dou**e r) { //声明求圆面积的方法
return r * r * Math.PI;
}
%>
2. JSP小脚本
小脚本(scriptlets)是嵌入在JSP页面中的J**a代码段。小脚本是以“<%”开头,以“%>”结束的标签。例如,在程序3.1中的下面代码就是JSP小脚本。
<%
date = LocalDate.now();//创建一个LocalDate对象
%>
小脚本在每次访问页面时都被执行,因此date变量在每次请求时会返回当前*期。由于小脚本可以包含任何J**a代码,所以它通常用来在JSP页面嵌入计算逻辑。同时还可以使用小脚本打印HTML模板文本。如下面代码与程序3.1的代码等价。
<%@ page contentType="text/html;charset = UTF-8" pageEncoding="UTF-8"%>
<%@ page import="j**a.time.LocalDate" %>
<%! LocalDate date = null; %>
当前*期
<%
date = LocalDate.now(); //创建一个LocalDate对象
out.print("**的*期是: " + date.toString() );
%>
这里没有在页面中直接书写一般的HTML代码,而是使用小脚本达到了同样的效果。变量out是一个隐含对象,我们将在3.4节中讨论out对象。
与其他元素不同,小脚本的起始标签“<%”后面没有任何特殊字符,在小脚本中的代码必须是合法的J**a语言代码,例如下面的代码是错误的,因为它没有使用分号结束。
<% out.print(count) %>
不能在小脚本中声明方法,因为在J**a语言中不能在方法中定义方法。
3. JSP表达式
表达式(expression)是以“<%=”开头,以“%>”结束的标签,它作为J**a语言表达式的占位符。下面是JSP表达式的例子:
**的*期是: <%=date.toString() %>
在页面每次被访问时都要计算表达式,然后将其值嵌入到HTML的输出中。与变量声明不同,表达式不能以分号结束,因此下面的代码是非法的。
<%=date.toString(); %>
使用表达式可以向输出流输出任何对象或任何基本数据类型(int、boolean、char等)的值,也可以打印任何算术表达式、布尔表达式或方法调用返回的值。
提示: 在JSP表达式的百分号和等号之间不能有空格。
下面代码声明了一些变量并通过表达式输出。
程序3.2expression.jsp
<%!
int anInt = 3;
boolean aBool = true;
Integer anIntObj = new Integer(3);
Float aFloatObj = new Float(8.6);
%>
<%= 500+380 %>
<%= anInt*3.5/100-500 %>
<%= aBool %>
<%= Math.random() %>
<%= aFloatObj %>
600分钟微信视频,全程语音讲解。理论与实践结合:从基础知识学习,*终能综合所学内容开发应用。体现*新MySQL特性 精心设计的习题:在重点难点部分,为读者精心设计了习题。这些习题有助于读者*好地理解重点,提高分析代码的能力,同时在编程中规避常见错误。