EL技术和JSTL技术

2018-05-12  23:16:35

EL技术

EL表达式

  EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写。

 

EL从域中取出数据

  jsp:<%=request.getAttribute(name)%>相当于

  EL:${requestScope.name}

  EL可以从四个域中获取数据:

    EL获得pageContext域中的值:${pageScope.key};

    EL获得request域中的值:${requestScope.key};

    EL获得session域中的值:${sessionScope.key};

    EL获得application域中的值:${applicationScope.key};

    还可以这样的格式:${key}  依次从小到大的四个域中获取key,在某个域中获取后停止寻找

EL内置对象

  pageScope,requestScope,sessionScope,applicationScope  获取JSP中域中的数据

  param,paramValues   接收参数.

    相当于request.getParameter()  request.getParameterValues()

  header,headerValues  获取请求头信息

    相当于request.getHeader(name)

  initParam - 获取全局初始化参数

    相当于this.getServletContext().getInitParameter(name)

  cookie  WEB开发中cookie

    相当于request.getCookies()  cookie.getName()  cookie.getValue()

  pageContext  可以获得jsp的另外八个内置对象

    ${pageContext.request.contextPath}  可以或得web应用名称,在写地址时可用,便于后期维护

EL执行表达式

  ${1+}  可以进行算术运算后输出

  ${empty user}  判断user对象是否为空,空则输出true,不为空则输出false

  ${user==null?true:false}  user为空则输出true,不为空则输出false

JSTL技术

JSTL概括

  JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。

  jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标准标签库有5个子库:Core,I18N,SQL,XML,Functions

  目前常使用核心库Core

JSTL核心库常用标签

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

  <c:if test=””>标签:

    test返回的是boolean条件

  <c:forEach>标签:

    <c:forEach begin="0" end="5" var="o">

      ${i}<br/>

    </c:forEach>

    相当于:for(int i=0;i<=5;i++){
          System.out.println(i);

        }

jstl的遍历

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="domain.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        //模拟List<String> strList
        List<String> strList = new ArrayList<String>();
        strList.add("a");
        strList.add("b");
        strList.add("c");
        strList.add("d");
        request.setAttribute("strList", strList);
        
        //遍历List<User>的值
        List<User> userList = new ArrayList<User>();
        User user1 = new User();
        user1.setId(1);
        user1.setName("a");
        user1.setPassword("a");
        userList.add(user1);
        User user2 = new User();
        user2.setId(2);
        user2.setName("b");
        user2.setPassword("b");
        userList.add(user2);
        application.setAttribute("userList", userList);
        
        //遍历Map<String,String>的值
        Map<String,String> strMap = new HashMap<String,String>();
        strMap.put("a", "a");
        strMap.put("b", "b");
        strMap.put("c", "c");
        strMap.put("d", "d");
        session.setAttribute("strMap", strMap);
        
        //遍历Map<String,User>的值
        Map<String,User> userMap = new HashMap<String,User>();
        userMap.put("a", user1);
        userMap.put("b", user2);
        request.setAttribute("userMap", userMap);
        
    %>
    
    
    <h1>取出strList的数据</h1>
    <c:forEach items="${strList }" var="str">
        ${str }<br/>
    </c:forEach>
    
    <h1>取出userList的数据</h1>
    <c:forEach items="${userList}" var="user">
        user的name:${user.name }------user的password:${user.password }<br/>
    </c:forEach>
    
    <h1>取出strMap的数据</h1>
    <c:forEach items="${strMap }" var="entry">
        ${entry.key }====${entry.value }<br/>
    </c:forEach>
    
    <h1>取出userMap的数据</h1>
    <c:forEach items="${userMap }" var="entry">
        ${entry.key }:${entry.value.name}--${entry.value.password }<br/>
    </c:forEach>
    
</body>
</html>

 

转载于:https://www.cnblogs.com/xiongdaren/p/9030672.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值