加载头像

第一章 JSP 简介

1.1 什么是 JSP

JSP 是 Java Server Page 的缩写,是由 Sun 公司倡导,许多公司参与,于 1999 年推出的一种 Web 服务设计标准

JSP 是基于 Java Servlet 以及整个 Java 体系的 Web 开发技术,利用这一技术可以建立安全、跨平台的先进动态网站

JSP 以 Java 语言为基础,具有动态页面与静态页面分离、能够脱离硬件平台的束缚以及编译后运行等优点,已经成为开发动态网站的主流技术之一。

1.2 安装配置 JSP 运行环境

什么是 B/S 模式

网络应用中最常见的模式是 B/S 模式,即需要获取信息的用户使用浏览器向服务器发出请求,服务器对此作出响应,将有关信息发送给用户的浏览器。在 B/S 模式中,服务器上必须有所谓的 Web 应用程序,服务器通过运行这些 Web 应用程序来响应用户的请求。因此,基于 B/S 模式的网络程序的核心就是设计服务器端的 Web 应用程序。

什么是 JSP 引擎

一个服务器上可以有很多基于 JSP 的 Web 应用程序,以满足各种用户的需求。这些 Web 应用程序必须由一个软件来统一管理和运行,这样的软件被称作 JSP 引擎或 JSP 容器,而安装 JSP 引擎的计算机被称作一个支持 JSP 的 Web 服务器。支持 JSP 的 Web 服务器负责运行 JSP,并将运行结果返回给用户。

什么是 Tomcat 服务器

1999 年 10 月 Sun 公司将 Java Server Page 1.1 代码交给 Apache 组织,Apache 组织对 JSP 进行了实用性研究,并将这个服务器项目称为 Tomcat。从此,著名的 Web 服务器 Apache 开始支持 JSP。这样,Jakarta——Tomcat 就诞生了(Jakarta 是 JSP 项目的最初名称)。目前,Tomcat 能和大部分主流服务器一起高效率地工作。Tomcat 是一个免费的开源 JSP 引擎,也称作 Tomcat 服务器。

下载与安装 JDK

请见本站文章:JDK 安装教程

下载与安装 Tomcat

请见本站文章:Tomcat 安装教程

1.3 JSP 页面

JSP 页面简介

简单地说,一个 JSP 页面中可以有普通的 HTML 标记和 JSP 规定的 JSP 标记,以及通过标记符号 <%%> 之间加入的 Java 程序片。

下面是一个简单的 JSP 页面示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>Hello JSP</title>
</head>
<body>
<h1>Hello JSP!</h1>
<%
int i,sum = 0;
for(i = 1; i <= 100; i++) {
sum = sum + i;
}
%>
<p>1100的连续和是:<%=sum%></p>
</body>
</html>

JSP 页面的编码

指定 JSP 页面的编码。将 JSP 页面的编码设置成 UTF-8 是为了 JSP 页面能适用于更多的平台,因此 JSP 页面中使用了如下 page 指令指定了 JSP 文件的编码:

1
<%@ page pageEncoding="UTF-8" %>

JSP 页面的保存

JSP 页面按文本文件保存,扩展名是 .jsp。比如,用文本编辑器“记事本”编辑 JSP 页面,在保存 JSP 页面时,将文件类型保存为“所有文件(*. *)”,将编码方式设置为“UTF-8”,因为 JSP 页面指定的编码是 UTF-8。

在保存 JSP 页面时,文件的名称遵守以下规定:

  • 文件名称可以由字母、下划线、美元符号和数字组成;
  • 文件名称第一个字符不能是数字;
  • 文件名称区分大小写。

设置 Web 服务目录

必须将编写好的 JSP 页面文件保存到 Tomcat 服务器的某个 Web 服务目录中,只有这样,远程的用户才可以通过浏览器访问该 Tomcat 服务器上的 JSP 页面。

人们常说的一个网站,实际上就是一个 Web 服务目录。

根目录

如果 Tomcat 服务器的安装目录是 D:\Tomcat\Tomcat 10.1.11,那么 Tomcat 的 Web 服务目录的根目录是 D:\Tomcat\Tomcat 10.1.11\webapps\ROOT

用户如果准备访问根目录中的 JSP 页面,那么访问 JSP 页面的 URL 格式是:

1
http://Tomcat 服务器的 IP 地址(或域名):端口/JSP 页面的名字

必须省略 Web 根目录的名字 ROOT。假设根目录中存放的 JSP 页面名字是 abc.jsp,那么用户可以在浏览器地址栏输入:

1
http://localhost:8080/abc.jsp

webapps 下的 Web 服务目录

Tomcat 服务器安装目录(比如 D:\Tomcat\Tomcat 10.1.11)下的 webapps 目录下的任何一个子目录都可以作为一个 Web 服务目录。如果将 JSP 页面文件保存到 webapps 下的 Web 服务目录中,那么访问 JSP 页面的 URL 格式是:

1
http://Tomcat 服务器的 IP 地址(或域名):端口/Web 服务目录/JSP 页面的名字

比如,在 webapps 下新建子目录 project,那么 project 目录就成为一个 Web 服务目录。如果将 JSP 页面 abc.jsp 存放到 project 目录中,那么访问 JSP 页面 abc.jsp 的 URL 格式是:

1
http://localhost:8080/project/abc.jsp

新建 Web 服务目录

可以将 Tomcat 服务器所在计算机的某个目录(非 webapps 下的子目录)设置成一个 Web 服务目录,并为该 Web 服务目录指定虚拟目录,即隐藏 Web 服务目录的实际位置,用户只能通过虚拟目录访问 Web 服务目录中的 JSP 页面。

可以通过修改 Tomcat 服务器安装目录下 conf 文件夹中的 server.xml 文件来设置新的 Web 服务目录。假设要将 D:\MyProject\Web 以及 C:\MyProject 作为 Web 服务目录,并让用户分别使用 apple 和 cloud 虚拟目录访问 Web 服务目录 D:\MyProject\WebC:\MyProject 下的 JSP 页面,首先用记事本打开 conf 文件夹中的主配置文件 server.xml,找到出现 </Host> 的部分(接近 server.xml 文件尾部处),然后在 </Host> 的前面加入:

1
2
<Context path="/apple" docBase="D:\MyProject\Web" debug="0" reloadable="true"/>
<Context path="/cloud" docBase="C:\MyProject" debug="0" reloadable="true"/>

XML 文件区分大小写,不可以将 <Context> 写成 <context>

主配置文件 server.xml 修改后,必须重新启动 Tomcat 服务器。重启后,用户就可以通过虚拟目录 apple 或 cloud 访问放到 D:\MyProject\WebC:\MyProject 中的 JSP 页面。比如,将 abc. jsp 保存到 D:\MyProject\WebC:\MyProject 中,在浏览器地址栏中输入:

1
http://localhost:8080/apple/abc.jsp

1
http://localhost:8080/cloud/abc.jsp

访问 abc.jsp 页面。

相对目录

Web 服务目录下的目录称为相对 Web 服务目录。比如,我们可以在 Web 服务目录 D:\MyProject\Web 下再建立一个子目录 img,将 abc.jsp 文件保存到 img 中。那么可以在浏览器的地址栏中输入:

1
http://localhost:8080/apple/img/abc.jsp

访问 abc.jsp 页面。

1.4 JSP 运行原理

当服务器上的一个 JSP 页面被第一次请求执行时,Tomcat 服务器根据 JSP 页面生成一个 Java 文件,并编译这个 Java 文件生成字节码文件,然后执行字节码文件响应用户的请求。而当这个 JSP 页面再次被请求执行时,Tomcat 服务器将直接执行字节码文件来响应用户,而 JSP 页面的首次执行往往由服务器管理者来执行。

字节码文件的主要工作是:

  1. 把 JSP 页面中的 HTML 标记符号(页面的静态部分)交给客户端浏览器负责显示。

  2. 负责处理 JSP 标记,并将有关的处理结果(用字符串形式)发送到客户端浏览器。

  3. 执行 <%%> 之间的 Java 程序片(JSP 页面中的动态部分),并把执行结果(用字符串形式)交给客户端浏览器显示。

  4. 当多个用户请求一个 JSP 页面时,Tomcat 服务器为每个用户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应用户的请求。这些线程由 Tomcat 服务器来管理,将 CPU 的使用权在各个线程之间快速切换,以保证每个线程都有机会执行字节码文件(如下图所示),与传统的 CGI 为每个用户启动一个进程相比较,效率要高得多。

    1-1 JSP 的运行原理

在 Web 设计中,用户(客户)一词通常指用户(客户)端计算机上驻留的浏览器。如果对 JSP 页面进行了修改、保存,那么 Tomcat 服务器会生成新的字节码文件。

1.5 JSP 与 Java Servlet 的关系

Java Servlet 就是编写在服务器端创建对象的 Java 类,习惯上称之为 Servlet 类,Servlet 类的对象习惯上称之为一个 servlet。在 JSP 技术出现之前,Web 应用开发人员就是自己编写 Servlet 类,并负责编译生成字节码文件,复制这个字节码文件到服务器的特定目录中,以便服务器使用这个 Servlet 类的字节码,创建一个 servlet 来响应用户的请求。Java Servlet 的最大缺点是不能有效地管理页面的逻辑部分和页面的输出部分,导致 Servlet 类的代码非常混乱,单独用 Java Servlet 来管理网站变成一件很困难的事情。为了克服 Java Servlet 的缺点,Sun 公司用 Java Servlet 作为基础,推出了 Java Server Page。JSP 技术就是以 Java Servlet 为基础,提供了 Java Servlet 的几乎所有好处,当用户请求一个 JSP 页面时,Tomcat 服务器自动生成 Java 文件,编译 Java 文件,并用编译得到的字节码文件在服务器端创建一个 servlet。但是 JSP 页面不是 Java Servlet 技术的全部,它只是 Java Servlet 技术的一个成功应用。JSP 页面技术屏蔽了 servlet 创建的过程,使得 Web 程序设计者只要关心 JSP 页面本身的结构、设计好各种标记,比如使用 HTML 标记设计页面的视图,使用 JavaBean 标记有效地分离页面的视图和数据存储等。

有些 Web 应用可能只需要 JSP + JavaBean 就能设计得很好,但是,对于某些 Web 应用,就可能需要 JSP + JavaBean + Servlet 来完成,即需要服务器再创建一些 servlet 对象,配合 JSP 页面来完成整个 Web 应用程序的工作。

1.6 HTML 与 JavaScript

HTML

HTML(Hyper Text Markup Language,超文本标记语言)是用来编写 Web 页面(俗称的网页)的语言。HTML 不体现数据的组织结构,只是描述数据的显示格式或提交方式。目前的 HTML 大约有一百多个标记(这些标记由浏览器负责解释执行),每个标记(不区分大小写)都用于体现怎样显示数据或怎样提交数据。

JavaScript

JavaScript(简称 JS)是一种解释型的脚本语言,由浏览器负责解释执行。 JavaScript 常被用来美化网页的效果、添加一些动态的显示效果(如滚动的文字)。可以在 JSP 页面里使用 script 标记插入 JavaScript 的代码,这些 JavaScript 的代码由客户的浏览器负责解释执行。

习题 1

  1. 安装 Tomcat 的计算机需要事先安装 JDK 吗?

    答:需要。

  2. 怎样启动和关闭 Tomcat 服务器?

    答:bin 目录下使用 startup.bat 启动 Tomcat 服务器。bin 目录下使用 shutdown.bat 关闭 Tomcat 服务。

  3. Boy.jspboy.jsp 是不是相同的 JSP 文件名字?

    答:不是。

  4. 请在 D:\ 下建立一个名字为 water 的目录,并将该目录设置成一个 Web 服务目录,然后编写一个简单 JSP 页面,保存到该目录中,让用户使用虚拟目录 fish 来访问该 JSP 页面。

    答:设置方法:

    ① 建立 D:\water 目录;

    ② 修改 server.xml 文件,在 </host> 上一行添加:

    1
    <Context path="/fish" docBase="D:\water" debug="0" reloadable="true"/>

    ③ 使用 /fish 访问页面。

  5. 假设 Dalian 是一个 Web 服务目录,其虚拟目录为 moon。A.jsp 保存在 Dalian 的子目录 sea 中,假设 Tomcat 服务器的端口为 8080,则正确访问 A.jsp 的方式是:

  6. 如果想修改 Tomcat 服务器的端口号,应当修改哪个文件?能否将端口号修改为 80?

    答:修改 server.xml 文件。可以将端口号修改为 80。

  7. 在 Tomcat 服务器的 webapps 目录下新建一个名字是 letter 的 Web 服务目录。编写 JSP 页面 letter.jsp,保存在 letter 的 Web 服务目录中,该 JSP 页面可以显示希腊字母表。

    答:代码如下:

    letter.jsp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <%@ page contentType="text/html" %>
    <%@ page pageEncoding="utf-8" %>
    <html>
    <body background="image/java.jpg">
    <p style="font-family:黑体;font-size:36">
    <br>希腊字母表:<br/>
    </p>
    <p style="font-family:宋体;font-size:25">
    <%
    for (char i = 'α'; i <= 'ψ'; i++) {
    out.print(i + " ");
    if (i == 'μ') {
    out.print("<br>");
    }
    }
    %>
    </p>
    </body>
    </html>

    运行截图:

    1-2 输出希腊字母表


返回目录 下一章
avatar
这有关于产品、设计、开发相关的问题和看法,还有文章翻译分享
相信你可以在这里找到对你有用的知识教程
博客快捷键
shift K
关闭快捷键功能
shift A
打开/关闭中控台
shift M
播放/暂停音乐
shift D
深色/浅色显示模式
shift S
站内搜索
shift R
随机访问
shift H
返回首页
shift L
友链页面
shift P
关于本站
shift I
原版/本站右键菜单
引用到评论
随便逛逛博客分类文章标签
复制地址关闭热评深色模式轉為繁體