首页 > 代码库 > 常用的EL表达式和JSTL

常用的EL表达式和JSTL

EL表达式:

打印接受来的参数
${ param.VarName }

验证接受来的参数是否为NULL:

${ empty param.VarName }

EL内置的与存储范围有关几个对象
类型为java.util.map
pageScope
requestScope
sessionScope
applicationScope

与输入有关的隐含对象
用来取得用户的请求参数:

param
paramValues

EL中内置的其它隐含对象

cookie
header
headerValues
iniParam
pageContext

EL通过.和[]运算符来存取数据
EL作为存取器访问JavaBean、Map、对象数组及List中的数据

 

JSTL标签:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/x"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/fn"%>

 

输出变量

<c:out value="PrintContentValue" />

 
定义变量

<c:set var="variable" value="varValue" scope="varScope">

 

删除变量

<c:remove var="variable" scope="varScope">

 

没有本体内容的判断语句

<c:if test="${ 3 > 4 }" var="result" scope="page" />

 

有本体内容的判断语句

<c:if test="${ 3 < 4 }" var="rs" scope="page">
<c:out value="YES" />
</c:if>

 

JSTL标签中的if-else语句

<c:choose>
<c:when test="${ 3 > 4 }">
<c:out value=" 3 > 4 YES"></c:out>
</c:when>
<c:otherwise>
<c:out value=" 3 > 4 NO"></c:out>
</c:otherwise>
</c:choose>


指定语句循环次数:

<c:forEach var="number" begin="1" end="5">
<c:out value="${ number }"></c:out>
</c:forEach>

 

遍历集合对象的成员:

<c:forEach var="str" items="${ names }">
<c:out value="${ str }"></c:out>
</c:forEach>

 

分隔字符串,在使用多个分隔符时使用“;”隔开

<%
String str = "A-B-C";
session.setAttribute("str", str);
%>
<c:forTokens items="${ str }" delims="-" var="item">
<c:out value="${ item }"></c:out>
</c:forTokens>


JSTL标签强大的import功能:

<c:import url="IM.txt" charEncoding="UTF-8"></c:import>
<c:import url="IM.jsp" charEncoding="UTF-8"></c:import>
<c:import url="IM.html" charEncoding="UTF-8"></c:import>
<c:import url="http://www.baidu.com" charEncoding="GBK"></c:import>
<c:import url="META-INF/MANIFEST.MF" charEncoding="UTF-8"></c:import>

 

同一服务器上,不同站点
server.xml中配置

<Context path="/testProtect" docBase="d:\tomcat6\testProtect" reloadable="true" crossContext="true"></Context>
<Context path="/jstlProtect" docBase="d:\tomcat6\jstlProtect" reloadable="true" crossContext="true"></Context>
<c:import url="IM.html" charEncoding="UTF-8" context="/testProject"></c:import>

<c:import url="IM.html" charEncoding="UTF-8" var="str" scope="session"></c:import>

把其他文件的内容以String的形式导入进来,并保存在变量var中,属性scope用以指定变量范围。

 

向导入的JSP页面传递参数:

import.jsp
<c:import url="IM.jsp" charEncoding="UTF-8">
<c:param name="username" value="root"></c:param>
<c:param name="password" value="admin"></c:param>
</c:import>IM.jsp
<c:out value="${ param.username }" />
<c:out value="${ param.password }" />

 
相当于链接地址 http://www.baidu.com/s?wd=java:

<c:url value="http://www.baidu.com/s" var="variable" scope="session" >
<c:param name="wd" value="java" />
</c:url>

 
页面跳转
执行后,URL为:http://localhost:8080/jstlProject/redirectResult.jsp?result=success

redirect.jsp
<c:redirect url="redirectResult.jsp">
<c:param name="result" value="success"></c:param>
</c:redirect>
redirectResult.jsp
<c:out value="${ param.result }"></c:out>

 

建立数据库链接:

<sql:setDataSource
url="jdbc:mysql://localhost:3306/jstl"
driver="com.mysql.jdbc.Driver"
user="root"
password="admin"
var="dbsource"
scope="session"/>

 

数据库更新操作

<sql:update>
insert into person(id, username, password, name)
values(null, ‘test‘, ‘123456‘, ‘测试‘);
</sql:update>

 
数据查询操作 将查询结果存入result对象中

<sql:query var="result">
select * from person;
</sql:query>

 

遍历查询结果

<c:forEach items="${ result.rows }" var="row">
<tr>
<td><c:out value="${ row.id }" /></td>
<td><c:out value="${ row.username }" /></td>
<td><c:out value="${ row.password }" /></td>
<td><c:out value="${ row.name }" /></td>
</tr>
</c:forEach>

 

设置数据语句的参数

<c:set var="uid" value="5"></c:set>
<sql:query var="abc">
select * from person where id = ?;
<sql:param value="${ uid }"></sql:param>
</sql:query>


事务处理安全机制

<sql:transaction>
<sql:update>
</sql:update>

<sql:query>
</sql:query>
</sql:transcation>

 

 forEach循环体

<c:forEach var="number" begin="1" end="5">
<c:out value="${ number }"></c:out>
</c:forEach>