EL表达式:
什么是EL表达式?
- EL(Express Lanuage)表达式可以嵌入再jsp页面内部
- 减少jsp脚本的编写
- EL出现的目的是要替代jsp页面中脚本的编写
EL表达式的作用:
- EL最主要的作用是获得四大域中的数据
- 从四大域当中取数据:pageContext,request,session,application四个域
代码演示:
<%
request.setAttribute("name", "requestValue");
pageContext.setAttribute("name", "pageContextValue");
session.setAttribute("name", "sessionValue");
application.setAttribute("name", "applicationValue");
%>
${pageScope.name}<br/>
${requestScope.name}<br/>
${sessionScope.name }<br/>
${applicationScope.name }
EL表达式简写:
${ EL表达式 }
EL从四个域中获取某个值 ${key }
依次从pageContext域,requset域,session域,application域中,获取属性,在某个域中获取后将不在向后寻找。
寻找范围: 从 小 到 大
//EL表达式简写
${name }
获取当前项目的名称
${pageContext.request.contextPath }
EL执行表达式
${1+1 }
${empty name}//判断name是否为空,返回true或false
JSTL的使用:
- 导入jstl-1.2的jar包
- 在jsp页面中引入jstl
- JSTL通常与EL一起使用
- JSTL,JSP标准标签库,主要用于使用标签的形式完成业务逻辑等功能。
代码演示:
首先在jsp页面中引入JSTL
//uri可使用ALT+/来得到
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSTL的使用
<%
request.setAttribute("count",100);
%>
<c:if test="${count >= 50 }">
<h1>count大于50</h1>
</c:if>
<c:if test="${count <= 50 }">
<h1>count小于于50</h1>
</c:if>
EL和JSTL的应用:
登陆后,在登陆界面的右上角显示出用户的信息
如图所示
- 首先我们在登录成功后,需要保存用户的信息,将用户的信息保存到Session域中。
//保存用户
HttpSession session = request.getSession();
session.setAttribute("user", u);
response.setHeader("refresh", "3;url=/12-Mystore/index.jsp");
- 然后我们到jsp页面中使用JSTL
<!-- 判断是否登录成功 -->
<c:if test="${!empty user }">
欢迎,${user.username }
<a href="">退出</a>
</c:if>
<c:if test="${empty user }">
<a href="">登录</a>
<a href="">免费注册</a>
</c:if>
根据判断user是否为空,来判断用户是否登录成功。
JSTL中的foreach标签的使用:
- forEach的基本使用:
//将0到5的数,依次赋值给变量i,再使用EL表达式进行打印
<c:forEach begin="0" end="5" var="i">
${i }<br>
</c:forEach>
- forEach遍历集合
<%
//首先创建一个集合
List<String> strList = new ArrayList<String>();
//向集合中添加字符串
strList.add("aaa");
strList.add("bbb");
strList.add("ccc");
//将strList集合存放再request域中
request.setAttribute("str",strList);
%>
<!-- forEach标签,items取出域中名为str的数据,存放在s中,用EL表达式输出s -->
<c:forEach items="${str }" var="s">
${s }
</c:forEach>
- forEach遍历类
<% //注意需要导入User的包,和List,ArrayList的包
List<User> userList = new ArrayList<User>();
User u1 = new User();
User u2 = new User();
u1.setusername("u1name");
u2.setusername("u2name");
//u1和u2设置完值之后,记得添加到集合中,并且存放在request域中
userList.add(u1);
userList.add(u2);
request.setAttribute("user",userList);
%>
<c:forEach items="${user }" var="u">
${u.username }
</c:forEach>