JSP概述、API、注释

JSP自带的API包含4个包,可通过Tomcat的官网查看,JSP和EL的API是分开的

javax.servlet.jsp  // 包含用于Servlet/JSP容器将JSP页面翻译为Servlet的核心接口和类。
javax.servlet.jsp.el  // 提供了一组必须由Servlet/JSP容器支持,以便在JSP页面中使用的表达式语言的类
javax.servlet.jsp.target  // 包含用于开发自定义标签的类型
javax.el  // 提供了统一表达式语言的API

其中两个重要的接口是JspPage接口和HttpJspPage接口。HttpJspPage接口是JspPage接口的子接口,JspPage接口是Servlet接口的子接口。

所有的JSP页面实现类必须实现JspPage接口或HttpJspPage接口。

public interface JspPage extends javax.servlet.Servlet
public interface HttpJspPage extends JspPage

JSP页面的本质是一个Servlet。JSP页面在JSP容器中运行,一个Servlet容器通常也是JSP容器。

 JSP处理HTTP请求的过程

Web服务器使用JSP来创建网页的处理过程如下:

(1)跟其他的普通网页一样,浏览器发送一个HTTP请求给服务器。

(2)Web服务器识别出这是一个JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或.jsp文件来完成。

(3)JSP引擎从硬盘中载入JSP文件,然后将它们转换成Servlet。这种转换只是简单地将所有模板文件改用println()语句,并且将所有的JSP元素转换成Java代码。

(4)JSP引擎将Servlet编译成可执行类,并且将原始请求传递给Servlet引擎。

(5)Web服务器会调用Servlet引擎,然后载入并执行servlet类。在执行过程中,Servlet产生HTML格式的输出并将其内嵌于HTML response 中上交给Web服务器。

(6)Web服务器以静态HTML网页的形式将HTTP response返回到浏览器中,浏览器处理HTTP response中产生的HTML网页,就如同处理静态网页一样。

通常情况下,JSP引擎会检查JSP文件对应的Servlet是否存在,并且检查JSP文件的修改日期是否早于Servlet,如果别修改过则该JSP页面会被重新翻译、编译并执行;如果没有被修改过,则执行已经在内存中的JSP Servlet。

JSP页面包含两部分:

1)JSP语法元素:由JSP容器处理的部分,这部分必须符合JSP语法规范,包括脚本元素、指令元素、动作元素、注释指令。

2)模板元素:语法元素以外的都是模板元素,模板元素会原样发送给浏览器。

在传统的HTML页面文件中,加入Java程序片段和JSP标签就构成了一个JSP页面文件,JSP页面中的程序片段代码是以 <% 和 %> 作为开始和结束标记的。

JSP注释

<%-- JSP容器会处理该注释,不会发送到浏览器 --%>
<!-- JSP不会处理该注释,会发送到浏览器,由浏览器进行处理 -->

一个JSP页面实例

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.DateFormat" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Today's date</title>
</head>
<body>
<%
    DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
    String date = dateFormat.format(new Date());
    out.println("Today is " + date);
%>
</body>
</html>

将该JSP页面放置在项目路径中,不需要部署描述符和注解,浏览器可以直接访问

启动Tomcat服务器,通过浏览器访问

该JSP页面翻译得到的Servlet存放在Tomcat的work/Catalina/...下

 JSP的API

原文地址:https://www.cnblogs.com/0820LL/p/9840311.html