• SpringMVC学习手册(三)------EL和JSTL(上)


    1.含义 

    EL:       Expression Language , 表达式语言
    JSTL:   Java Server Pages Standard Tag Library, JSP标准标签库 

    2.测试项目构建

     

    2.1 复制JSTL的标准实现

    复制Tomcat中webappsexamplesWEB-INFlib下的两个jar包到新建项目目录的WEB-INFlib下

     2.2 在JSP文件中使用taglib标记定义前缀与uri引用

     
    使用Core标签库:
    <%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
    使用Function标签库:
    <%@ taglib prefix="fn"  uri="http://java.sun.com/jsp/jstl/functions" %> 
    然后就可以在自己的JSP页面进行编写测试了
     

    3.EL 学习 

    3.1 JSP页面的EL控制开关

    EL表达式类似于JSP表达式<%=表达式%>,可以通过JSP页面的page指令的isELIgnore属性指明JSP页面是否支持EL表达式.
    false:支持
    true:不支持
    JSP页面默认isELIgnore为false,也就是说一般用Eclipse建立的JSP页面可以直接使用EL表达式 

    3.2 基本语法的使用:

    基本形式:
    ${EL 隐含对象.关键字对象.属性} 

    (1)"[]"与"."获取值

    一般我们需要获取的值有三种形式:
    • JavaBean 中的值
    • 数组中的值
    • 集合中的值
    下面我们通过一个JSP页面来测试这三种获取值的形式:
    <%@page import="
    java.util.*,
    model.*
    "%>
    <%@ page language="java" contentType="text/html;  charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!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>
         <%        
                     
              //对象参数
              Student s= new Student("Tom",19);
              pageContext.setAttribute("ps", s);
              
              //数组参数
              int numList[]={1,2,3,4,5};
              pageContext.setAttribute("pnumList",numList);
              
              //List集合参数
              ArrayList<Integer> sList = new  ArrayList<Integer>();
              sList.add(1);
              sList.add(2);
              sList.add(3);
              pageContext.setAttribute("psList",sList);
              
              //Map集合参数
              Map<String,String> m =new HashMap<>();
              m.put("Tom", "19");
              m.put("Tina","20");
              pageContext.setAttribute("pm", m);
                   
              
              
         %>
         <div>1.取值操作
              <p>(1)获取student对象属性(个人觉得使用"."的形式获取更方便):</p>
              <ul>
                   <li>${ps.name}</li>
                   <li>${ps.age}</li>
                   <li>${ps["name"]}</li>
                   <li>${ps["age"]}</li>             
              </ul>
              <p>(2)获取数组中的值:</p>
              <ul>
                   <li>${pnumList[0]}</li>
                  <li>${pnumList[1]}</li>
                  <li>${pnumList[2]}</li>
                  <li>${pnumList[3]}</li>
              </ul>     
              <p>(3)获取List集合对象中的值:</p>
              <ul>
                   <li>${psList[0]}</li>
                   <li>${psList[1]}</li>
                   <li>${psList[2]}</li>
              </ul>         
              <p>(4)获取Map集合对象中的值,如果键为数值,只能使用"[]"形式获取其中的值</p>
              <ul>
                   <li><span>Tom`s age:</span>${pm.Tom}</li>
                   <li><span>Tina`s  age:</span>${pm["Tina"]}</li>
              </ul>     
         </div> 
         
    </body>
    </html>

    (2)运算符

    算数运算符:
     
    符号 示例 结果
    + ${1+1} 2
    - ${1-1} 0
    * ${1*1} 1
    / 或div  ${1 /1}  1
    % 或 mod ${10 %3 }  1
     
    关系运算符:
     
    符号: == 或 eq != 或 ne < 或 lt > 或 gt <= 或 le >= 或 ge
     
     
    逻辑运算符:
     
    符号
    && 或 and
    || 或 or
    ! not
     
    条件运算符:
     
    符号(三目运算符)
    ?:
     
    empty运算符:
    用于检测一个值是否为null,例如变量A不存在,则${empty A} 返回的结果为True 

    3.3 EL隐含对象

    • pageScope
    • requestScope
    • sessionScope
    • applicationScope
    其分别对应了JSP的隐含对象:
    • pageContext
    • request
    • session
    • application 
     
    注意如果一个EL表达式没有指定查找对象,其会依次从page,request,session,application中的范围中查找
    • 找到:直接返回,不再继续查出下去
    • 没找到:返回空字符串
     

    3.4 EL与请求参数相关的隐含对象

     
    主要用于JSP接受来自form的参数,相关对象为:param和paramValues,通过例子学习其 使用方法
    input.jsp
    <%@ page language="java" contentType="text/html;  charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!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>
         <form method="post" action="param.jsp">
              名字:<input type="text" name="userName"/ >
              <input type="checkbox" name="habit" value="读书"/>读书
              <input type="checkbox" name="habit" value="游戏"/>游戏
              <input type="checkbox" name="habit" value="跑步"/>跑步
              <input type="submit" value="提交"/>
         </form>
    </body>
    </html>
    param.jsp
    <%@ page language="java" contentType="text/html;  charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!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>
    <%request.setCharacterEncoding("UTF-8"); %>
    ${param.userName }
    ${paramValues.habit[0]}
    ${paramValues.habit[1]}
    ${paramValues.habit[2]}
    </body>
    </html>
     

      

    附录:测试项目
    本文首发于公众号:【豆仔gogo】
    非原创文章请查看原作者文章。原创文章版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Openfire 集群部署和负载均衡方案
    python读取excel一例-------从工资表逐行提取信息
    基本运算
    c语言知识点2
    c语言知识点1
    .NET核心代码保护策略-隐藏核心程序集
    写给那些对破解有偏执的人
    .NET P****** CMS 逆向工程
    WPF多语言化的实现
    AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(菜单篇)
  • 原文地址:https://www.cnblogs.com/hwtblog/p/8386630.html
Copyright © 2020-2023  润新知