JSP页面引入:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
表达式操作标签:out、set、remove、catch
1.<c:out>
<c:out>可以在页面中显示一个字符串或一个EL表达式的值。它的功能与JSP传统的<%=表达式%>相类似。
out标签的使用格式如下:
<c:out value=”object” [escapeXml=”true|false”] />
<c:out value=”object” [escapeXml=”true|false”] >default value</c:out>
参数:
value:可以指定一个字符串作为输出内容,也可以为EL表达式,例如${3+5}。
escapeXml:类型为boolean,确定<、>、&、’、”等这些字符在结构的字符串中是否被转换成字
符串实体代码,默认的是true。
default value:可以是字符串,或一个表达式(EL表达式或者<%=表达式%>的JSP表达式)。
如果属性指定的表达式或者对象值为null时,那么将输出这个default value部分的值。
例子:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>JSTL OUT标签</title>
</head>
<body>
<%
String items[] = new String[3];
items[0] = "JSTL OUT标签测试";
items[1] = "<h2>abc</h2>";
items[2] = "输出2";
request.setAttribute("items", items);
%>
<c:out value="${a}">JSTL OUT标签</c:out>
<br />
<c:out value="${b}" default="JSTL OUT" />
<br />
<c:out value="${items[0]}">JSTL OUT标签</c:out>
<br />
<c:out value="${items[1]}" />
<br />
<c:out value="${items[1]}" escapeXml="false" />
<br />
<c:out value="${items[2]}" />
<br />
<c:out value="${111+211}" />
</body>
</html>
输出:
JSTL OUT标签
JSTL OUT
JSTL OUT标签测试
<h2>abc</h2>
abc
输出2
322
2.<c:set>
<c:set>标签是用来在某个范围(request、session或者application)内设值,或者设置某个对象的属性值。
set标签的使用格式如下:
<c:set var=”varName” value=”varValue” [scope=”page|request|session|application”] />
<c:set var=”varName” value=” Value” [scope=”page|request|session|application”] >
default value
</c:set>
<c:set property=”propertyName” target=”target” value=”value” />
<c:set property=”propertyName” target=”target” value=”value” >
default value
</c:set>
参数:
value:该属性指定变量或者对象中某个属性的值,并且可以是一个表达式。
var:变量名称, value属性指定的值就保存在这个变量中。
scope:设定变量的有效范围,如果不设置,则默认为page。
target:设置属性的一个对象,它必须是JavaBean或者java.util.Map对象。
property:设置对象中的一个属性。
例子:
package test.jstl;
import java.io.Serializable;
public class Test implements Serializable {
private static final long serialVersionUID = 7133763668848520975L;
private String name;
private String value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return "Test [name=" + name + ", value=" + value + "]";
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" import="test.jstl.Test"%>
<html>
<head>
<title>JSTL SET标签</title>
</head>
<body>
<%
Test test = new Test();
test.setName("名字1");
test.setValue("值1");
request.setAttribute("test", test);
%>
<h3>set标签测试</h3>
<c:set var="var1" value="1" />
<c:set var="var2" value="2" scope="page" />
<c:set var="var3" value="3" scope="request" />
<c:set var="var4" value="4" scope="session" />
<c:set var="var5" value="5" scope="application" />
<c:out value="${var1}" />
<br />
<c:out value="${var2}" />
<br />
<c:out value="${var3}" />
<br />
<c:out value="${var4}" />
<br />
<c:out value="${var5}" />
<br />
<h3>修改Test类中Name属性的值前:</h3>
<c:out value="${test.name}" />
<br />
<h3>修改Test类中Name属性的值后:</h3>
<c:set property="name" target="${test}" value="名字2" />
<c:out value="${test.name}" />
<br />
</body>
</html>
输出:
set标签测试
1
2
3
4
5
修改Test类中Name属性的值前:
名字1
修改Test类中Name属性的值后:
名字2
3.<c:remove>
remove标签一般和set标签配套使用,两者是相对应的,remove标签用于删除某个变量或者属性。
使用格式如下:
<c:remove var=”varName” [scope=”page|request|session|application”] />
参数:
scope:设定这个需要删除的变量所在范围。
var:需要删除的变量或者对象属性的名称。
例子:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" import="test.jstl.Test"%>
<html>
<head>
<title>JSTL Remove标签</title>
</head>
<body>
<h3>remove标签测试</h3>
<c:set var="var1" value="1" />
<c:set var="var2" value="2" scope="page" />
<c:set var="var3" value="3" scope="request" />
<h3>删除前:</h3>
<c:out value="${var1}" />
<br />
<c:out value="${var2}" />
<br />
<c:out value="${var3}" />
<br />
<h3>删除Page对象后:</h3>
<c:remove var="var1" scope="page" />
<c:remove var="var2" scope="page" />
<c:remove var="var3" scope="page" />
<c:out value="${var1}" />
<br />
<c:out value="${var2}" />
<br />
<c:out value="${var3}" />
<br />
<h3>删除对象后:</h3>
<c:remove var="var3" />
<c:out value="${var3}" />
<br />
</body>
</html>
输出:
remove标签测试
删除前:
1
2
3
删除Page对象后:
3
删除对象后:
4.<c:catch>
catch标签的功能和Java程序中try…catch{}语句功能很类似,它用于捕获嵌入到它中间语句抛出的异常。
使用格式如下:
<c:catch var=”varName” > 相关操作语句 </c:catch>
参数:
var:用于保存异常错误的一个变量名。
例子:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" import="test.jstl.Test"%>
<html>
<head>
<title>JSTL Catch标签</title>
</head>
<body>
<c:catch var="error">
<%
String str = "3";
int num1 = Integer.parseInt(str);
request.setAttribute("num1", num1);
%>
</c:catch>
<c:out value="数字为:" />
<c:out value="${num1 }" />
<br/>
<c:out value="错误为:" />
<c:out value="${error }" />
<hr />
<c:catch var="error">
<%
String str = "a";
int num2 = Integer.parseInt(str);
request.setAttribute("num2", num2);
%>
</c:catch>
<c:out value="数字为:" />
<c:out value="${num2 }" />
<br/>
<c:out value="错误为:" />
<c:out value="${error }" />
</body>
</html>
输出:
数字为: 3
错误为:
数字为:
错误为: java.lang.NumberFormatException: For input string: "a"