欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jsp—EL表达式

程序员文章站 2022-04-07 19:09:36
...

EL表达式(Expression Language)

语法: ${ }
主要作用

  • 获取(域对象中的)数据
    • EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象,获取数据。(某个web域中的对象,访问JavaBean的属性,访问list集合,访问map集合,访问数组)
  • 执行运算
    • 利用EL表达式可以在JSP页面中执行一些基本的关系运算,逻辑运算和算术运算,以在jsp页面中完成一些简单的逻辑运算。${user==null}
  • 获取web开发常用对象
    • EL表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
  • 调用java方法
    • EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用java类的方法。

获取域对象中的数据

获取域对象中的值

<h3>获取域对象中的值</h3>
<!--Demo1.jsp-->
<%
    request.setAttribute("name""美眉");
    pageContext.setAttribute("name","航航")
%>
<!--默认从最小的域中获取对象的值-->
${name}

${requestScope.name}

获取域中数组的值

<h4>域中数组的值</h4>
<%
    String[] arrs={"meimei","hanghang","dongdong","mingming"};
    request.setAttribute("arrs",arrs);
%>
<!--通过数组的索引获取值-->
${arr[2]}

获取域中集合的值

<h4>域中集合的值</h4>
<%
    List<String> list=new ArrayList();
    list.add("meimei");
    list.add("xioaqiqng");
    request.setAttribute("list",list);
%>
<!--相当于map的put操作,key是String类型,value是Object类型-->
<!--取出xiaoqing-->
${list[1]}

获取域中Map集合的值

<h4>域中Map集合的值</h4>
<%
    Map<String ,String> map = new HashMap<String,String>();
    map.put("aa","xiaomei");
    map.put("bb","xioawang");   
    //特殊字符key--cc/dd--cc$dd等
    map.put("cc.dd","xioameng");
%>
<!--获取xiaomei-->
${map.aa}
<!--获取特殊字符作为key的value值-->
${map["cc.dd"]}

获取集合中的自定义对象

<h4>域中集合中有自定义对象</h4>
<%
    List<User> uList = new ArrayList<User>();
    uList.add(new User("zhongguo","123"));
    uList.add(new User("yingguo","456"));
    request.setAttribute("uList",uList);
%>
<!--uList[1]相当于拿到了集合中的对象,uList[1].属性名-->
${uList[1].username}

执行运算

算术运算

<h4>算术运算</h4>
<%
    request.setAttribute("n1",11);
    request.setAttribute("n2",22);
    request.setAttribute("n3",33);
    request.setAttribute("n4",44);
%>
${n1+n2}
<!--输出33-->

关系运算

${n2>n2}
<!--转义符号大于-->
${n1 gt n2}
<!--转义小于-->
${n1 lt n2}
${n1 < n2}
<!--转义等于-->
${n1==n2}
${n1 eq n2}
<!--转义不等于-->
${n1 != n2}
${n1 ne n2}
<!--大于等于-->
${n1>=n2}
${n1 ge n2}
<!--小于等于-->
${n1<=n2}
${n1 le n2}

逻辑运算

<!--与运算-->
${n1>n2 && n3>n4}
${n1>n2 and n3>n4}
<!--或运算-->
${n1>n2 || n3>n4}
${n1>n2 or n3>n4}
<!--非运算-->
${! (n1>n2)}
${not (n1>n2)}

获取web开发中的对象

  • pageContext : 对应于JSP页面中的pageContext对象(取的是pageContext对象)
  • pageScope: 代表page域中用于保存属性的Map对象
  • requestScope: 代表request域中用于保存属性的Map对象
  • sessionScope :代表session域中用于保存属性的Map对象
  • applicationScope :代表application域中用于保存属性的Map对象
  • param : 表示一个保存了所有请求参数的Map对象
  • paramValues : 表示一个保存了所有请求参数的Map对象,它用于某个请求参数,返回的是一个String[]
  • header : 表示一个保存了所有http请求头字段的Map对象
  • headerValues : 返回String[]数组,注意:如果头里面有“-”,例Accept-Encoding,则要headerValues[“Accept-Encodings”]
  • cookie : 表示一个保存了所有cookie的Map对象
  • initParam : 表示一个保存了所有web应用初始化参数的map对象
<!--表单-->
<form action="/JSPDemo/el/demo1.jsp">
    姓名:<input type="text" name="username"/><br/>
    <input type="submit" value="登录"/>
</form>

<!--demo1.jsp-->
${param.username}

<!--获取请求头-->
${header.referer}

<!--获取全局初始化参数-->
<!--web.xml中配置全局初始化参数-->
<context-param>
    <param-name>username</param-name>
    <param-vakue>root</param-value>
</context-param>

<!--在demo1.jsp中-->
${initparam.username}
<!--输出root-->

<!--获取cookie-->
<!--cookie名为last-->
${cookie.last.name}

<!--pageContext-->
<!--pageContext.request 相当于获取到request对象-->
<!--获取IP-->
${pageContext.request.remoteAddr}
<!--获取虚拟路径-->
${pageContext.request.contextPath}
<!--动态获取虚拟路径-->