JSP
jsp是什么?
是动态网页编程技术,是 Java Web 服务器端的动态资源
注释
① 显示注释语法:
// 注释,单行注释 /* 多行注释*/
<!-- HTML风格的注释 -->
② 隐式注释语法
<%-- JSP注释 --%>
Scriptlet
是 Scriptlet(脚本小程序),所有嵌入在 HTML 代码中的 Java 程序
第一种:<% %>: java 脚本段,可以定义局部变量、编写语句
第二种:<%! %>:声明,可以定义全局(成员)变量、方法、类
第三种:<%= %>:表达式,数据一个变量或具体内容
JSP的指令标签
可以将一些重复的代码包含进来继续使用
1. include 静态包含
<%@ include file="要包含的文件路径" %> <!-- 相对路径 -->
2. include 动态包含
<jsp:include page="include.jsp"></jsp:include>
注意:动态包含,中间不要加任何内容,包括空格,除非确认要使用参数,否则报错!
JSP的四大域对象
四种属性范围
1. page范围
pageContext : 只在一个页面中保存属性,跳转之后无效
2. request范围
request : 只在一次请求中保存,服务器跳转后依然有效
3. session范围
session : 在一次会话范围中,无论何种跳转都可以使用
4. application范围
application : 在整个服务器上保存
使用哪个范围呢?
在合理范围尽可能小
. EL表达式的使用
语法结构非常简单: ${expression} 操作的都是域对象中的数据,操作不了局部变量
获取域对象的值
${uname} <!-- 输出结果为:zhangsan -->
获取指定域对象的值
${pageScope.uname} <!-- page作用域 -->
${requestScope.uname} <!-- request作用域 -->
${sessionScope.uname} <!-- session作用域 -->
${applicationScope.uname} <!-- application作用域 -->
获取List
获取List中指定下标的数据
${list[下标] }
获取集合的长度
${list.size()
获取Map
获取Map中指定值
${map["key"] } 或 ${map.key }
获取JavaBean对象
${user} <%-- 获取对象 --%>
${user.uname} <%--获取对象中的属性--%>
empty 判断
判断域对象是否为空。为空,返回true;不为空返回false;
${empty 限域变量名 }
判断对象是否不为空。
${!empty 限域变量名 }
等值判断
== 或 eq
${c == d }
${c eq d }
算术运算
+,-,*,/或div
${a + b }
除 ${a / b } 或 ${a div b }
大小比较
JSTL
JSP 标准标签库,是一个定制标签类库的集合,用于解决一些常见的问题
标签的使用
1.使用 taglib 指令
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2.要导入依赖
条件动作标签
if 标签
<c:if test="<boolean>" var="<string>" scope="<string>">
...
</c:if>
test 条件 无默认值
var 用于存储条件结果的变量(限域变量名) 无默认值
scope var属性的作用域
可取值:page|request|session|application 默认值 page
. choose、when 和 otherwise 标签
与 Java 中的 switch 和 case 关键字相似
choose标签没有属性。
when标签只有一个test属性。
otherwise标签没有属性。
. 迭代标签
forEach标签
items 要被循环的数据 否 无
begin 开始的元素(0=第一个元素,1=第二个元素) 否 0
end 最后一个元素(0=第一个元素,1=第二个元素) 否 Last element
step 每一次迭代的步长 否 1
var 代表当前条目的变量名称 否 无
varStatus 代表循环状态的变量名称 否 无
forEach varStatus 属性
index: 当前这次迭代从 0 开始的迭代索引
count: 当前这次迭代从 1 开始的迭代计数
first: 用来表明当前这轮迭代是否为第一次迭代的标志
last: 用来表明当前这轮迭代是否为最后一次迭代的标志
循环
<c:forEach items="被循环的集合" var="限域变量名" varStatus="当前成员对象的相关信息">
</c:forEach>