JavaWeb——JSTL表达式的使用
一、通用的目的标签
1)<c:out>
标签
<c:out>
标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是<c:out>
标签可以直接通过"."操作符来访问属性。举例来说,如果想要访问customer.address.street,只需要这样写:<c:out value=“customer.address.street”>。<c:out>
标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。
语法格式
<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
属性
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要输出的内容 | 是 | 无 |
default | 输出的默认值 | 否 | 主体中的内容 |
escapeXml | 是否忽略XML特殊字符 | 否 | true |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:out value="糖葫芦"/><br/>
<c:out value="${number}" default="糖葫芦"/><br/>
<c:out value="${headerValues['User-Agent'][0]}"/><br/>
<c:out value="<h4>糖葫芦</h4>" escapeXml="true"/><br/>
<c:out value="<h4>糖葫芦</h4>" escapeXml="false"/><br/>
</body>
</html>
1.当要输出的值为null或者不存在,可以使用default指定一个默认值。
2.<c:out>
标签可以使用EL表达式取值
3.escapeXml 是否以xml格式输出注:默认为true,即像”<”,”>”这样的符号会原样输出
2)<c:set>
标签
<c:set>
标签用于设置变量值和对象属性。
<c:set>
标签就是<jsp:setProperty>
行为标签的孪生兄弟。
这个标签之所以很有用呢,是因为它会计算表达式的值,然后使用计算结果来设置 JavaBean 对象或 java.util.Map 对象的值。
语法格式
<c:set
var="<string>"
value="<string>"
target="<string>"
property="<string>"
scope="<string>"/>
属性
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要存储的值 | 否 | 主体的内容 |
target | 要修改的属性所属的对象 | 否 | 无 |
property | 要修改的属性 | 否 | 无 |
var | 存储信息的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | Page |
如果指定了target属性,那么property属性也需要被指定。
- scope 的作用域大小依次为:
application > session > request > page(默认)
- jsp 处理变量的作用域先后依次为:
page(默认) -> request -> session -> application
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="user" class="entity.User" scope="session"></jsp:useBean>
<%!
Map<String,String> map=new HashMap<>();
%>
<html>
<h