是一种可以在JSP页面中利用的数据访问措辞

EL可以用来干啥

使动态网页的设计、开拓和掩护更加随意马虎,网页编写职员不必懂得Java编程措辞,也可以编写JSP网页。

jspel声明变量JavaWeb笔记之EL表达式 React

1. 理解表达式措辞

EL并不是一种通用的编程措辞,它仅仅是一种数据访问措辞。

1.1 EL表达式的语法

在JSP页面中,表达式措辞的语法:

${expression}

//例如

<ul>

<li>用户名:${user.username}

<li>密码:${user.password}

</ul>

//在JSP动作中利用EL表达式

<jsp:include page="${expression}" />

1.2 EL表达式的功能

供应了一组大略的运算符

对浸染域变量的方便访问

对JavaBeans工具访问的大略表示

对凑集元素的大略访问

对要求参数的大略访问

对要求参数、Cookie和其他要求数据的大略访问

1.3 EL表达式和JSP表达式的差异

在EL中不能定义变量,也不能利用脚本中声明的变量,但它可以访问要求参数、浸染域变量、JavaBeans以及EL隐含变量等。

JSP表达式:

<%=expression %>

//此处的expression为合法的Java表达式,它属于脚本措辞的代码,在expression中可以利用由脚本声明的变量

//例如

<%! int count = 100; %>

count is <%=count %>

EL表达式:

${expression}

//这里的expression是符合EL规范的表达式,并不须要包含在标签内。
在EL表达式中不能利用脚本声明的变量

<%! int count = 100; %>

count is ${count}//此处会返回空

2. EL运算符

2.1. 算术运算符

+ 例如:${6+6}

- 例如:${4-3}

例如:${43}

/ 例如:${9/3}

把稳:在EL表达式中的‘+’只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作数转换为数值类型,进而进行数学加法运算,末了把结果输出。
若涌现${‘a’+‘b’}则会涌现非常。

2.2. 关系运算符

> 或者 gt, 例如:${8>9} 或者 ${8 gt 9 }

>= 或者 ge, 例如:${45>=9} 或者 ${45 ge 9 }

< 或者 lt, 例如:${4<9} 或者 ${4 lt 9 }

<= 或者 le, 例如:${9<=8} 或者 ${9 le 8 }

== 或者 eq, 例如:${4==4} 或者 ${4 eq 4 }

!= 或者 ne, 例如:${4!=3} 或者 ${4 ne 3 }

2.3. 逻辑运算符

&& 或者 and, 例如:${false && false} 或者 ${false and false }

|| 或者 or, 例如:${true || false} 或者 ${true or false }

! 或者 not,例如:${!true}(相称于${false}) 或者 ${not true }

2.4. 三元运算符

? : 例如:${3>2?'是':'不是'}

2.5. 分外运算符

empty 判断EL表达式中的表达式是否为空

例如:${empty sessionScope.user}

2.6 属性与凑集元素访问运算符

"." 是我们最常用的,浸染相称于实行Bean中的get方法。

例如:

${sessionScope.user.userName}意思是:在会话中得到名称为user的Bean对

象,通过“.”运算符实行getUserName();方法,返回存放在Bean中的用户名属性

的值。

[] 浸染和“.”运算符的一样,只不过[]运算符可以实行一些不规则的标识符。

例如:

${requestScope.user["score-math"]},这个表达式中有不规则的标识符,

是不能利用“.”来访问的。

3. 利用EL访问数据

3.1 访问浸染域变量

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>EL中数据的读取</title>

</head>

<body>

<%

String[] arr = {"Java web从入门到精通","Java开拓规范手册","Java网络编程"};

request.setAttribute("book",arr); //将数组保存到request工具中

%>

<%

String[] arr1 = (String[])request.getAttribute("book"); //获取保存到request范围内的变量

//通过循环和EL输出一维数组的内容

for(int i = 0;i < arr1.length;i++){

request.setAttribute("requestI", i);

%>

${ requestI }: ${ book[requestI] }<br> <!-- 输出数组中第i个元素 -->

<%

}

%>

</body>

</html>

3.2 访问JavaBeans属性

JavaBeans类:

public class Student {

private boolean flag;

public Student(){}

public boolean getFlag() {

return flag;

}

public void setFlag(boolean flag) {

this.flag = flag;

}

Servlet类:

public class StudentServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request,response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

Student student = new Student();

student.setFlag(false);

request.setAttribute("student", student);

request.getRequestDispatcher("student.jsp").forward(request, response);

}

}

JSP页面访问

${student.flag}//获取student工具的flag属性,便是这么大略

3.3 访问凑集元素

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<%@ page import="java.util." %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>EL获取指定元素</title>

</head>

<body>

<%

List<String> list = new ArrayList<String>(); //声明一个List凑集的工具

list.add("饼干");

list.add("牛奶");

list.add("果冻");

session.setAttribute("goodList",list); //将List工具保存到session工具中

List<String> list1 = (List<String>)session.getAttribute("goodList"); //获取保存到session范围内的工具

for(int i=0;i<list1.size();i++){

request.setAttribute("requestI", i); //将循环增量保存到request范围内的工具中

%>

${ requestI }: ${ goodList[requestI] }<br> <!-- 输出凑集的第i个元素 -->

<%} %>

</body>

</html>

EL隐含变量

复习一下JSP的隐含变量:

request、response、application、pageContext、session、page、out、config、exception

下面是EL隐含变量:

变量名解释

pageContext包含JSP常规隐含工具的PageContext类型工具

param包含了要求参数字符串的Map工具

paramValues包含了要求参数字符串数组的Map工具

header包含要求头字符串的Map工具

headerValues包含要求头字符串数组的Map工具

initParam包含Servlet高下文参数的参数名和参数值的Map工具

cookie包含Cookie域和单个工具的Map工具

pageScope包含page浸染域属性的Map工具

requestScope包含request浸染域属性的Map工具

sessionScope包含session浸染域属性的Map工具

applicationScope包含application浸染域属性的Map工具

例子

${pageContext.request.method} //得到HTTP要求的方法,如GET或POST

${pageContext.request.queryString} //获取要求的查询串

${pageContext.request.requestURL} //获取要求的URL

${pageContext.request.remoteAddr} //获取要求的IP地址

${pageContext.session.id} //获取会话的ID

${pageContext.session.new} //判断会话工具是否是新建的

${pageContext.servletContext.serverInfo}//获取做事器的信息