一、什么是JSP?
JSP(Java Server Pages):Java 服务器端页面,JSP页面可以指定 html 标签,又可以定义 Java 代码
应用场景:页面中的部分数据从服务器动态获得,还有部分是静态页面
jsp = html + java
JSP 定义 Java 代码的方式:<% 代码 %>,如:
二、JSP本质
JSP 本质上就是一个 Servlet。
index_jsp.java:public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase{. . .}
HttpJspBase 是 Apache 内部提供的一个类:public abstract class HttpJspBase extends HttpServlet implements HttpJspPage{. . .}
三、JSP内置对象
jsp 一共有 9 个内置对象,在 jsp 页面中不需要获取和创建,可以直接使用的对象。
Q:为什么可以使用 jsp 的内置对象呢?
A:因为使用<% 代码%>这种形式的 java 代码都会放到 jsp 转换的 java 类的 service 方法中去执行,在 service 方法中对这些对象有声明,那么在页面中就可以用。
四、JSP指令
JSP 的"指令"还可以用于配置 JSP 页面,导入资源文件。JSP中有三大指令:page、include、taglib。
格式:<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %>
常用 taglib 指令导入 JSTL 标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> // jstl核心标签库前缀一般取 c
问题又来了,什么是 JSTL 标签库呢?在下一小节做解答。
五、什么是JSTL?
JSTL(JavaServer Pages Tag Library):JSP 标准标签库,用于简化和替换 jsp 页面上的 java 代码
常用的 JSTL 标签:
1)if:相当于 java 代码的 if 语句
* 属性:test 为必须属性,接收 boolean 表达式 【一般情况下,test 属性值会结合 el 表达式一起使用】
2)choose:相当于 java 代码的 switch 语句
* 使用 choose 标签声明 相当于 switch 声明
* 使用 when 标签做判断 相当于 case
* 使用 otherwise 标签做其它情况的声明 相当于 default
3)foreach:相当于 java 代码的 for 语句