黄色电影一区二区,韩国少妇自慰A片免费看,精品人妻少妇一级毛片免费蜜桃AV按摩师 ,超碰 香蕉

jsp EL表達(dá)式詳解

    一、el表達(dá)式介紹

    • expression language表達(dá)式語言
    • 是一種在jsp頁面獲取數(shù)據(jù)的簡單方式(只能獲取數(shù)據(jù),不能設(shè)置數(shù)據(jù))
    • 在jsp2.0開始引入概念

    語法格式

    在jsp頁面的任何靜態(tài)部分均可通過:${expression}來獲取到指定表達(dá)式的值

    二、el獲取數(shù)據(jù)(從四大域中獲取屬性)
    el只能從四大域中獲取屬性
    1、如果沒有使用el的內(nèi)置對(duì)象,則查找數(shù)據(jù)順序是依次按照由小到大范圍從四大域中查找指定名稱的屬性值

    二、el獲取數(shù)據(jù)(從四大域中獲取屬性)

    el只能從四大域中獲取屬性

    1、如果沒有使用el的內(nèi)置對(duì)象,則查找數(shù)據(jù)順序是依次按照由小到大范圍從四大域中查找指定名稱的屬性值

    - pagecontext
       name  林杰      regster  regster  linjie.com.regster      regster  /regster    

    index.jsp

    <%@ page language="java" contenttype="text/html; charset=utf-8"
     pageencoding="utf-8"%> insert title here  name=${initparam.name }

    客戶瀏覽器顯示結(jié)果

    這里寫圖片描述

    四、el訪問bean的屬性

    1、什么是java bean

    javabean是公共java類,但是為了編輯工具識(shí)別

    需要滿足至少三個(gè)條件

    • 有一個(gè)public默認(rèn)構(gòu)造器(例如無參構(gòu)造器)
    • 屬性使用public 的get,set方法訪問,也就是說設(shè)置成private同時(shí)get,set方法與屬性名的大小也需要對(duì)應(yīng)。例如屬性name,get方法就要寫成,public string getname(){},n大寫。
    • 需要序列化。這個(gè)是框架,工具跨平臺(tái)反映狀態(tài)必須的

    2、el訪問bean屬性

    el可以通過${key.屬性}的方式獲取到指定值,其底層實(shí)際調(diào)用的是該對(duì)象的相應(yīng)屬性的get方法

    demo.java

    package linjie.com;
    /*
     *bean 
     */
    public class demo {
     private string name;
     private int age;
     public demo(string name,int age){
      this.name=name;
      this.age=age;
     }
     public string getname() {
      return name;
     }
     public void setname(string name) {
      this.name = name;
     }
     public int getage() {
      return age;
     }
     public void setage(int age) {
      this.age = age;
     }
     @override
     public string tostring() {
      return super.tostring();
     }
    
    }

    index.jsp

    <%@ page language="java" contenttype="text/html; charset=utf-8"
     import="linjie.com.demo"
     pageencoding="utf-8"%> insert title here  <%
      demo test=new demo("linjie",12);
      request.setattribute("elttt", test);
     %>
     name=${requestscope.elttt.name }
    
     age=${requestscope.elttt.age }
    
    
     
     names=${requestscope.eltttxx.name }

    客戶瀏覽器顯示結(jié)果

    這里寫圖片描述

    五、el訪問數(shù)組中的數(shù)據(jù)

    <%@ page language="java" contenttype="text/html; charset=utf-8"
     pageencoding="utf-8"%> insert title here   
    
     <%
      string[] names={"xlj","lucy","king"};
      pagecontext.setattribute("names", names);
     %>
     name[1]=${names[1] }
    
    
     
     names[5]=${names[5] }

    下面是訪問類的數(shù)組

    stu.java

    package linjie.com;
    /*
     *bean 
     */
    public class stu {
     private string sname;
     private string address;
     public stu() {
      super();
     }
    
     public stu(string sname, string address) {
      super();
      this.sname = sname;
      this.address = address;
     }
    
     public string getsname() {
      return sname;
     }
    
     public void setsname(string sname) {
      this.sname = sname;
     }
    
     public string getaddress() {
      return address;
     }
    
     public void setaddress(string address) {
      this.address = address;
     }
    
     @override
     public string tostring() {
      return super.tostring();
     }
    
    
    }

    index.jsp

    <%@ page language="java" contenttype="text/html; charset=utf-8"
     import="linjie.com.*"
     pageencoding="utf-8"%> insert title here  <%
      stu[] stus=new stu[3];
      stus[0]=new stu("xlj","a");
      stus[1]=new stu("lucy","b");
      stus[2]=new stu("kinga","c");
      pagecontext.setattribute("stus",stus);
     %>
     stus[1].sname=${stus[1].sname }

    客戶瀏覽器顯示結(jié)果

    這里寫圖片描述

    六、el獲取list中數(shù)據(jù)

    <%@page import="java.util.*"%>
    <%@ page language="java" contenttype="text/html; charset=utf-8"
     pageencoding="utf-8"%> insert title here  <%
      list names=new arraylist();
      names.add("xlj");
      names.add("lucy");
      pagecontext.setattribute("names", names);
     %>
    
     
     names[1]=${names[1] }

    客戶瀏覽器顯示結(jié)果

    這里寫圖片描述

    注意:

    el可以通過索引訪問list,但無法訪問set。因?yàn)閟et中沒有索引概念

    七、el訪問map

    <%@page import="java.util.*"%>
    <%@ page language="java" contenttype="text/html; charset=utf-8"
     pageencoding="utf-8"%> insert title here  <%
      map map=new hashmap();
      map.put("age", 20);
      map.put("name", "xlj");
      pagecontext.setattribute("map", map);
     %>
     name=${map.name }
    
     age=${map.age }
    
    
    
    

    客戶瀏覽器顯示結(jié)果

    這里寫圖片描述

    八、el中的運(yùn)算符(empty)

    1、先說說幾個(gè)常用運(yùn)算符

    • 算術(shù)運(yùn)算符:+、-、*、/、%(不支持++、–)
    • 關(guān)系運(yùn)算符:==、!=、>、>=、<、<=
    • 邏輯運(yùn)算符:!、&&、||、not、and、or
    • 條件運(yùn)算符:?:
    • 取值運(yùn)算符:[]、點(diǎn)號(hào)

    2、empty運(yùn)算符

    用法為${empty 變量},結(jié)果為布爾值

    <%@page import="java.util.*"%>
    <%@ page language="java" contenttype="text/html; charset=utf-8"
     pageencoding="utf-8"%> insert title here  <%
      string name1=null;
      string name2="";
      list name3=new arraylist();
    
      pagecontext.setattribute("name1", name1);
      pagecontext.setattribute("name2", name2);
      pagecontext.setattribute("name3", name3);
     %>
     empty對(duì)于沒有定義的變量,運(yùn)算結(jié)果為true:
     empty namex=${empty namex }
    
    
     empty對(duì)于null的引用,運(yùn)算結(jié)果為true:
     empty name1=${empty name1 }
    
    
     empty對(duì)于為空串的string引用,運(yùn)算結(jié)果為true:
     empty name2=${empty name2 }
    
    
     empty對(duì)于沒有元素的數(shù)組或集合,運(yùn)算結(jié)果為true:
     empty name3=${empty name3 }

    客戶瀏覽器顯示結(jié)果

    這里寫圖片描述

    九、自定義el函數(shù)

    因?yàn)閑l本身不具有處理字符串能力,所以可以自定義el函數(shù)
    - 定義函數(shù)(新建myel.java類)
    - 注冊(cè):先找到j(luò)sp2-example-taglib.tld,將頭部以及注冊(cè)函數(shù)復(fù)制到自己創(chuàng)建的.tld文件中(.tld放在web-inf下)
    - 在index.jsp中使用,使用時(shí)需要<%@ taglib uri=”http://tomcat.apache.org/jsp2-example-taglib” prefix=”myel” %>

    1、定義函數(shù)myel.java

    package linjie.com;
    
    
    //自定義函數(shù)
    //該類及其函數(shù),需要在擴(kuò)展名為.tld的xml文件中注冊(cè)
    //tld:tag library definition(標(biāo)簽庫定義)
    //xml文件是需要約束的,即需要配置文件頭部。這個(gè)頭部約束可以從一下文件中進(jìn)行復(fù)制
    //在tomcat安裝目錄下:webapps\examples\web-inf\jsp2
    //文件為:jsp2-example-taglib.tld
    
    //這個(gè).tld的xml文件,需要定義在當(dāng)前web項(xiàng)目的web-inf目錄下,在此目錄下創(chuàng)建以.tld結(jié)尾的xml文件
    //將jsp2-example-taglib.tld中頭部復(fù)制到創(chuàng)建的xml文件中
    
    //再將函數(shù)注冊(cè),還是在jsp2-example-taglib.tld底部中復(fù)制
    public class myel {
     private static myel instance;
     public static myel getinstance() {
      if(instance==null)
      {
       instance=new myel();
      }
      return instance;
     }
    
     //字符串小寫變大寫
     public static string lowertoupper(string str) {
      return str.touppercase();
     }
    }

    2、將jsp2-example-taglib.tld中頭部部分以及底部的注冊(cè)函數(shù)部分復(fù)制到自己創(chuàng)建的tld(在web-inf下)文件中

    這里寫圖片描述

    這里寫圖片描述

    這里寫圖片描述

    這里寫圖片描述

    myel.tld

      
     a tag library exercising simpletag handlers.  1.0  myel
     http://tomcat.apache.org/jsp2-example-taglib  
         mylowertoupper   linjie.com.myel
      java.lang.string lowertoupper( java.lang.string )
       

    3、在index.jsp中使用,使用時(shí)需要<%@ taglib uri=”http://tomcat.apache.org/jsp2-example-taglib” prefix=”myel” %>

    <%@ page language="java" contenttype="text/html; charset=utf-8"
     pageencoding="utf-8"%>
    <%@ taglib uri="http://tomcat.apache.org/jsp2-example-taglib" prefix="myel" %> insert title here  
     ${myel:mylowertoupper("sasas") }
    
    
    
     
     <%
      string name="xlj";
      pagecontext.setattribute("name", name);
     %>
     ${myel:mylowertoupper(name) }

    客戶瀏覽器顯示結(jié)果

    這里寫圖片描述

    十、el總結(jié)

    • el表達(dá)式不能出現(xiàn)在java代碼塊、表達(dá)式塊等jsp動(dòng)態(tài)代碼部分
    • el只能從四大域?qū)傩钥臻g中獲取數(shù)據(jù)(pagecontext、request、session、application)
    • el不會(huì)拋出空指針異常,只會(huì)不顯示
    • el不會(huì)拋出數(shù)組越界異常,只會(huì)不顯示
    • el不具有對(duì)字符串進(jìn)行處理的能力(可以使用jstl的el或者自定義el函數(shù))
    相關(guān)文章