hello,我来啦,今天要讲的是EI表达式和JSTL,大家准备好小本本噢~
目录
准备工作:需要导入jar包
一.EL
1.什么是EL?
- EL即Expression Language(表达式语言)
2.EL的功能
- 替代JSP页面中的复杂代码
3.EL的语法
- ${ EL exprission }
- ${ bean.name } 或${ bean['name']}
注:${ bean.name }实质是调用bean的getName()方法.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setAttribute("msg","hello 你好");
application.setAttribute("msg","hello world");
session.setAttribute("msg","你好 世界");
%>
<jsp:forward page="test.jsp"></jsp:forward>
</body>
</html>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.pojo.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
application:<%=application.getAttribute("msg")%>
<br>
session:<%=session.getAttribute("msg")%>
<br>
<%pageContext.setAttribute("msg","world 你好");%>
<%--用EI表达式 --%>
application:${applicationScope.msg}
<br>
session:${sessionScope.msg}
<br>
request:${requestScope.msg}
<br>
page:${msg}
<br>
<%
int sum=100;
/*先把他放在域对象中*/
pageContext.setAttribute("sum",sum);
List<User> list=new ArrayList<>();
User u=new User("小明","123456");
pageContext.setAttribute("user",u);
pageContext.setAttribute("list",list);
%>
总价:${sum}
${user}
<br>
名字:${user.getName()}
密码:${user.getPwd()}
<br>
<%--也可以调方法 --%>
${user.name.equals("小明")?"yes":"no" }
<br>
${list.size()==0}
</body>
</html>
4.EL的自动类型转换
- EL得到某个数据时可以自动转换类型
- 对于类型的限制更加宽松
5.变量属性范围名称
属性范围 | EL中的名称 |
page | pageScope |
request | requestScope |
session | sessionScope |
application | applicationScope |
6.EI的那些小内容:
- EL运算符(算术 关系 Empty运算符【判断集合中值是否为空 返回true或者false】)
- EL中的隐含对象(pageScope、requestScope、sessionScope、applicationScope)
- EL表达式只能运用于jsp域对象中取值
- EL表达式可以替换 <%=%>
- jsp域对象的四个 大小:application>session>request>page
- application是整个范围里面最大的,page是范围最小的,也是占用内存最小的
- EL表达式有个特征:如果这个值为空,它在页面上运行的时候就不会显示,就会显示空字符串""
-
EL表达式中可以运用三元运算符
-
EL表达式可以调用属性
-
empty是判断你的值是否为空,为空的意思是指元素是否为空
7.jsp内置对象之域对象:
-- pageContext:属性的作用范围仅限当前的jsp页面(范围最小)
-- request:属性的作用范围仅限同一个请求(转发有效)
-- session:属性的作用范围仅限于一次会话,浏览器打开直到关闭称为一次会话(在此期间会话不失效)-- application:属性的作用范围仅限于当前web应用(范围最大)
二.JSTL
1.什么是JSTL?
- JSTL(JavaServerPages Standard Tag Library)JSP标准标签库
2.JSTL的优点
- 提供一组标准标签
- 可用于编写各种动态JSP页面
注:JSTL通常会域EL表达式合作实现JSP页面的编码
2.通用标签
- set:设置指定范围内的变量值
- out:计算表达式并将结果输出显示
- remove:删除指定范围内的变量
<c:set scope:"page" value="1" var="a"></c:set>
<c:out value="${a}"></c:out>
<c:remove var="a" scope="page"></c:remove>
3.条件标签
- if:if标签用于判断条件是否成立,与Java中的if语句作用相同
<c:if test="${yy!=null}">
<h3>哈哈</h3>
<h3>欢迎登录本系统</h3>
</c:if>
<c:if test="${yy==null}">
<h3>你现在还没有登录,请点击下方按钮</h3>
<button>请进行登录</button>
</c:if>
4.迭代标签
- 实现对集合中对象的遍历
- 指定迭代的次数
<%--商品的遍历 --%>
<table border="1">
<tr>
<th>商品编号</th>
<th>商品名字</th>
<th>商品类型</th>
<th>商品价格</th>
</tr>
<c:forEach items="${list1}" var="goods">
<tr>
<th>${goods.goodsId}</th>
<th>${goods.goodsName}</th>
<th>${goods.goodsType}</th>
<th>${goods.goodsPrice}</th>
</tr>
</c:forEach>
</table>