1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > JSTL(Java 标准标签库)

JSTL(Java 标准标签库)

时间:2020-08-03 08:55:08

相关推荐

JSTL(Java 标准标签库)

文章目录

JSTL 简介JSTL 可以使用在哪里JSTL 使用步骤使用标签if 语句选择语句迭代遍历语句URL重写设置属性值删除属性值异常捕获导入其它 JSP 页面重定向输出指定的值

JSTL 简介

Java Standard Taglib(Java 标准标签库)。

JSTL 是一种代替 JSP 中的 Java 代码的技术。sun 公司制订的一种技术规范,用来将 JSP 页面中的 java 代码使用类似于 html 当中的标记来替换的一种技术。这样做的目的,是为了使 JSP 页面更好维护以及更好的测试。

JSTL 其实质是什么?

JSTL 底层其实是一些 Java 代码,在 JSP 转换成 Servlet 类时,会在 service() 方法体内生成 JSTL 对应的 Java 代码。每种 JSTL 标签都有其固定的含义,最后会生成固定的 Java 代码。

JSTL 可以使用在哪里

JSTL 只能用在 JSP 文件中,不可以在 XML 和 HTML 文件中使用,不可以用在 JS 语境中,不可以用在 Java 的语境中。

可以用在标签的属性值中,例如:

<a href="<c:url value='/jstl05.jsp'/>">访问jstl05</a>

JSTL 使用步骤

1.需要引用 JSTL 标准标签库相关的 jar 文件。

你如果使用 eclipse 开发,则将 jar 文件 copy 到WEB-INF\lib,并添加到构建路径中(构建的 classpath 中)。

jar 文件有:jstl.jarstandard.jar

2.在 jsp 文件当中,使用taglib指令导入标签。

<%@ taglib prefix="c" uri="/jsp/jstl/core" %>

使用标签

jstl 标签都是结合 el 表达式一起使用的。

jstl 标签中不能使用 ognl 表达式。

if 语句

<c:if test="" var="" scope="">

test 属性:当值为 true,执行标签体的内容(其实就是将内容输出到页面),为 false,则不执行。

var 属性:指定一个绑定名。

scope 属性:指定一个绑定范围。

var 属性和 scope 属性用于将 test 的结果绑定到指定的对象(pageContext、request、session、application)上。

示例代码:

<%@ page import="priv.lwx.jstl.bean.User" %><%--Created by IntelliJ IDEA.User: liaowenxiongDate: /2/4Time: 19:22To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="/jsp/jstl/core" %><html><head><title>Title</title></head><body style="font-size:30px"><%User user = new User();user.setName("liaowenxiong");user.setGendar("f");request.setAttribute("user1", user);%>user's name:${user1.name}<br>user's gendar:<c:if test="${user1.gendar == 'm'}" var="rs" scope="request">男</c:if><c:if test="${!rs}">女</c:if></body></html>

选择语句

<c:choose>

用于分支,当某个条件满足,执行某一个分支。每一个分支条件用 when 标签来表示。

<c:when test="">

可出现多次,只用于<c:choose>

test 属性: 当值为 true,执行标签体的内容。

<c:otherwise>

只出现 1 次,只用于<c:choose>

当其它分支都不满足条件,则执行该标签体的内容。

示例代码:

<%@ page import="priv.lwx.jstl.bean.User" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="/jsp/jstl/core" %><html><head><title>Title</title></head><body style="font-size:30px"><%User user = new User();user.setName("liaowenxiong");user.setGendar("f");request.setAttribute("user1",user);%>user's gendar:<c:choose><c:when test="${user1.gendar == 'm'}">男</c:when><c:otherwise>女</c:otherwise></c:choose></body></html>

迭代遍历语句

<c:forEach var="" items="" varStatus="">

用于遍历集合

items 属性:指定要遍历的集合。

var 属性: 指定一个绑定名,jsp 引擎会从集合当中取一个对象,绑定到 pageContext 对象上。

varStatus 属性: 指定一个绑定名,对应的绑定值是一个 java 对象,封装了遍历时的一些信息,包括当前遍历的对象的下标(index)以及

是第几次(count)遍历。

示例代码1:

<%@ taglib prefix="c" uri="/jsp/jstl/core" %><%@ page import="java.util.ArrayList" %><%@ page import="priv.lwx.jstl.bean.User" %><%@ page import="java.util.List" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title><style>td {text-align: center;}</style></head><body style="font-size: 30px;"><%List<User> users = new ArrayList<>();User user1 = new User();user1.setName("zs");user1.setGendar("f");User user2 = new User();user2.setName("ww");user2.setGendar("m");users.add(user1);users.add(user2);request.setAttribute("users", users);%><table border="1" width="60%" cellpadding="0" cellspacing="0"><tr><td>name</td><td>gendar</td></tr><c:forEach var="user" items="${users}"><tr><td>${user.name}</td><td>${user.gendar}</td></tr></c:forEach></table></body></html>

示例代码2:

<%@ taglib prefix="c" uri="/jsp/jstl/core" %><%@ page import="priv.lwx.jstl.bean.User" %><%@ page import="java.util.ArrayList" %><%@ page import="java.util.List" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title><style>.row1 {background-color: red;}.row2 {background-color: yellow;}td {text-align: center;}</style></head><body style="font-size: 30px;"><%List<User> users = new ArrayList<>();User user1 = new User();user1.setName("zs");user1.setGendar("f");User user2 = new User();user2.setName("ww");user2.setGendar("m");users.add(user1);users.add(user2);request.setAttribute("users", users);%><table border="1" width="60%" cellpadding="0" cellspacing="0"><tr><td>name</td><td>gendar</td><td>count</td><td>index</td></tr><c:forEach var="user" items="${users}" varStatus="status"><tr class="row${status.index%2+1}"><td>${user.name}</td><td>${user.gendar}</td><%--遍历次数--%><td>${status.count}</td><%--遍历元素的下标--%><td>${status.index}</td></tr></c:forEach></table></body></html>

URL重写

<c:url>

当用户禁止 cookie 以后,会自动在地址后面添加sessionId。

当使用绝对路径时,会自动在地址前添加应用名。

value 属性:指定地址。在表单提交、链接当中,可以使用该标签。

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="/jsp/jstl/core" %><html><head><title>Title</title></head><body style="font-size: 30px;"><%session.setAttribute("username", "liaowenxiong");%><a href="<c:url value='/jstl07.jsp'/>">访问jstl07</a></body></html>

设置属性值

<c:set var="" scope="" value="">

绑定一个对象到指定的范围。

var 属性: 指定一个绑定名。

scope 属性:指定一个绑定范围。

value 属性: 绑定值。

示例代码:

<%--Created by IntelliJ IDEA.User: liaowenxiongDate: /2/5Time: 10:47To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="/jsp/jstl/core" %><html><head><title>Title</title></head><body style="font-size: 30px;"><c:set var="rs" scope="session" value="${1+1}"/>之前 rs=${rs}<br><c:remove var="rs" scope="session"/>之后 rs=${rs}</body></html>

删除属性值

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

解除绑定

异常捕获

<c:catch var="">

处理异常,会将异常信息封装成一个对象,绑定到 pageContext 对象上。属性 var 就是用来指定绑定名的。

<%@ taglib prefix="c" uri="/jsp/jstl/core" %><%--Created by IntelliJ IDEA.User: liaowenxiongDate: /2/5Time: 11:00To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>捕获异常</title></head><body style="font-size: 30px;"><c:catch var="msg"><%Integer.parseInt("123a");%></c:catch>${msg}</body></html>

导入其它 JSP 页面

<c:import url="">

url 指定一个 jsp 文件的地址,jsp 会在运行时调用这个 jsp。

<%@ taglib prefix="c" uri="/jsp/jstl/core" %><%--Created by IntelliJ IDEA.User: liaowenxiongDate: /2/5Time: 11:15To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body style="font-size: 30px;">jstl10...<br><c:import url="jstl06.jsp"/><br></body></html>

重定向

<c:redirect url="">

重定向到另外一个地址。url 属性指定重定向的地址。

当禁止 Cookie 后,会自动在地址后加上 SessionId。

示例代码:

<%@ taglib prefix="c" uri="/jsp/jstl/core" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body style="font-size: 30px;"><c:set var="rs" scope="session" value="${1+1}"/><c:redirect url="jstl12.jsp"/></body></html>

输出指定的值

<c:out value="" default="" escapeXml="">

用于输出 el 表达式的值。

value 属性: 指定输出的值。

default 属性: 指定缺省值。

escapeXml 属性: 设置成 true,会将 value 中的特殊字符替换成相应的实体。缺省值就是 true。

示例代码:

<%@ taglib prefix="c" uri="/jsp/jstl/core" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>输出指定的值</title></head><body style="font-size: 30px;"><%--写法1--%><c:out value="${1+1}"/><br>等价于<%--写法2--%>${1+1}<br><%--输出变量的值--%>str:<c:out value="${str}" default="hello"/><br><%--转义字符--%>&lt;table&gt;<br><c:out value="<table>" escapeXml="true"/></body></html>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。