概述
Java Server Pages: java服务器端页面
可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码
用于简化书写
原理
jsp 实际就是一个servlet jsp就是java代码
脚本
- <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么
- <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。
- <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。
指令
概述
指令
作用:用于配置JSP页面,导入资源文件
格式 <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
分类
- page 配置JSP页面
- include 页面包含的。导入页面的资源文件
- taglib导入资源
page
contentType:等同于response.setContentType()
设置响应体的mime类型以及字符集
设置当前jsp页面的编码
import:导包
errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
isErrorPage:标识当页面是否是错误页面。
true:是,可以使用内置对象exception
false:否。默认值。不可以使用内置对象exception
include
include 页面包含的。导入复用页面的资源文件
<%@include file="top.jsp"% >
taglib
taglib 导入资源
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
prefix:前缀,自定义的
九大内置对象
EL表达式
概念:Expression Language 表达式语言
替换和简化jsp页面中java代码的编写
语法 : ${表达式}
运算符
算数运算符: + - * /(div) %(mod)
比较运算符: > < >= <= == !=运算符: &&(and) ||(or) !(not)
空运算符: empty
功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
${empty list}:判断字符串、集合、数组对象是否为null或者长度为0
${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0
获取域对象中的值
el表达式只能从域对象中获取值
语法:
${域名称.键名}:从指定域中获取指定键的值
域名称:
pageScope --> pageContext
requestScope --> request
sessionScope --> session
applicationScope --> application(ServletContext)
语法2:
${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
El获取对象中的值
•对象:${域名称.键名.属性名}
•本质上会去调用对象的getter方法
El获取List中的值
•${域名称.键名[索引]}
EL获取Map中的内容
•${域名称.键名.key名称}
•${域名称.键名["key名称"]}
El表达式获取动态虚拟目录
<%--
el表达式获取虚拟路径
${pageContext.request.contextPath}:动态获取虚拟目录
--%>
${pageContext.request.contextPath}
<img src="${pageContext.request.contextPath}/CheckCodeServlet">
jstl
概述
是由Apache组织提供的开源的免费的jsp标签
作用:用于简化和替换jsp页面上的java代码
使用步骤:
导入jstl相关jar包
引入标签库:taglib指令: <%@ taglib %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
c:if
if:相当于java代码的if语句
属性:
test 必须属性,接受boolean表达式
如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
一般情况下,test属性值会结合el表达式一起使用
注意:
c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签
c:choose
<%--
相当于 java中的swich判断
chooes相当于swich
when 相当于case
otherwise 相当于 default
--%>
<c:choose>
<c:when test="${pageScope.code==0}">zero</c:when>
<c:when test="${pageScope.code==1}">one</c:when>
<c:when test="${pageScope.code==2}">two</c:when>
<c:otherwise>其他</c:otherwise>
</c:choose>
c:foreach
<%--
foreach
相当于java中的for循环
属性
Begin 开始值
End 结束值
Var 临时变量
Step 步长
varStatus 循环状态
Index 容器中的索引 0开始
Count 循环次数 1开始
或者 foreach循环
--%>
<hr>
<c:forEach begin="0" end="5" var="i" step="1" varStatus="status">
你好${i},${status.index},${status.count}<br>
</c:forEach>
<%-- foreach 循环容器
Items 容器对象
Var 元素容器对象的临时变量
varStatus 循环状态
Index 索引
Count 循环次数
for(数据类型 临时变量:循环容器){}
--%>
<hr>
<c:forEach items="${studentList}" var="student" varStatus="status">
姓名:${student.name}, 年龄:${student.age},性别:${student.sex}
<br>
</c:forEach>