javaweb学习——EL和JSTL

总概

作用:EL和JSTL都是服务jsp,是为了使JSP写起来更加简单。

一般EL用于取值等操作,JSTL用于判断、循环等操作

EL表达式

是什么:全称是: Expression Language 

作用:为了简化咱们的 jsp 中的 java 代码(一般是做取值操作)

怎么用:所有EL表达式的格式都是以“${}”表示,例如,${ userinfo)代表获取变量userinfo的值。

1、11个内置对象

用法:${ 对象名.成员 }

  • pageContext

作用域相关对象 - pageScope - requestScope - sessionScope - applicationScope

头信息相关对象 - header - headerValues

参数信息相关对象 - param - paramValues

  • cookie 全局初始化参数
  • initParam

2、取出四个作用域的值

实例

    <%
        pageContext.setAttribute("name", "page");
        request.setAttribute("name", "request");
        session.setAttribute("name", "session");
        application.setAttribute("name", "application");
    %>

    按普通手段取值<br>

    <%= pageContext.getAttribute("name")%>
    <%= request.getAttribute("name")%>
    <%= session.getAttribute("name")%>
    <%= application.getAttribute("name")%>

    <br>使用EL表达式取出作用域中的值<br>

    ${ pageScope.name }
    ${ requestScope.name }
    ${ sessionScope.name }
    ${ applicationScope.name }

---------------------------------------------------------

如果域中所存的是数组
<%
    String [] a = {"aa","bb","cc","dd"};
    pageContext.setAttribute("array", a);
%>

使用EL表达式取出作用域中数组的值<br>

${array[0] } , ${array[1] },${array[2] },${array[3] }

---------------------------------------------------------

如果域中存的是list
使用EL表达式取出作用域中li的值<br>

${li[0] } , ${li[1] },${li[2] },${li[3] }


---------------------------------------------------------

如果域中存的是map
<%
    Map map = new HashMap();
    map.put("name", "zhangsna");
    map.put("age",18);
    map.put("address","北京..");

    pageContext.setAttribute("map", map);
%>

如果没有指定取值的域,则先从page里面找,没有去request找,去session,去application 

JSTL

是什么:全称 : JSP Standard Tag Library jsp标准标签库

作用:简化jsp的代码编写。 替换 <%%> 写法。 一般与EL表达式配合

怎么使用

  1. 导入jar文件到工程的WebContent/Web-Inf/lib    (jstl.jar 和 standard.jar)

  2. 在jsp页面上,使用taglib 指令,来引入标签库

  3. 注意: 如果想支持 EL表达式,那么引入的标签库必须选择1.1的版本,1.0的版本不支持EL表达式。

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

常用标签

<c:set></c:set>           <c:if test=""></c:if>           <c:forEach></c:forEach>

c:set

<!-- 声明一个对象name, 对象的值 zhangsan , 存储到了page(默认) , 指定是session -->
<c:set var="name" value="zhangsan" scope="session"></c:set>
${sessionScope.name }

c:if

<!-- 定义一个变量名 flag  去接收前面表达式的值,然后存在session域中 -->
<c:if test="${ age > 26 }" var="flag" scope="session">
	年龄大于了26岁...
</c:if>

c:forEach

<!-- 从1 开始遍历到10 ,得到的结果 ,赋值给 i ,并且会存储到page域中, step , 增幅为2 -->
<c:forEach begin="1" end="10" var="i" step="2">
	${i }
</c:forEach>
-----------------------------------------------
<!-- items : 表示遍历哪一个对象,注意,这里必须写EL表达式。 
      var: 遍历出来的每一个元素用user 去接收。 -->
<c:forEach var="user" items="${list }">
	${user.name } ----${user.age }
</c:forEach>
发布了43 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Hitmi_/article/details/97117971