EL+JSTL简单学习

虽然说JSP不推荐学,但作为了解,还是总结一丢丢。

EL Expression Language

基本形式:${el表达式}

获取数据

只能获取域中的数据,不能设置只能获取,不能遍历。

【获取常量】

​ 支持获取数字,字符串,布尔类型的常量。

【域中自动搜寻获取变量】

​ 自动搜寻域,获取变量,在四大作用域中由小到大的顺序搜寻指定名称的属性。

​ 如果搜寻到,直接获取并返回,如果没有就返回一个空字符串。

【指定域获取变量】

​ 可以直接使用如下四个内置对象操纵指定域:

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

【获取数组】

数据必须要在某一个域中,才可以获取

<% 
String names [] = {"summerday","天乔巴夏","小丸子","littleW"};
pageContext.setAttribute("names", names);
%>
${names[3] }

【获取集合】

和数组类似。

<%
List<String> list = new ArrayList<String>();
list.add("天乔巴夏");
list.add("summerday");
pageContext.setAttribute("list", list);
%>
${list[0] }

【获取map】

<%
Map<String,String> map = new HashMap<String,String>
();
map.put("name","天乔巴夏");
map.put("gender","男");
map.put("age",18)
pageContext.setAttribute("map", map);
%>
${map["name"] }
${map.gender }

【获取对象】

<%
Person p = new Person("summerday",19);
pageContext.setAttribute("p", p);
%>
${p.name }
${p["age"] }

执行运算

【算术运算】【关系运算】【逻辑运算】【三元表达式】

【Empty运算】

  • 如果对象为null,字符串为空
  • 集合没有任何元素返回true
<%
String name = "summerday";
pageContext.setAttribute("name", name);
String addr = "";
pageContext.setAttribute("addr",addr);
List<String> list = new ArrayList<String>();
pageContext.setAttribute("list",list);
%>
${empty name}<%--false--%>
${empty addr}<%--true--%>
${empty list}<%--true--%>

内置对象

【作用域】pageScope、requestScope、sessionScope、ApplicationScope

【请求参数】:param、paramValues

【web应用初始化参数】:initParam

【请求头】:header、headerValues

【所有cookie组成的Map】:cookie

【当前页面的对象】:pageContext

jstl标签技术

JavaServerPages Standard Tag Library

可以和 EL 配合来取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性、维护性和方便性。

引入jstl

<%@taglib uri="" prefix=""%>

jstl标签库的子库

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

jstl常用标签

set【设置+修改】

        <c:set var="name" value="天乔巴夏" scope="request"></c:set>
        ${name}
        <c:set var="name" value="summerday"></c:set>
        ${name}

remove【移除】

        <c:set var="num" scope="session" value="${10}"/>
        <p>num: <c:out value="${num}"/></p>
        <c:remove var="num"/>
        <p>删除num后: <c:out value="${num}"/></p>

if【判断】

        <c:set var="age" value="18" scope="request"></c:set>
        <c:if test="${age==18}" var="flag">
            yes
        </c:if>
        <c:if test="${age!=18}">
            no
        </c:if>
        ${flag}  <%--true--%>

catch【捕获异常】

        <c:catch var="e">
            <%
                int i = 1/0;
            %>
        </c:catch>
        ${e}<%--java.lang.ArithmeticException: / by zero--%>

choose【多条件判断】

        <c:set var="num" value="18" scope="request" ></c:set>
        <c:choose>
            <c:when test="${num<10}">num<10</c:when>
            <c:when test="${num<20}">num<20,num>=10</c:when>
            <c:otherwise>num>=20</c:otherwise>
        </c:choose>

forTokens【切割】

        <c:forTokens items="www.baidu.com" delims="." var="domains">
        <c:out value="${domains}"/><p>
        </c:forTokens>

forEach【遍历】

	<%--varStatus存储属性,count属性从1开始计数--%>    
	<c:forEach begin="1" end="10" step="1" var="i" varStatus="stat">
    <c:if test="${stat.count % 2 == 0 }">
        <font color="red">${i }</font>
    </c:if>
    <c:if test="${stat.count % 2 != 0 }">
        <font color="blue">${i }</font>
    </c:if>
    </c:forEach>
发布了144 篇原创文章 · 获赞 121 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Sky_QiaoBa_Sum/article/details/105041995