“人最大的对手,往往不是别人,而是自己的懒惰。任何时候都要靠本事吃饭。你必须拼尽全力,才有资格说自己的运气不好。”
你好,我是梦阳辰!期待与你相遇!
01.EL表达式
学习目的:jsp页面尽量不要写java代码,实现前后端分离。可以使用EL和JSTL替代java代码。
概念:Expression Language表达式语言。
作用:替换和简化jsp页面中的java代码的编写。
语法:
${表达式}
${3>4}
结果为:true
jsp默认支持EL表达式,可以在首行配置信息中忽略EL表达式。
1.设道jsp中page指今中:isELIgnored="true”忽略当前jsp页面中所有的el表达式。
2.\${表达式}:忽略当前这个el表达式。
1.EL运算
1.运算
算数运算符:+ - * /(div) %(mod)
比较运算符:> < >= <= == !=
逻辑运算符:&&(and) ||(or) !(not)
空运算符:empty
判断字符串,集合,数组对象是否为null并且长度为0
取反:not empty
${empty list}
2.EL获取值
JSP主要开发任务:
将域对象中数据读取并写入到响应体。
在JSP文件上使用Java命令,将域对象中数据读取并写入到相应开发步骤。
<%
request.getAttribute(“key”);
%>
el表达式获取值。
1.el表达式只能从域对象中获取值
2.语法︰
1.${域名称.键名}∶从指定域中获取指定键的值
域名称:
1.pageScope ---> pageContext
2.requestScope -->request
3.sessionScope --->session
4.applicationScope --->application(servletContext)
在request域中存储了name=张三
获取:${requestScope.name}
没有该值会输出空字符串
域名称可以省略。
因此可以写成这样:
${键名}
表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
3.获取对象,list集合,map集合的值。
对象的值:
通过对象的属性来获取
${user.name}
值为list集合:
${键名[0]}
值为map
${键名.map的键名}
${键名["map的键名"]}
3.El隐式对象
类似于jsp的内置对象。
el表达式中有11个隐式对象。
pageContext
1.获取jsp其他八个内置对象。
${pageContext.request}
${pageContext.request.contextPath}//在jsp动态获取虚拟目录
02.JSTL标签
1.概念:JavaServer Pages Tag Library JSP标准标签库。
是由Apache组织提供的开源的免费的jsp标签。
2.作用:用户简化和替换jsp页面上的java代码。
使用步骤:
1.导入jstl相关jar包。
2.引入标签库:taglib指令:
<% taglib %>
使用标签。
3.常用的JSTL标签。
1.if
2.choose(相当于switch)
3.foreach
属性:
test 必须属性,接受boolean表达式。
如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
—般情况下, test属性值会结合el表达式一起使用
注意∶
c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签
2.choose相当于java的switch语句。
3.foreach:相当于java的for循环
1.完成重复的操作。
属性:
begin:开始值。
end:结束值。
var:临时变量。
step:步长。
varStatus:循环状态对象。
index:容器中元素的索引,从0开始。
count:循环次数,从1开始。
<c:forEach begin=“1” end="10" var=“i" step="2" varStatus="s">
${i}<h3>${s.index}<h3> <h4>${s.count}</h4><br>
</c:forEach>
2.遍历容器
for(User user:list){
}
属性:
items:容器对象。
var:容器中元素的临时变量。
varStatus:循环状态对象。
index:容器中元素的索引,从0开始。
count:循环次数,从1开始。
<c:forEach item="${list}" var="str" varStatus="s">
${s.index} ${s.count} ${str}<br>
</c:forEach>
练习: