zoukankan      html  css  js  c++  java
  • Java_Web之JSTL和EL

    今天学了JSTL和EL,替换了以前for循环,感觉代码越来越少了,十分方便。JSTL和EL密不可分。

    一、什么是EL表达式?

    什么是EL 
    EL即Expression Language(表达式语言)
    EL的功能
    替代JSP页面中的复杂代码
    EL的语法
    ${  EL exprission }
    ${  bean.name } 或  ${  bean['name'] }

    二、EL的特点

    自动转换类型

    EL得到某个数据时可以自动转换类型

    对于类型的限制更加宽松
    使用简单
    相比较在JSP中嵌入Java代码,EL应用更简单
     
    三、EL的语法
    EL语法
    以“${”作为开始,以“}”作为结束
    直接使用变量名获取值$
    ${  username }
    变量属性范围名称
     
    四、EL中的运算符和EL隐式对象
    EL运算符
    运算符”[ ]”
    运算符”.”
    作用
    获取对象属性
    
    获取对象集合中的数据
    在Session中保存了一个(list)集合users

    什么是JSTL?

    使用JSTL实现JSP页面中逻辑处理
    什么是JSTL
    JSTL(JavaServerPages Standard Tag Library)JSP标准标签库
     JSTL通常会与EL表达式合作实现JSP页面的编码

    二、JSTL的环境搭建

    使用JSTL的步骤
    创建Web工程,选择JSTL1.1(目前使用的版本不需要配置,高版本集合在一起)
    在JSP页面添加taglib指令
    使用JSTL标签

    JSTL标准标签库介绍

    通用标签

    条件标签

    迭代标签

    JSTL和EL案例

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <%
        String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
        
        session.setAttribute("username","小明");
        
        List list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        
        request.setAttribute("aa",list);
        
        Map map = new HashMap();
        map.put("name","admin");
        map.put("pwd","adminpassword");
        
        request.setAttribute("map",map);
        
        session.setAttribute("map",map);
        
        application.setAttribute("c","123456");
        application.setAttribute("c","789");
        
        
        entity.User user = new entity.User();
        user.setUsername("aa");
        user.setPassword("bb");
        session.setAttribute("user",user);
        
        //request.getParameter();//------param:获取表单项
        //request.getParameterValues();//------paramValues:获取多个表单项
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        
      </head>
      
      <body>
       <!-- 
          注意:
          EL表达式默认范围:request
          如果没有确定范围;那么EL表达式就会按照范围的顺序按个进行查找:request-session-page-appplication
          直到遍历JSP9大内置对象找到相对应的值为止
       -->
           以前的方式: <%=session.getAttribute("username") %><br/>
        EL表达式:${sessionScope.username }<br/>
        ${applicationScope.c }<br/>
        EL表达式在request取出集合:${aa}<br/>
               取出map集合:${map["name"] }<br/>
        ${map.pwd }<br/> 
        EL取出session中map集合:${sessionScope.map.name }<br/> 
        ${sessionScope.user.username }
        
        
        <form action="success.jsp" method="post">
            username:<input type="text" name="username" /><br/>
            password:<input type="password" name="password" /><br/>
            love:<input type="checkbox" name="love" value="a" />吃饭<br/>
                <input type="checkbox" name="love" value="b" />睡觉<br/>
                <input type="checkbox" name="love" value="c" />敲代码<br/>
            <input type="submit" />
        </form>
      </body>
    </html>


    处理页

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
        String name = request.getParameter("username");
        String[] love = request.getParameterValues("love");
        
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
       
        <title>My JSP 'success.jsp' starting page</title>
      
      </head>
      <!-- 
          JSTL的出现是为了替代以往下载jsp页面中的java逻辑判断和选择判断语句
          EL表达式的出现是为了替代以往的表达式
          JSTL一般与EL表达式合作开发动态的jsp页面
       -->
       <%
           //if(条件)
       %>
      <body>
          <p>
          <c:set var="abc" value="${99+1}" scope="session" />
          输出值:<c:out value="${abc}"/>
          删除值:<c:remove var="abc" scope="session" />
          删除之后:<c:out value="${abc}" default="null" />
          </p>
          <c:if test="${1==1}" var="if1" >
              是真的
          </c:if>
          <!-- 
              empty:判断当前值是否为空null
              如果为null则返回true
              否则返回false
           -->
          <c:if test="${not empty null }" var="if2"></c:if>
          <p>
              输出if1结果:<c:out value="${if1}" /><br/>
              输出if2结果:<c:out value="${if2}" /><br/>
          </p>
           用户名:${param.username }<br>
           密   码:${param.password }<br>
           love:${paramValues.love[0] },${paramValues.love[1] },${paramValues.love[2] }
           长度:${fn:length(paramValues.love) }
           
           
           <div style="margin-top: 50px">
               <%
                   List list  = new ArrayList();
                   list.add("a");
                   list.add("b");
                   list.add("c");
                   list.add("d");
                   list.add("e");
                   
                   request.setAttribute("list",list);
                   
               %>
               <table border="1">
                   <c:forEach items="${list}" var="m"  varStatus="statu">
                       <tr><td>${m }=====${statu.index }</td></tr>
                   </c:forEach>
               </table>
           </div>
           
      </body>
    </html>


     

  • 相关阅读:
    相关分析[SDOI2017]
    排序[HEOI2016/TJOI2016]
    逆序对[AHOI2008]
    逆序对数列[HAOI2009]
    小Z的袜子「2009国家集训队」
    http抓包—Content-Type讲解
    mysql——leetcode问题记录
    linux--vi命令
    Linux—echo命令
    Linux—文件命令之touch命令
  • 原文地址:https://www.cnblogs.com/wlx520/p/4522879.html
Copyright © 2011-2022 走看看