jsp实现原理
服务器启动,将编写的jsp文件,转译成java文件,再编译成class文件运行
1.1指令
JSP的指令,主要是对当前JSP页面设置属性.
-
page: 设置当前当前jsp的属性 [重要]
-
taglib: 用来给当前jsp引入jstl标签库
-
include: 包含,将其他内容包含至当前页面 [了解]
-
指令语法
<%@指令名 属性名=属性值 %>
1.1.1Page
1.1.2taglib
语法: <%@ taglib uri="" prefix="" %>
用法: 引入jstl标签库
1.1.3include
语法: <%@ include file="路径">
作用: 将file指定路径的文件加入到当前页面,已达到复用的效果
场景:页面的头尾重复部分的内容.
1.2内置对象
内置对象,就是jsp页面中可以直接使用的对象.
这九个对象可以在转译后的xxx_jsp.java中找到这些对象
通过pageContext获得其他八个对象
1.3四大域
2.EL表达式
2.1作用
纯jsp取值: <%=request.getAttribute("username") %>
现在EL取值,${username}
作用: 简化取值操作
语法: ${域key}
2.2取域中的值
\({key},如果四大域中key值一样,按照page-->request-->session-->application的顺序依次取值,取到值即停止. **注意** 在取对象的值时,与该对象的get方法名要一致(例getID,\){id})
2.3隐式对象
常用:${pageContext.request.contextPath}了获得项目名
3.JSTL
3.1使用步骤
- 项目加入jstl和standard的jar包,或者引入pom依赖
- 在需要使用jstl标签的页面,中使用taglib引入库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
3.2核心标签的使用
3.2.1判断标签
点击查看代码
<%
request.setAttribute("num",0);
%>
<c:if test="${num > 0}">
num > 0
</c:if>
<hr>
<c:choose>
<c:when test="${num > 0}">
num > 0
</c:when>
<c:when test="${num < 0}">
num < 0
</c:when>
<c:otherwise>
num = 0
</c:otherwise>
</c:choose>
3.2.2循环标签
点击查看代码
<%--
循环 var是变量
begin从哪里开始
end 到哪结束
step 步长默认为1
--%>
<c:forEach var="i" begin="1" end="10" step="2">
${i}<br>
</c:forEach>
<hr>
<%--
循环
items 就是域中的集合
var 每次循环得到的对象
--%>
<c:forEach var="user" items="${list}">
<div>${user}</div>
</c:forEach>