首页 > 代码库 > EL表达式

EL表达式

1、语法:${变量/对象./对象[‘‘]}:看具体情况的使用
2、.与[]的运算符
普通情况下.与[]可以互换,但在包含特殊字符和纯数字的情况下就一定的使用[],例如${sessionScope.stundent[na-me]},动态取值的时候必须使用
[]。
3、EL表达式取变量的顺序是:${userName}:先从page->request->session->application查找,如果查到则停止查询,查不到则返回""
4、变量范围在EL表达式的名称
page->pageScope    request->requestScope    session->sessionScope    application->applicationScope
5、获取指定范围的EL
${pageScope.name} 从page范围中取出name变量
${requestScope.name}从request域中取出name变量
${sessionScope.name}从session域中取出name变量
${applicationScope.name}从application域中取出name变量

例如:${sessionScope.name}等价于jsp中的session.getAttribute("name");
6、自动类型转换
EL表达式会根据实际情况进行类型转换,而jsp拿到的数据不会进行自动数据类型转换
例如:
    jsp中获取表单参数,进行累加20
    String countString=request.getParameter("count");
    int count=Integer.ParseInt(countString);
    count+=20;
   
    EL中获取表单参数,进行累加20
    ${param.count+20}
7、EL保留字,取名时要避免这些保留字
and、eq、gt、true、not、lt、ge、null、instanceof、empty、div、mod
8、EL的运算符
/或div 除, %或mod 模, ==或= 等于, <或lt 小于, >或gt 大于,<=或le 小于或等于,  >=或ge 大于或等于, &&或and 逻辑与, ||或or 逻辑或
!或nor 逻辑非,empty 检查是否为空字符串 ,  a?b:c 三元运算符 其他的与java一模一样
9、EL中的运算符的基本用法
${1} 结果为1,${1 lt 2}或${1<2} false;其他的自己试
10、EL内置对象
pageContext:表示此jsp页面中的pageContext,表示此jsp页面所对应的上下对象,就包含了这9个内置对象
pageScope:用来获取page范围属性名称所对应的值
requestScope:用来获取request范围属性名称所对应的值,获取请求范围内的共享信息
sessionScope:用来获取session范围属性名称所对应的值,获取会话范围内的共享信息
applicationScope:用来获取application范围属性名称所对应的值,获取应用程序内的共享信息
param:用来获取url单个参数值,返回类型为String类型
paramValues:用来获取url参数值 ,返回String[]类型
header:用来获取单个Http头信息,返回string类型
headerValues:用来获取一组HTTP头信息,返回string[]类型
cookie:获取cookie信息
initParam:获取初始化参数值


11、自定义函数调用Java中的静态方法

java中的类
package model;

public class JiSuan {

    public static int add(int x,int y) {
        return x+y;
    }
}


TLD(TLD的建立,一般情况下都建立在WEB-INF文件夹中,右键->选择tld文件->打开tld中的Design-点开你创建的tld->点开function->
右边点击add->添加一些 消息,name:静态方法名,function-class:对应类,function-Signature:方法的特征)

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
 <tlib-version>1.0</tlib-version>
 <short-name>SimpleTagLibrary</short-name>
 <function>
  <name>add</name><!-- 自定义函数 -->
  <function-class>model.JiSuan</function-class><!-- 函数属于哪个类的 -->
  <function-signature>
      int add(int,int)<!-- 调用哪个函数,分别的类型,参数 -->
  </function-signature>
 </function>
</taglib>

jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!-- prefix="my":对象名,uri="/WEB-INF/add.tld"地址 -->
<%@ taglib prefix="my" uri="/WEB-INF/add.tld" %>
<body>
    <form action="" method="get">
        <!--value="http://www.mamicode.com/${param[‘x‘]}获取提交参数,x -->
        x=<input type="text" name="x" value="http://www.mamicode.com/${param[‘x‘]}" /><br>
        y=<input type="text" name="y" value="http://www.mamicode.com/${param[‘y‘]}" /><br>
        <input type="submit" value="http://www.mamicode.com/提交" />
    </form>
        <!-- ${my:add(param[‘x‘],param[‘y‘]) }调用了JiSuan类的静态add方法 -->
        加法运算的结果是:${my:add(param[‘x‘],param[‘y‘]) }
  </body>


获取resquest域
   
</head>
      <%
          Student student=new Student();
          student.setName("张三");
        request.setAttribute("stu", student);
     %>

  <body>
     ${stu.name}<br>
     <form action="MyJsp.jsp" method="get">
         <input type="text" name="txt" />
         <input type="submit" value="http://www.mamicode.com/提交" />
     </form>
  </body>

</head>
      <%
          Student student=new Student();
          student.setName("张三");
        request.setAttribute("stu", student);
     %>
     ${stu.name}<br>
    
     <form action="MyJsp.jsp" method="get">
         <input type="text" name="txt" />
         <input type="submit" value="http://www.mamicode.com/提交" />
     </form>
  <body>
   
     
    
  </body>