继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JSTL JSP各种标签的用法!

Lastlove
关注TA
已关注
手记 1
粉丝 5
获赞 44

常用核心标签介绍
JSTL的核心标签库标签共13个,从功能上可以分为4类:
表达式控制标签:out set remove catch
流程控制标签:if choose when otherwise
循环标签:forEach forTokens
URL操作标签: import url redirect

导入一下包
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>

out标签:
输出常量
可在value属性中直接赋值:<c:out value="${name}"></c:out>
输出变量
<c:out value="${name}" default="error"></c:out>
变量不存在时可以配合default属性输出默认值,还可以通过escapeXml控制转义字符的输出方式:<c:out value="&ltout标签>" escapXml="false"></c:out>设置输出转义后的字符需要escapeXml属性设置为false

set标签:
存值到Scope中
可将值已变量形式存放在指定的范围中(2种方式):
<c:set value="today" var="day" scope="session"></c:set>
<c:out value="${day}"></c:out>

<c:set var="age" scope="application">eleven</c:set>
<c:out value="${age}"></c:out>

存值到JavaBean中
先创建个Java类,然后在jsp页面插入:
<jsp:useBean id="java类的名字" calss="com.imooc.text.person"></jsp:useBean>
需要配合target属性指定对象并且通过property属性指定要赋值给对象中的哪个属性
<c:set target="${person}" property="name" value="zhangsan"></c:set>
<c:out value="${person.name}"></c:out>
<c:set target="${person}" property="age" value="26"></c:set>
<c:out value="${person.age}"></c:out>
<c:set target="${person}" property="address" value="福州市 晋安区"></c:set>
<c:out value="${person.address}"></c:out>

<c:set target="${person}" property="name">zhangsan</c:set>
<c:out value="${person.name}"></c:out>  
<c:set target="${person}" property="age" >26</c:set>
<c:out value="${person.age}"></c:out>  
<c:set target="${person}" property="address" >福州市 晋安区</c:set>
<c:out value="${person.address}"></c:out>  

remove标签的用法
remove掉某个变量
var属性是必选
scope属性是可选
<c:set var="lastName" value="Lily"></c:set>
<c:out value="${lastName}"></c:out>
<c:set var="firstName" value="Wang"></c:set>
<c:remove var="firstName"/>
<c:out value="${firstName}"></c:out>
只能remove变量,不能把属性remove掉

catch标签的用法
catch标签中可以包含那些容易出错的JSTL标签(逻辑)
<c:catch var="error'>
    <c:set target="aa' property="bb"> </c:set>
</c:catch>
<c:out value="${error}"></c:out>

if标签
同程序中的if作用相同,用来实现分之条件控制
<c:if test="" var="" scope=""></c:if>
    test属性用于存放判断的条件,一般使用EL表达式来编写
    var指定名称用来存放判断的结果类型为true或false
    scope用来存放var属性的存放的范围
    <form action="当前的页面"method="post">
        <input type="text" name="score" value="${param.score}"/>
        <input type="submit"/>
    </form>
    <c:if text="${param.score>=90&&param.score<=100}"
     var="result" scpoe="application">
    <c:out value="恭喜,您的成绩是优秀'></c:out>
    </c:if>
    //<c:out value="${applicationScope.result}'></c:out>
    <c:if text="${param.score>=80&&param.score<=89}"
     var="result" scpoe="application">
    <c:out value="恭喜,您的成绩是良好'></c:out>
    </c:if>
    <c:if text="${param.score>=70&&param.score<=79}"
     var="result" scpoe="application">
    <c:out value="恭喜,您的成绩是中等'></c:out>
    </c:if>
    <c:if text="${param.score>=60&&param.score<=69}"
     var="result" scpoe="application">
    <c:out value="恭喜,您的成绩是及格'></c:out>
    </c:if>
    <c:if text="${param.score<60}" var="result" scpoe="application">
    <c:out value="对不起,您的成绩是不及格"></c:out>
    </c:if>

    choose、when、otherwise标签的用法
    通常这三个标签被放在一起配合使用
    一、<c:choose>标签嵌套在<c:when>和<c:otherwise>标签的外面作为他们的父标签来使用,  格式:
    <c:choose>
    <c:when text="判断条件">
    。。。。。逻辑
    <c:when>
    。。。。。逻辑
    <c:otherwise>
    。。。。。逻辑
    </c:choose>

    实例:
    <form action="当前的页面"method="post">
        <input type="text" name="score" value="${param.score}"/>
        <input type="submit"/>
    </form>
    <c:choose>
    <c:when test="${param.score>=90&&param.score<=100">
    <c:out value="优秀"></c:out>
    </c:when>
    <c:when test="${param.score>=80&&param.score<90">
    <c:out value="良好"></c:out>
    </c:when>
    <c:when test="${param.score>=70&&param.score<80">
    <c:out value="中等"></c:out>
    </c:when>
    <c:when test="${param.score>=60&&param.score<70">
    <c:out value="及格"></c:out>
    </c:when>
    <c:when test="${param.score>=0&&param.score<=60">
    <c:out value="不及格"></c:out>
    </c:when>
    <c:otherwise>
        <c:out value="您的输入有问题">
    </c:otherwise>
    </c:choose>
    二、其中choose和when标签也可以一起组合使用
    <c:choose>
    <c:when test="条件">
        表达式
    </c:when>
    </c:choose>

    实例:
    <c:choose>
        <c:when test="${param.score==100}">
        <c:out value="太棒了,你是第一名"></c:out>
    </c:choose>

    forEach标签的用法
    根据循环条件遍历集合(collection)中的元素
        var设置变量名用于存储从集合中取出元素(必须无默认值)
        items指定要遍历的集合(必须无默认值)
        begin、end用于指定遍历的起始位置和终止位置(有默认)
        step指定循环的步长(有默认)
        varStatus通过index、count、first、last几个状态值,描述begin和end子集中的元素状态
        用法1:全部遍历
        <c:forEach var="储存当前遍历元素的变量" items="待遍历集合">
            操作var变量表示的元素<br>
        </c:forEach>
        实例:
        <%@page import="java.util.ArrayList"%>
        <%@page import="java.util.List"%>
        <%
        List<String>fruits=new ArrayList<String>();
        fruits.add("apple");
        fruits.add("orange");
        fruits.add("pear");
        fruits.add("watermelon");
        fruits.add("banana");
        fruits.add("grape");
        request.setAttribute("fruits",fruits);
        %>
        <c:forEach var="fruit" items="${fruits}">
        <c:out value="${fruit}"></c:out>
        </c:forEach>
        <c:out value="============="></c:out>

        用法2:部分遍历
        <c:forEach var="储存当前遍历元素的变量" 
                    items="待遍历集合"
                    begin="开始遍历元素的index值"
                    end="结束遍历的元素的index值">
            操作var变量表示的元素<br>
        </c:forEach>
        实例:
        用上面用法1的例子
        <c:forEach var="fruit" items="${fruits}"begin="1" end="4">
        <c:out value="${fruit}"></c:out>
        </c:forEach>
        <c:out value="=============></c:out>
        用法3:部分遍历指定步长
        <c:forEach var="储存当前遍历元素的变量" 
                    items="待遍历集合"
                    begin="开始遍历元素的index值"
                    end="结束遍历的元素的index值"
                    step="部分遍历中每次遍历的间隔元素个数">
            操作var变量表示的元素<br>
        </c:forEach>
        实例:
        用上面用法1的例子
        <c:forEach var="fruit" items="${fruits}"begin="1" end="4" step="2">
        <c:out value="${fruit}"></c:out>
        </c:forEach>
        <c:out value="=============></c:out>
        用法4:部分遍历时输出元素的状态
        <c:forEach var="储存当前遍历元素的变量" 
                    items="待遍历集合"
                    begin="开始遍历元素的index值"
                    end="结束遍历的元素的index值"
                    step="部分遍历中每次遍历的间隔元素个数"
                    varStatus="指定一个变量用来储存当前元素的状态值">
            操作var变量表示的元素<br>
        </c:forEach>
        实例:
        用上面用法1的例子
        <c:forEach var="fruit" items="${fruits}"begin="1" end="4" varStatus="fru">
        <c:out value="${fruit}的四个属性值"></c:out>
        <c:out value="index属性:${fru.index}"></c:out>
        <c:out value="count属性:${fru.count}"></c:out>
        <c:out value="first属性:${fru.first}"></c:out>
        <c:out value="last属性:${fru.last}"></c:out>
        <c:out value="----------------------"></c:out>
        </c:forEach>
        <c:out value="============="></c:out>
    forTokens标签的用法
    用于浏览字符串,并根据指定的字符将字符串截取
        items指定被迭代的字符串
        delims指定使用的分隔符
        var指定用来存放遍历到的成员
        forTokens还有几个属性可以指定循环范围和参数状态
        begin指定遍历的开始位置(int型从取值0开始)
        end指定遍历结束的位置(int型,默认集合中最后一个元素)
        step遍历的步长(大于0的整型)
        varStatus通过index、count、first、last几个状态值,描述begin和end子集中的元素的状态
    实例:
    <c:forTokens items="010-88096789-123 "delims="-" var="num">
    <c:out value="${num}"></c:out><br>
    </c:forTokens>

import标签的用法
    可以把其他静态或动态文件包含到本jsp页面
    同<jsp:include>的区别为:只能包含一个web应用中的文件而<c:inport>可以包含其他web应用中的文件,甚至是网络上的资源。
    属性:
    <c:import url="" context="" var="" scope="" charEncoding="" varReader="">
    </c:import>
    url被导入资源的路径
    context相同服务器下其他的web工程,必须以"/"开头
    var以String类型存入被包含文件的内容
    Scope var变量的jsp范围
    charEncoding被导入文件的编码格式
    varReader以Reader类型存储被包含文件内容
    实例:
    用法1:导入网络上的绝对路径
    <c:catch var="error09">
    <c:import url="http://www.imooc.com"></c:import>
    </c:catch>
    <c:out value="${error09}"></c:out>

    用法2:导入相对路径
    在桌面创建一个tt.txt文件里面写上你想要写的内容,并且把他复制到WebContent目录下
    <c:catch var="error08">
    <c:import url="tt.txt" charEncoding="gbk"></c:import>
    </c:catch>
    <c:out value="${error08}"></c:out><br>
    用法3:var及scope属性的用法
    <c:catch var="error07">
    <c:import url="tt.txt"var="tt"  scope="session" charEncoding="gbk"></c:import>
    </c:catch>
    <c:out value="${error07}"></c:out><br>
    <c:out value="import标签存储的tt字符串变量值为:${sessionScope.tt}"></c:out>
    用法4:context用法
    在eclipse里新建一个Dynamic Web Project取名为:AnotherWebProject并在WebContent创建一个jsp文件取名为:importFile.jsp,把语言替换为中文形式:UTF-8在body标签中输入:Another Web Project!回到原来的jsp页面
    <c:catch var="error06">
    <c:import url="/importFile.jsp" context="/AnotherWebProject"></c:import>
    </c:catch>
    <c:out value="${error06}"></c:out><br>
    context引入的内容是webapps下的其他WebProject
        1.修改tomcat的发布路径
        2.修改%TOMCAT_HOME%/conf/context.xml的Context标签中的属性
            crossContext="true"
redirect标签的用法
该标签用来实现请求的重定向,同时可以在url中加入指定的参数
url指定重定向页面的地址,可以是一个string类型的绝对地址或相对地址
context用于导入其他web应用中的页面
实例:
创建一个jsp文件取名为:secondDemo.jsp
<c:redirect url="firstDemo.jsp">
<c:param name="username">Lily</c:param>
<c:param name="password">aaaaaa</c:param>
</c:reditect>
如想要确认是否输入成功可以在firstDemo.jsp中输出验证一下
<c:out value="username是${param.username}"></c:out>
<c:out value="password是${param.password}"></c:out>

url标签
该标签用于动态生成一个String类型的URL,可以同<c:param>标签共同使用,也可以使用html的<a>标签实现超链接
    value表示url路径
    var  将url路径存储在的变量中
    scope var变量的范围
    实例:
    <c:if test="${1<3}">
        <c:set var="partUrl">aa</c:set>
    </c:if>
    <c:url value="http://localhost:8080/${partUrl}" var="newUrl" scope="session"></c:url>
    <a href="${newUrl}">新的URL</a> 

更多请查看:http://note.youdao.com/share/?id=a2bdb6290133e1091e109921c4a0003a&type=notebook#/A0479BB230224810BA3F029179D90D54

打开App,阅读手记
5人推荐
发表评论
随时随地看视频慕课网APP

热门评论

foreach中 items和var不能颠倒,不然存对象的时候出不来对象的属性值

查看全部评论