1.本质:
JSP本质上是一个Servlet,它会由JSP引擎翻译为.java源文件,再由JDK编译为.class字节码文件。
(1)通过查找翻译后的.java源文件,发现它继承了HttpServlet。
(2)在全局的web.xml文件中,可以找到对应的注册和映射信息。
(3)翻译后的.java源文件,能找到对应Servlet生命周期方法。
(4)因为本质上是一个Servlet,所以只能通过Servlet容器来访问。
2.翻译的时机
在第一次访问JSP时进行翻译和编译。
3.基本语法
(1)JSP模板元素:指 html 标签元素
(2)JSP表达式:<%= %>,里面的值相当于方法参数,不能加分号。
(3)JSP脚本片段:<% %>,可以在其中写Java代码,会被翻译为_jspService()方法中。
(4)JSP指令:<%@ 指令名 属性名=属性值%>
<1><%@taglib %> 导入第三方标签库
<2><%@page %>:定义于当前页面相关的一些属性
contentType属性:用来设置浏览器响应消息头的信息。设置 Content-Type 响应报头,标明即将发送到客户程序的文档的 MIME 类型以及浏览器对响应内容的解码字符集。
pageEncoding属性:用于设置当前JSP页面翻译成.java源文件的“解码”字符集;设置JSP页面翻译成Servlet源文件时使用的字符集。
import属性:导入JSP页面中Java类所在的包
errorPage属性:指定错误显示页面
isErrorPage属性:能否用于错误页面的显示
session属性:
isELIgnored属性:
<3><%@include %> 静态包含,会共同翻译成一个.java文件,将另一个JSP页面包含到当前JSP页面。
(5)注释:<%-- --%>
(6)JSP标签
<1><jsp:include page=""></jsp:include>,动态包含,包含进来的JSP页面也会翻译为一个.java源文件
<2><jsp:forward page=""></jsp:forward>,在JSP页面上进行转发
<3><jsp:useBean id="initDate" class="java.util.Date" scope="page"></jsp:useBean>,在JSP页面中创建对象并保存到对应范围的域对象中。
4.JSP隐含对象
(1)不需要创建就可以使用
(2)九大隐含对象:pageContext,request,session,application,response,config,out,exception,page
(3)其中request,response对象由Servlet容器来创建,并作为参数,传入到_jspService()方法中,其他隐含对象在_jspService()定义并赋值的。
(4)域对象:
<1>能够在自身的属性域中保存数据或获取数据的对象。
<2>有效范围:
pageContext:当前JSP页面范围
request:同一个请求。服务器端转发。
session:同一个会话。默认从浏览器打开都关闭。
application:当前web应用。从生到死。
<3>对象本身的作用:
pageContext:当前JSP页面的上下文,可以通过这个对象获取其他八个隐藏对象。
config:代表当前JSP对应servlet的配置信息。
out:负责将数据输出到浏览器
exception:代表当前页面捕获到的异常信息
page:this,代表当期JSP对应的servelt类对象