动态网站开发学习笔记:JSP技术

本文详细介绍了JSP技术,包括JSP的概念、特征,如跨平台、业务代码分离、组件重用和预编译。接着,通过编写第一个JSP页面,展示了JSP的基本语法,如页面构成、脚本元素(Scriptlets、声明标识和表达式)以及注释的使用。此外,文章还探讨了JSP指令,如page、include和taglib指令的运用,帮助读者全面掌握JSP开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

零、本节学习目标

  1. 了解JSP的概念和特点

  2. 熟悉JSP的运行原理

  3. 掌握JSP的基本语法

  4. 熟悉JSP指令的使用

  5. 掌握JSP动作元素的使用

  6. 掌握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
    在这里插入图片描述
  • 设置项目名称与保存位置
    在这里插入图片描述
  • 单击【Finish】按钮
    在这里插入图片描述

2、修改Artifact名称,重新部署项目

  • 在项目结构窗口里修改Artifact名称
    在这里插入图片描述
  • 在服务器配置窗口里,重新部署项目
    在这里插入图片描述
  • 切换到【Server】选项卡,设置默认浏览器
    在这里插入图片描述
    3、创建欢迎JSP页面
  • 在web目录里创建welcome.jsp
    在这里插入图片描述
    在这里插入图片描述
  • 注意:由welcome.jsp页面可知,新创建的JSP文件与传统的HTML文件几乎没有什么区别,唯一的区别是默认创建时,页面代码最上方多了一条page指令,并且该文件的后缀名是jsp,而不是html。
  • 修改welcome.jsp
    在这里插入图片描述
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>欢迎</title>
</head>
<body>
<h1 style="text-align: center; color: red">欢迎访问泸州职业技术学院</h1>
<h3 style="text-align: center"><%= new Date()%></h3>
</body>
</html>

4、启动服务器,查看结果

  • 启动服务器,访问http://localhost:8080/JSPDemo/welcome.jsp
    在这里插入图片描述

二、JSP基本语法

(一)JSP页面的基本构成

  • 目标:熟悉JSP的页面的基本构成

1、JSP页面构成

  • 虽然已经创建过JSP文件,但是并未对JSP文件的页面构成进行详细介绍。一个JSP页面可以包括指令标识、HTML代码、JavaScript代码、嵌入的Java代码、注释和JSP动作标识等内容。

2、案例演示 - 显示系统当前时间

  • 创建time_info.jsp页面
    在这里插入图片描述
    在这里插入图片描述
  • 页面构成说明图
    在这里插入图片描述
  • 启动服务器,访问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; // 计算两个整数之和
        // 利用JSP隐式对象`out`输出结果
        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页面
    在这里插入图片描述
    在这里插入图片描述
  • 具体代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<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.print("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>
</head>
<body>
    <%!
        int a = 100, b = 150; // 定义两个整型变量
    %>
    sum = <%= a + b %> <!-- JSP表达式 -->
</body>
</html>

  • 启动服务器,访问http://localhost:8080/JSPDemo/demo03.jsp
    在这里插入图片描述
(4)注意事项

注意“<%=”是一个完整的符号,“<%”和“=”之间不能有空格,且JSP表达式中的变量或表达式后面不能有分号(;)。

(三)JSP注释

  • 熟悉JSP注释中的带有JSP表达式的注释、隐藏注释、动态注释

1、带有JSP表达式的注释

(1)单行注释
  • 基本概念:在JSP页面中可以嵌入代码片段,在代码片段中也可以加入注释。代码片段中的注释同Java的注释相同,其中单行注释以“//”开头,后面接注释内容。
  • 语法格式
// 注释内容
(2)多行注释
  • 基本概念:多行注释以“/”开头,以“/”结束。在这个标识中间的内容为注释内容,并且注释内容可以换行。
  • 语法格式
/*
  注释内容1
  注释内容2
  ......
 */

  • 为了程序的美观,习惯上在每行注释内容的前面加上一个“*
/*
 * 注释内容1
 * 注释内容2
 * ......
 */

(3)提示文档注释
  • 基本概念:提示文档注释在被Javadoc文档工具生成文档时读取,文档是对代码结构和功能的描述。
  • 语法格式
/**
  提示信息1
  提示信息2
  ......
 */

同多行注释一样,为了程序的美观,习惯上在每行注释内容的前面加上一个“*

/**
 * 提示信息1
 * 提示信息2
 * ......
 */

  • 注意:提示文档注释方法与多行注释很相似,但细心的读者会发现,它以“/**”作为注释的开始标记,而不是“/*”。提示文档注释所注释的内容,服务器不会做任何处理。

(4)案例演示

  • 创建demo04.jsp页面
    在这里插入图片描述
  • 具体代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>带有JSP表达式的注释</title>
</head>
<body>
  <%!
    /**
     * @param a
     * @param b
     * @return a + b
     */
    public int sum(int a, int b) {
        /*
         * a, b都是形式参数
         */
        return a + b;  // 返回两个整数之和
    }
  %>
  <%
      int a = 100, b = 150; // 定义两个整型变量
      int sum = a + b; // 调用求和函数计算两个整数之和,此处a,b是实际参数
      out.println("sum = " + sum); // 输出求和结果
  %>
</body>
</html>

  • 启动服务器,访问http://localhost:8080/JSPDemo/demo04.jsp
    在这里插入图片描述

2、隐藏注释

(1)基本概念
  • 在文档中添加的HTML注释虽然在浏览器页面中不显示,但是可以通过查看源代码的方式看到这些注释信息。所以严格来说,这些注释是不安全的。为此,JSP提供了隐藏注释,隐藏注释不仅在浏览器页面中看不到,在查看HTML源代码时也看不到,所以隐藏注释有着较高的安全性。
(2)语法格式
<%-- 注释内容 --%> 

(3)案例演示
  • 创建demo05.jsp页面
    在这里插入图片描述
    在这里插入图片描述
  • 具体代码
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSP注释</title>
</head>
<body>
    <h1>学习JSP元素</h1>  <!--HTML注释: 一级标题显示-->
    <%= new Date()%>> <%--JSP注释:用JSP表达式显示当前日期--%>
</body>
</html>

  • 启动服务器,访问http://localhost:8080/JSPDemo/demo05.jsp
    在这里插入图片描述
    在打开的页面中点击鼠标右键,在弹出菜单中选择“查看网页源代码“选项
    在这里插入图片描述
  • 注意:在上图中,网页源代码只显示出了HTML注释,而没有显示JSP的注释信息。这是因为Tomcat编译JSP文件时,会将HTML注释当成普通文本发送到客户端,而JSP页面中格式为“<%-- 注释信息 --%>”的内容则会被忽略,不会发送到客户端。

3、动态注释

(1)基本概念

由于HTML注释对JSP嵌入的代码不起作用,因此可以利用它们的组合构成动态的HTML注释文本。

(2)语法格式
<!-- JSP元素 -->

(3)案例演示
  • 创建demo06.jsp页面
    在这里插入图片描述
    在这里插入图片描述
  • 具体代码
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    随机数:<%= Math.random() %> <!--求随机数,当前日期:<%= new Date()%> -->
</body>
</html>

  • 启动服务器,访问http://localhost:8080/JSPDemo/demo06.jsp
    在这里插入图片描述
  • 在打开的页面中点击鼠标右键,在弹出菜单中选择“查看网页源代码“选项
    在这里插入图片描述

三、JSP指令

(一)page指令

  • 目标:熟悉JSP 2.0中定义的page指令
1、基本概念
  • 在JSP页面中,经常需要对页面的某些特性进行描述,例如,页面的编码方式,JSP页面采用的语言等,这些特性的描述可以通过page指令实现。
2、语法格式
<%@ page 属性名1 = "属性值1" 属性名2 = "属性值2" ...%>

  • page用于声明指令名称,属性用来指定JSP页面的某些特性。page指令还提供了一系列与JSP页面相关的属性。

4、案例演示

  • page指令的常见属性中除了import属性外,其他的属性都只能出现一次,否则会编译失败。
  • 创建错误之后跳转的页面error.jsp
    在这里插入图片描述
    在这里插入图片描述
  • 具体代码

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
    <head>
        <title>错误页面</title>
    </head>
    <body>
        <h3 style="text-align: center">错误信息:<%= exception.getMessage()%></h3>
    </body>
</html>

  • 创建demo07.jsp页面
    在这里插入图片描述
    在这里插入图片描述
  • 具体代码
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>JSP页面 - 显示系统时间</title>
    </head>
    <%--  JSP脚本元素  --%>
    <%
        Date date = new Date();
        // year,month,day,hour,minute,second
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String currenTime = sdf.format(date);
    %>
    <%-- JSP表达式元素 --%>
    <h3 style="text-align: center">系统当前时间:<%= currenTime %></h3>
</html>

  • 查看页面指令
    在这里插入图片描述

  • 上面红框中的代码使用了page指令的language、contentType、pageEncoding和import属性。需要注意的是,page指令对整个页面都有效,而与其书写的位置无关,但是习惯上把page指令写在JSP页面的最前面。

  • 启动服务期,访问http://localhost:8080/JSPDemo/demo07.jsp
    在这里插入图片描述

  • 修改demo07.jsp页面,故意让Java代码犯错
    在这里插入图片描述

  • 启动服务期,访问http://localhost:8080/JSPDemo/demo07.jsp,显示系统默认错误页面
    在这里插入图片描述

  • 如果demo07.jsp指定错误页面error.jsp
    在这里插入图片描述

  • 启动服务期,访问http://localhost:8080/JSPDemo/demo07.jsp,显示用户指定的错误页面
    在这里插入图片描述

  • 结构图
    在这里插入图片描述

(二)include指令

  • 目标:掌握JSP 2.0中定义的include指令
1、基本概念
  • 在实际开发时,有时需要在JSP页面中包含另一个JSP页面,这时,可以通过include指令实现。
2、语法格式
<%@ include file="被包含的文件地址" %>
  • include指令只有一个file属性,用于指定要包含文件的路径。需要注意的是,插入文件的路径一般不以“/”开头,而是使用相对路径。
3、案例演示
  • 创建demo08.jsp页面
    在这里插入图片描述
    在这里插入图片描述
  • 具体代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>欢迎页面</title>
</head>
<body>
    <h1 style="text-align: center;color: orange">欢迎访问JSP世界</h1>
    <%@ include file="time_info.jsp"%>
</body>
</html>

  • 启动服务器,访问http://localhost:8080/JSPDemo/demo08.jsp
    在这里插入图片描述
  • 结构图
    在这里插入图片描述

4、常见问题

(1)被引入的文件必须遵循JSP语法,其中的内容可以包含静态HTML、JSP脚本元素和JSP指令等普通JSP页面所具有的一切内容。
(2)除了指令元素之外,被引入的文件中的其他元素都被转换成相应的Java源代码,然后插入进当前JSP页面所翻译成的Servlet源文件中,插入位置与include指令在当前JSP页面中的位置保持一致。
(3)file属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前Web应用程序的根目录(注意不是站点根目录);否则,表示相对于当前文件。需要注意的是,这里的file属性指定的相对路径是相对于文件(file),而不是相对于页面(page)。
(4)在应用include指令进行文件包含时,为了使整个页面的层次结构不发生冲突,建议在被包含页面中将<html><body>等标签删除,因为在包含页面的文件中已经指定了这些标签。

(三)taglib指令

  • 目标:熟悉JSP 2.0中定义的taglib指令
1、基本概念
  • 在JSP文件中,可以通过taglib指令标识该页面中所使用的标签库,同时引用标签库,并指定标签的前缀。在页面中引用标签库后,就可以通过前缀来引用标签库中的标签。
2、语法格式
<%@ taglib prefix="tagPrefix" uri="tagURI" %>
3、案例演示
  • WEB-INF里创建lib目录,添加两个jar
    在这里插入图片描述
  • 将库添加到项目
    在这里插入图片描述
  • 单击【Add as Library…】
    在这里插入图片描述
  • 单击【OK】按钮
    在这里插入图片描述
  • 创建demo09.jsp页面
    在这里插入图片描述
    在这里插入图片描述
  • 具体代码
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>JSTL核心标签库</title>
    </head>
    <body>
        <c:set var="message" value="欢迎访问JSP世界"/>
        <h1 style="text-align: center"><c:out value="${message}"/></h1>
    </body>
</html>

  • JSTL的引入可以让JSP代码中<%%>等代码消失掉,再结合EL表达式,会更加方便以及美观。

  • 启动服务器,访问http://localhost:8080/JSPDemo/demo09.jsp
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值