Java Server Pages(JSP)——1. JSP概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zy2317878/article/details/80336388

写在前面

前面几篇文章基本学习了Java Servlet的基本用法,但是Servlet有两个缺点是无法克服的: 首先, 写在Servlet中的所有HTML标签必须包含Java字符串, 这使得处理HTTP响应报文的工作十分烦琐; 第二, 所有的文本和HTML标记是硬编码,导致即使是表现层的微小变化, 如改变背景颜色, 也需要重新编译。

因此可以通过JSP来弥补Java Servlet的缺点,现代的Java Web应用会同时使用Servlet和JSP页面。

JSP概述

JSP页面本质上是一个Servlet。 然而, 用JSP页面开发比使用Servlet更容易, 主要有两个原因。 首先, 不必编译JSP页面; 其次, JSP页面是一个以.jsp为扩展名的文本文件, 可以使用任何文本编辑器来编写它们。

JSP页面在JSP容器中运行, 一个Servlet容器通常也是JSP容器。 例如, Tomcat就是一个Servlet/JSP容器。

当一个JSP页面第一次被请求时, Servlet/JSP容器主要做以下两件事情:

  1. 转换JSP页面到JSP页面实现类, 该实现类是一个实现javax.servlet.jsp.JspPage接口或子接口javax.servlet.jsp.HttpJspPage的Java类。 JspPage是javax.servlet.Servlet的子接口, 这使得每一个JSP页面都是一个Servlet。 该实现类的类名由Servlet/JSP容器生成。 如果出现转换错误, 则相关错误信息将被发送到客户端。
  2. 如果转换成功, Servlet/JSP容器随后编译该Servlet类, 并装载和实例化该类, 像其他正常的Servlet一样执行生命周期操作。

对于同一个JSP页面的后续请求, Servlet/JSP容器会先检查JSP页面是否被修改过。 如果是, 则该JSP页面会被重新翻译、 编译并执行。 如果不是, 则执行已经在内存中的JSP Servlet。 这样一来, 一个JSP页面的第一次调用的实际花费总比后来的花费多, 因为它涉及翻译和编译。 为了解决这个问题, 可以执行下列动作之一:

  1. 配置应用程序, 使所有的JSP页面在应用程序启动时被调用(实际上也可视为翻译和编译) , 而不是在第一次请求时调用。
  2. 预编译JSP页面, 并将其部署为Servlet。

JSP API

JSP自带的API包含4个包:

  1. javax.servlet.jsp。 包含用于Servlet/JSP容器将JSP页面翻译为Servlet的核心类和接口。 其中的两个重要成员是JspPage和HttpJspPage接口。 所有的JSP页面实现类必须实现JspPage或HttpJspPage接口。 在HTTP环境下, 实现HttpJspPage接口是显而易见的选择。
  2. javax.servlet.jsp.tagext。 包括用于开发自定义标签的类型。
  3. javax.el。 提供了统一表达式语言的API。
  4. javax.servlet.jsp.el。 提供了一组必须由Servlet/JSP容器支持, 以便在JSP页面中使用表达式语言的类。

可以在以下网址查看JSP API:Package javax.servlet.jsp

两个简单的JSP页面

JSP-Welcome页面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Welcome Page</title>
</head>
<body>
    Welcome
</body>
</html>

与前面的Servlet类似,也可以使用URL对JSP进行调用:

http://localhost:8080/app01a/Welcome.jsp

效果图如下所示:
这里写图片描述

JSP-显示当前时间页面,代码如下:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Welcome Page</title>
</head>
<body>
    Welcome
</body>
</html>

使用URL对该JSP进行调用:

http://localhost:8080/app01a/todayDate.jsp

效果图如下所示:
这里写图片描述

当然这个页面目前不能动态显示实时时间,只能显示当前调用JSP的时候的时间。这个就需要后面继续的学习了。

写在最后

这一篇博客主要帮助我重新认识了JSP,他也是一种和Servlet容器,在实际的JavaWeb应用开发中,二者应该结合起来使用(虽然不知道现在还用不用这种东西了)。还需要继续的学习。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页