(8)JavaWeb EL表达式 和 JSTL的使用

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的使用:

  1. 导入jstl-1.2的jar包
  2. 在jsp页面中引入jstl
  3. JSTL通常与EL一起使用
  4. 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的应用:
登陆后,在登陆界面的右上角显示出用户的信息在这里插入图片描述
如图所示

  1. 首先我们在登录成功后,需要保存用户的信息,将用户的信息保存到Session域中。
//保存用户
   HttpSession session = request.getSession();
   session.setAttribute("user", u);
   response.setHeader("refresh", "3;url=/12-Mystore/index.jsp");
  1. 然后我们到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>
发布了21 篇原创文章 · 获赞 7 · 访问量 357

猜你喜欢

转载自blog.csdn.net/qq_45260619/article/details/104032604
今日推荐