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>

 

 

 

 


 

posted on 2015-05-24 11:07  梦之航  阅读(2900)  评论(0编辑  收藏  举报

导航