jstl标签库
作者:互联网
简介:
apache的东西,依赖EL 使用jstl需要导入jstl1.2.jar四大库: > core:核心库,重点 > fme:格式化:目期、数字
> sql:过时 > xml:过时
core库:
core -->c标签!
1. out和set * <c:out>:输出 > value:可以是字符串常量,也可以是EL表达式 > default:当要输出的内容为null时,会输出default指定的值
> escapeXml:默认值为true,表示转义!
<c:out>:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>title</title> </head> <body> <% request.setAttribute("code", "<script>alert('hello')</script>"); %> ${code } <c:out value="${code }" escapeXml="true"/> </body> </html>
发现首先输出是一个弹窗,此时并没有使用到<c:out>标签;
使用<c:out>标签后输出的是一个字符串,这里是因为在<c:out>标签里面有一个参数为escapeXml="true",会将字符串中的符号自动进行转义,如果改为escapeXml="false"那么就不会自动转义。
<c:set>标签:
<c:set var="" value="" scope="">
var:指定变量名称
value:指定变量值
scope:指定设置的域范围,没有则设置pageContext域
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>title</title> </head> <body> <c:set var="code" value="hello" scope="session"/> <c:out value="${code }" escapeXml="true"/> <% String str = (String)session.getAttribute("code"); out.print(str); %> </body> </html>
在session域中设置名为code,值为hello的信息。
结果显示输出正常,那么可以验证属性设置成功了;
<c:remove>标签
<c:remove var="" scope=""/> var:要删除的变量 scope:删除指定域范围的变量,没有指定则删除所有域
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>title</title> </head> <body> <c:set var="code" value="hello" scope="session"/> <c:remove var="code" scope="request"/> <c:out value="${code }" default="No code"/> </body> </html>
将删除范围先指定为request,查看输出信息:
发现设置在session中的变量没有被删除,那么将<c:remove>中的scope参数指定为session再查看输出:
发现输出的是默认设置信息,说明code变量已经被删除;
如果取消scope参数查看输出:
同样输出的是默认设置信息,说明code变量已经被删除。
<c:url>标签;
<c:url value="" context="" scope="" var="">
把本该输出的value赋值给scope范围内的var(输出的内容会自动在value的值前面加上项目名) <c:param name="" value=""/>
给url设置为名name,值为value的参数(如果参数中有中文,会自动进行url编码) </c:url>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>title</title> </head> <body> <c:url value="/cout.jsp" scope="request" var="curl"> <c:param name="username" value="zs"/> <c:param name="password" value="123"/> </c:url> <c:out value="${requestScope }" default="No happy"></c:out> </body> </html>
输出结果:(加上var后将不会输出设置的value内容,而是保存到指定变量var中)
输出的信息有:指定变量curl,值/day0427/cout.jsp,指定参数username=zs、password=123
加上指定的域范围为request,获取的域范围为requestScope,得以验证。
<c:if>标签:
<c:if test="${not empty one }">
test:boolean类型,true或false,为true则继续执行,false则结束 </c:if>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>title</title> </head> <body> <c:set var="one" value="one属性" scope="request"/> <c:if test="${not empty one }"> <c:out value="${one }"/> </c:if> </body> </html>
查看输出:
在 reques t域中设置了一个名为 one,值为 one属性 的变量;
使用<c:if>标签判断 one 是否为空,如果不为空则输出 one 变量的值;
成功输出。
需要注意的一点就是,上面的 test 属性中设置的 one 是以全域查找的方式,如果设置为 pageScope.one 获取其它的域那么表达式就为false了。
<c:choose>标签:
<c:choose> <c:when test="">
xxx
</c:when> <c:when test="">
xxx
</c:when> 。。。。 <c:otherwise>
xxx
</c:otherwise> </c:choose>
test是boolean类型,为真则执行其中的语句:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>title</title> </head> <body> <c:choose> <c:when test=""></c:when> <c:when test="${empty param.name }"> 参数name为空! </c:when> <c:otherwise> 参数name不为空!name=${param.name } </c:otherwise> </c:choose> </body> </html>
首先以空参的方式访问:
然后在访问地址上添加参数:
结果:
<c:choose>标签就相当于java语句中的if...else if...else...
标签:输出,变量,title,标签,指定,value,jstl 来源: https://www.cnblogs.com/0099-ymsml/p/16198358.html