目录
一.Jsp域对象
jsp域对象:
pageContext:属性的作用范围仅限当前的jsp页面
request:属性的作用范围仅限同一个请求(转发有效)
session:属性的作用范围仅限于一次会话,浏览器打开直到关闭称为一次会话(在此期间会话不失效)
application:属性的作用范围仅限于当前web应用
范围大小:
application>session>request>page
二.EL表达式
EL表达式只能从jsp域对象中取值
EL表达式的功能:
替代jsp页面中的复杂代码
EL表达式的语法:
以“${”作为开始,以“}”作为结束
直接使用变量名获取值$
使用EL表达式
先往域中存值
<%
application.setAttribute("msg1", "hello word");
session.setAttribute("msg2", "hello 世界");
request.setAttribute("msg3", "你好 word");
pageContext.setAttribute("msg4", "你好世界");
%>
<jsp:forward page="test.jsp"></jsp:forward>
再用EL表达式取出
application: ${msg1};
<br>
session: ${msg2};
<br>
request:${msg3};
<br>
page:${msg4};
运行结果
如果属性名相同时会输出什么
属性名相同时,会输出属性的作用范围小的
那么当属性名相同时该怎么取值呢?
我们可以使用它们EL表达式的名称来取值
application: ${applicationScope.msg};
<br>
session: ${sessionScope.msg};
<br>
request:${requestScope.msg};
<br>
page:${msg};
page的属性作用范围最小,就算属性名相同也会输出它的值
运行结果
EL运算符:
运算符”[ ]”
运算符”.”
运算符可以是布尔类型的运算符或者三元运算符等等
域对象中不仅可以存属性值,还可以存对象、集合等等
向域对象pageContext存入一个用户对象
User u=new User("root","root123");
pageContext.setAttribute("user", u);
使用EL表达式对这个对象进行取值
用户对象:${user};
用户名:${user.name};
用户密码:${user.pwd};
运行结果
存入集合
List<User> list = new ArrayList<>();
pageContext.setAttribute("us", list);
判断集合是否为空
判断存入的list集合是否为空:${us.size==0 }或者${empty us }-${not empty us }
三.JSTL标签
JSTL基本标签
--通用标签:set out remove
--条件标签:if
--迭代标签:forEach
使用JSTL标签首先需要导jstl标签库包。
首先在页面上引用
<%--tag标签,lib库,导入一个标签库 prefix是标签库的名字--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
使用条件标签 if 判断用户是否登录
<c:if test="${yy!=null}">
<h1>欢迎使用该系统</h1>
</c:if>
<c:if test="${yy==null}">
<h1>你现在还没有登录,请点击下面的按钮</h1>
<button>请进行登录</button>
</c:if>
- 使用迭代标签 forEach 完成商品的遍历展示
<c:forEach items="${list}" var="goods">
<tr>
<th>${goods.goodsId}</th>
<th>${goods.goodsName}</th>
<th>${goods.goodsType}</th>
<th>${goods.goodsPrice}</th>
</tr>
</c:forEach>
今天就到这,拜拜ヾ( ̄▽ ̄)Bye~Bye~。