首页 > 代码库 > 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>