零、本节学习目标
了解JSP的概念和特点
熟悉JSP的运行原理
掌握JSP的基本语法
熟悉JSP指令的使用
掌握JSP动作元素的使用
掌握JSP隐式对象的使用
一、JSP概述
(一)什么是JSP
目标:了解JSP的概念与特征,能够知道JSP用于做什么
1、JSP的概念
JSP全名是Java Server Pages,即Java服务器页面。它是Servlet更高级别的扩展。在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。最终,JSP文件会通过Web服务器的Web容器编译成一个Servlet,用来处理各种请求。
2、JSP的特征
(1)跨平台
由于JSP是基于Java语言的,使用JSP开发的Web应用是跨平台的,可以应用于不同的系统中,如Windows、Linux等。当从一个平台移植到另一个平台时,JSP和JavaBean的代码并不需要重新编译,这是因为Java的字节码是与平台无关的,这也符合了Java语言“一次编译,到处运行”的特点。
(2)业务代码相分离
在使用JSP技术开发Web应用时,可以将界面的开发与应用程序的开发分离开。开发人员使用HTML设计界面,使用JSP标签和脚本动态生成页面上的内容。在服务器端,JSP容器负责解析JSP标签和脚本程序,生成所请求的内容,并将执行结果以HTML页面的形式返回给浏览器。
(3)组件重用
JSP中可以使用JavaBean编写业务组件,也就是使用一个JavaBean封装业务处理代码或者作为一个数据存储模型,在JSP页面中,甚至在整个项目中,都可以重复使用这个JavaBean,同时,JavaBean也可以应用到其他Java应用程序中。
(4)预编译
预编译就是在用户第一次通过浏览器访问JSP页面时,服务器将对JSP页面代码进行编译,并且仅执行一次编译。编译好的代码将被保存,在用户下一次访问时,会直接执行编译好的代码。这样不仅节约了服务器的CPU资源,还大大提升了客户端的访问速度。
(二)编写第一个JSP
目标:掌握JSP文件的编写。
1、创建Web项目
- 创建Java Enterprise,添加Web Application
2、修改Artifact名称,重新部署项目
- 在项目结构窗口里修改Artifact名称
- 在服务期配置窗口里,重新部署项目
- 切换到【Server】选项卡,设置默认浏览器
3、创建欢迎JSP页面
- 在web目录里创建
welcome.jsp
- 注意:由
welcome.jsp
页面可知,新创建的JSP文件与传统的HTML文件几乎没有什么区别,唯一的区别是默认创建时,页面代码最上方多了一条page
指令,并且该文件的后缀名是jsp
,而不是html
。 - 修改
welcome.jsp
4、启动服务器,查看结果
-
启动服务器,访问
http://localhost:8080/JSPDemo/welcome.jsp
-
注意:
welcome.jsp
的<body>
标签中添加的内容已被显示出来,这说明HTML元素可以被JSP容器解析。实际上,JSP只是在原有的HTML文件中加入了一些具有Java特点的代码,这些称为JSP的语法元素。
课堂练习:修改首页,显示如下图所示
二、JSP基本语法
(一)JSP页面的基本构成
目标:熟悉JSP的页面的基本构成
1、JSP页面构成
虽然已经创建过JSP文件,但是并未对JSP文件的页面构成进行详细介绍。一个JSP页面可以包括指令标识、HTML代码、JavaScript代码、嵌入的Java代码、注释和JSP动作标识等内容。
2、案例演示 - 显示系统当前时间
- 创建
time_info.jsp
页面
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP页面 - 显示系统当前时间</title>
</head>
<body>
<%
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(date);
%>
<h3 style="text-align: center">系统当前时间:<%= currentTime%></h3>
</body>
</html>
- 页面构成说明图
- 启动服务器,访问
http://localhost:8080/JSPDemo/time_info.jsp
(二)JSP脚本元素
目标:掌握JSP脚本元素的三种类型:JSP Scriptlets、声明标识和JSP表达式
JSP脚本元素是指嵌套在“<%”和“%>”之中的一条或多条Java程序代码。通过JSP脚本元素可以将Java代码嵌入HTML页面中,所有可执行的Java代码,都可以通过JSP脚本执行。
1、JSP Scriptlet
(1)基本概念
JSP Scriptlets 是一段代码片段。所谓代码片段,就是在JSP页面中嵌入的Java代码或脚本代码。代码片段将在页面请求的处理期间被执行,通过Java代码可以定义变量或流程控制语句等;而脚本代码可以应用JSP的内置对象在页面输出内容、处理请求和访问session会话等。
(2)语法格式
<% java 代码(变量、方法、表达式等)%>
(3)案例演示
- 创建
demo01.jsp
页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP Scriptlets</title>
</head>
<body>
<%
int a = 100, b = 150; // 定义两个整型变量
int sum = a + b; // 计算两个整数之和
out.print(a + " + " + b + " = " + sum); // 输出求和结果
%>
</body>
</html>
- 启动服务器,访问
http://localhost:8080/JSPDemo/demo01.jsp
2、声明标识
(1)基本概念
在JSP Scriptlets中可以进行属性的定义,也可以输出内容,但是它不可以进行方法的定义。如果想在脚本元素中定义方法,可以使用声明标识。声明标识用于在JSP页面中定义全局变量或方法,它以“<%!”开始,以“%>”结束。通过声明标识定义的变量和方法可以被整个JSP页面访问,所以通常使用该标识定义整个JSP页面需要引用的变量或方法。
在JSP声明语句中定义的都是成员方法、成员变量、静态方法、静态变量、静态代码块等。在JSP声明语句中声明的方法在整个JSP页面内有效,但是在方法内定义的变量只在该方法内有效。当声明的方法被调用时,会为方法内定义的变量分配内存,而调用结束后立刻会释放所占的内存。
注意:在一个JSP页面中可以有多个JSP声明标识,单个声明中的Java语句可以是不完整的,但是多个声明组合后的结果必须是完整的Java语句。
(2)语法格式
<%!
定义变量或方法等
%>
(3)案例演示
- 创建
demo02.jsp
页面
<html>
<head>
<title>JSP声明标识</title>
</head>
<body>
<%!
// 定义阶乘函数
public long factorial(int n) {
long jc = 1;
for (int i = 1; i <= n; i++) {
jc = jc * i;
}
return jc;
}
%>
<%
// 输出10的阶乘值
out.println("10! = " + factorial(10));
%>
</body>
</html>
- 启动服务器,访问
http://localhost:8080/JSPDemo/demo02.jsp
(4)注意事项
“<%!”和“%>”里面定义的属性是成员属性,相当于类的属性,方法相当于是全局的方法,也相当于是类里面的方法,但是在“<%!”和“%>”里面是不可以进行输出的,只能在里面进行方法的定义和属性的定义。
“<%!”和“%>”是用来定义属性和方法的,“<%”和“%>”主要是用来输出内容的,因此如果涉及到了成员变量的操作,那么就应该使用“<%!”和“%>”,而如果是涉及到了输出内容的时候,就使用“<%”和“%>”。
通过声明标识创建的变量和方法在当前JSP页面中有效,它的生命周期是从创建开始到服务器结束;代码片段创建的变量或方法,也是在当前JSP页面有效,但它的生命周期是页面关闭后就会被销毁。
3、JSP表达式
(1)基本概念
JSP表达式(expression)用于向页面输出信息,它以“<%=”开始,以“%>”结束。
(2)语法格式
<%= expression %>
- 上述语法格式中,参数
expression
可以是任何Java语言的完整表达式,该表达式的最终运算结果将被转换成一个字符串。
(3)案例演示
- 创建
demo03.jsp
页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP表达式</title>