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 }
变量属性范围名称
Java_Web之JSTL和EL
 
四、EL中的运算符和EL隐式对象
EL运算符

运算符”[ ]”

运算符”.”

作用

获取对象属性



获取对象集合中的数据

在Session中保存了一个(list)集合users

Java_Web之JSTL和EL

Java_Web之JSTL和EL

 

什么是JSTL?

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

二、JSTL的环境搭建

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

Java_Web之JSTL和EL

JSTL标准标签库介绍

Java_Web之JSTL和EL

通用标签

Java_Web之JSTL和EL

条件标签

Java_Web之JSTL和EL

迭代标签

Java_Web之JSTL和EL

Java_Web之JSTL和EL

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>

 

 

 

 


 

你可能感兴趣的:(java)