EL表达式

语法规范:

${标识符}

1,得到request域中的数据

<%-- JSP表达式 --%>
<%=((Student)request.getAttribute("s")).getName() %><br>

EL表达式:

${s }

2,从域对象中拿数据

<%--
pageContext.findAttribute()在当前页面中找出域对象里面对应的属性名
pageContext -> request -> session -> application
--%>
<%
request.setAttribute("name", "lily");
pageContext.setAttribute("name", "Tom");
%>
${name }
<br>
<%-- 就是想要从指定的域对象里面拿出我想要的数据 
requestScope
sessionScope
applicationScope
pageScope
--%>
${requestScope.name }

3,修改属性值

<%-- 这里是通过setter和getter方法来修改域对象里面保存数据的内容 --%>
${s.getName() } <br>
${s.setName("Rose") }<br>
${s }

更加简单的方式:

${s.name = "David" } <br>
${s } <br>
${requestScope.name = "233333" }

4,可以获得集合的数据

  <%
    List<String> list = new ArrayList<String>();
    list.add("周日");
    list.add("周一");
    request.setAttribute("list", list);
   
    Map<String, String> map = new HashMap<String, String>();
    map.put("name", "123");
    map.put("age", "10");
    request.setAttribute("map", map);
     %>
     ${list } <br>
     ${list[0] } <br>
     ${map["name"] } <br>

     ${map.name } <br>

5,可以获取请求参数

第一步请求数据写好:  

  <form action="04EL.jsp" method="POST">

id:<input type="text" name="id"> <br>
name:<input type="text" name="name"> <br>
<input type="submit" value="submit">

</form>

第二步获得请求数据:

${param["id"] } <br>

    ${param.name }<br>
    <%--
    XXX/04EL.jsp?id=12&name=匿名君&hobby[]=篮球&hobby[]=足球
     --%>
    ${paramValues["hobby[]"][0] }<br>
    ${paramValues["hobby[]"][1] }<br>
    ${cookie["JSESSIONID"] }<br>
    ${cookie["JSESSIONID"].name }<br>
    ${cookie["JSESSIONID"].value }<br>
    ${cookie.JSESSIONID.value }<br>

    ${pageContext.request.contextPath }<br>

获得路径:

    <form action="<%=request.getContextPath() %>/01EL.jsp"></form>

    <form action="${pageContext.request.contextPath }/01EL.jsp"></form>

EL表达式

JSTL

设置:

<%-- 
定义一个变量,并且把它放到域对象中
var 相对于变量名
value 变量的值
scope 指定域
--%>
<c:set var="name" value="Tom"></c:set>
<c:set var="age" value="10" scope="request"></c:set>
<c:set var="age" value="20" scope="session"></c:set>
<%-- 设置null值 --%>
<c:set var="name" value="${null }"></c:set>
${name } <br>
${requestScope.age } <br>

<%
Student stu = new Student();
request.setAttribute("s", stu);
%>
<%-- 
target: 需要设置的对象 ${s }用EL表达式把对象拿出来
property: 要设置的属性名
value: 设置的数值
  --%>
<c:set target="${s }" property="name" value="Jack"></c:set>
${s.name } <br>
2,输出:

 <%--
value 要输出的值
default 如果值不存在,对应的展示效果
escapeXml 是否让HTML标签起作用,false是起作用,true是不起作用
  --%>
<c:out value="${NDY }" default="<h3>真的没有啊~~~</h3>" escapeXml="false"></c:out>

JSTL条件判断:checked默认选择项

<%--
  这里是一个条件判断
  test 中给出条件 这里用到了EL表达式
  --%>
    <c:if test="${10 > 5 }">
    <h2>YES</h2>
    </c:if>
    
    <c:set var="sex" value="女"></c:set>
    <c:if test="${sex == '男' }">
    <input type="radio" checked="checked"> 男 
    <input type="radio"> 女
    </c:if>
    <c:if test="${sex == '女' }">
    <input type="radio"> 男 
    <input type="radio" checked="checked"> 女
    </c:if>

<%-- 
      遍历
      items 表示要遍历的对象
      var 表示遍历出来的每一个对象的临时名字,这个相当于在pageContaxt域对象中,创建了一个
      s变量
      begin / end 从哪里开始到哪里结束
      varStatus:
      遍历的状态:
      count:表示遍历出来的数据个数
      index: 表示遍历出来的数据对应的下标号
      begin:从哪个数据开始
      end: 结束下标是哪一个
      first:是否是开始
      last:是否是结尾
      --%>
     <c:forEach items="${requestScope.list }" var="s" varStatus="vs" 
     begin="2" end="8" step="2">
      ${s } &nbsp; ${vs.count } &nbsp; ${vs.index } &nbsp; 
      ${vs.first } &nbsp; ${vs.last } &nbsp; <br />
     </c:forEach>

<%-- 
     重定向
      --%>
     <%-- <c:redirect url="http://www.baidu.com"></c:redirect>--%>
     
     <%-- 
      设置URL
      *****/04EL.jsp?id=20&name=Tom
      --%>
     <c:url value="/04EL.jsp" var="url">
      <c:param name="id" value="20"></c:param>
      <c:param name="name" value="Tom"></c:param>
     </c:url>
     
     <a href="${url }">04EL.jsp</a>