浅谈JSP之JSTL
简介
主要组成
优点
使用条件
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
我这里使用的是老版本的jstl1.0,下面让我们使用jstl的几个核心标签来进行具体的演示:
核心标签
c:out
<c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是<c:out>标签可以直接通过"."操作符来访问属性。
语法格式<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
参数:value:要输出的内容值 default:输出的默认值 escapeXml:是否忽略xml特殊字符
注意:<c:out>标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。
下面写个小例子来说明下:
<c:out value="JSTL核心库out标签显示内容"></c:out>
<br>
<c:out value="<a href = 'http://www.baidu.com/'>点击跳转百度</a>"></c:out>
<br>
<c:out value="<a href = 'http://www.baidu.com/'>点击跳转百度</a>" escapeXml="false"></c:out>
<%-- 如果value的值为空,显示默认值里的内容--%>
<c:out value="${null}" default="value值为null"></c:out>
看着上面代码,不妨在大脑里构思一下结果,第一个会输出value 的所有值,第二个因为escapexml默认为true,所以忽略了a标签,不会进行转义,第三个会转义a标签,第四个因为value的值用el表达式绑定的是null值,所以默认输出的是default的值
run一下,看看效果:
c:set
<c:set>标签用于设置变量值和对象属性。
<c:set>标签就是<jsp:setProperty>行为标签的孪生兄弟。
这个标签之所以很有用呢,是因为它会计算表达式的值,然后使用计算结果来设置 JavaBean 对象或 java.util.Map 对象的值。
语法格式:
<c:set
var="<string>"
value="<string>"
target="<string>"
property="<string>"
scope="<string>"/>
参数含义:scope的默认值为page
注意:如果指定了target属性,那么property属性也需要被指定。
举例:
先引入JSTL标签库,引入了一个javabean对象Person
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="person" class="com.hbnu.EL.Person" />
public class Person {
private String username;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
<h4>将数据保存到page域中<c:set value="生如夏花" var="username" scope="page" /></h4>
<h4>从page域中获取数据:${username}</h4>
<%-- pageScope.username--%>
<hr>
<h4>将数据保存到request域中<c:set value="18" var="age" scope="request" /></h4>
<h4>从request域中获取数据:${age}</h4>
<hr>
<h4>将数据保存到seesion域中<c:set value="湖北武汉" var="address" scope="session" /></h4>
<h4>从seesion域中获取数据:${address}</h4>
<hr>
<h4>将数据保存到application域中<c:set value="男" var="sex" scope="application" /></h4>
<h4>从application域中获取数据:${sex}</h4>
<h4>${username} ${age} ${sex} ${address}</h4>
<hr>
<h4>将数据保存到JavaBean对象中<c:set value="冲击之刃" target="${person}" property="username" /> </h4>
<h4>从JavaBean对象中获取数据:${person.username}</h4>
<%
Map map =new HashMap();
request.setAttribute("mapkey",map);
%>
<c:set property="data" value="yang" target="${mapkey}"></c:set>
<h4>从map对象里获取数据:${mapkey.data}</h4>
这里我示例了四个范围:page,request,seesion,application和javabean、map,通过c:set保存值,然后通过el表达式取值
c:choose和c:when、c:otherwise
<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择,本身只当做<c:when>和<c:otherwise>的父标签。
switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>。
<c:set var ="score" value="95"></c:set>
<c:choose>
<c:when test="${score>=90}">
<c:out value="你是最胖的!"></c:out>
</c:when>
<c:when test="${score<90&&score>=70}">
<c:out value="良好"></c:out>
</c:when>
<c:when test="${score<70&&score>=60}">
<c:out value="及格"></c:out>
</c:when>
<c:otherwise>
<c:out value="你remake吧!"></c:out>
</c:otherwise>
</c:choose>
c:if
<c:if>标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。
<c:if test="<boolean>" var="<string>" scope="<string>">
...
</c:if>
scope的默认值为page
举例:判断输入框是否为admin ,是就输出欢迎登录
<form action="#" method="post">
<input type="text" name="username" value="${param.username}" placeholder="请输入用户名">
<input type="submit" value="提交">
</form>
<c:if test="${param.username=='admin'}" var="result">
<c:out value="欢迎登陆!!!"></c:out>
</c:if>
<br>
if条件判断结果:${result}
c:foreach
<c:forEach>标签是更加通用的标签,因为它迭代一个集合中的对象。
语法:
<c:forEach
items="<object>"
begin="<int>"
end="<int>"
step="<int>"
var="<string>"
varStatus="<string>">
<%
List<String> list =new ArrayList<>();
list.add("element1");
list.add("element2");
list.add("element3");
list.add("element4");
list.add("element5");
request.setAttribute("list",list);
%>
<h5>不指定begin、end遍历集合</h5>
<c:forEach var="element" items="${list}">
<c:out value="${element}"></c:out>
</c:forEach>
<h5>指定begin、end、step</h5>
<c:forEach var="item" items="${list}" begin="1" end="4" step="2">
<c:out value="${item}"></c:out>
</c:forEach>
以上关于JSTL的常用核心标签基础就介绍到这里了
总结:
这里从JSTL的简介、组成、特点、使用条件和常用核心标签进行一一举例介绍,如有不足之处,欢迎指正!
感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。
- 点赞
- 收藏
- 关注作者
评论(0)