java--JSTL(2)

本文详细介绍了JSP标准标签库(JSTL)中的核心标签,包括迭代标签<c:forEach>、条件判断标签<c:choose>/<c:when>/<c:otherwise>以及字符串分割标签<c:forTokens>。此外,还介绍了URL相关标签如<c:url>、<c:import>和<c:redirect>的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

迭代标签(重要内容)
< c:forEach/>用于遍历集合中的对像。
< c:forTokens/>用于遍历字符串中用特定分隔符分隔的字符串。–String.split(“#”);
这里写图片描述
forEach用于遍历集合中的对像。
基本语法:
1.< c:forEach var=“迭代变量” item=“${集合名称}” varStatus=“迭代下标变量”>
        迭代部分
< /c:forEach>
2.forEach的begin(开始索引)、end(结束索引)、step(步长)属性:
        < c:forEach begin=0 end=10 step=“2”>…将输出0,2,4,6,810
使用varStatus属性:
1.varStatus属性,用于设置一个javax.servlet.jsp.jstl.core.LoopTagStatus类型的命名变量:
2.它包含以下信息:
        count – 当前元素在集合中的序号,从1开始。
        index - 记录当前元素的下标,从0开始。
        first - 判断是否是第一个元素。
        Last - 判断是否是最后一个元素。
choose,when,otherwise标签:
这几个标签共同使用可以实现Java中的if…else语句的功能。
使用c:when必须遵循以下语法规则:
1.< c:when/>和< c:otherwise/>不能单独使用,它必须位于< c:choose>内。
2.< c:otherwise/>必须位于c:when之后。
用forTokens遍历一个字符串:
< c:forTokens var=”v” items=”a,b,c,d,e,f” delims=”,”>
        < c:out value=”${v}”>< /c:out>
< /c:forTokens>
按,(逗号)对字符串”a,b,c,d,e,f”进行分隔。
URL相关的标签:
1.< c:import/>包含其他web资源,功能类似与(动态包含)。
        < c:import url=“web资源”/>
2.< c:url/>按特定的方式重写URL。
        < c:url value=“/aaa.jsp”/>总是以/开头,如果只使用value属性为直接使用或输出。
        < c:url value=“/…” var=“someVar” scope=“…”/>也可以通过这样的方式将重写的url放到某个范围中,然后再取出来使用。
3.< c:redirect/>负责重定向。
        < c:redirect url=“重定向到的资源”/>
        在使用< c:redirect时可以带更多的参数:
        < c:redirect url=“/…”>
                < c:param name=“someName” value=“someValue”/>
        < /c:redirect>
< c:url>
这里写图片描述

<%@ page language="java" import="java.util.*,cn.hncu.domain.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- prefix前缀,相当于xml的命名空间 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>JSTL用法演示2</title>
  </head>

  <body>

    <font color='red' size='6'>c:forEach标签--for循环</font><br/>
    <font style="font-weight: bold;">普通for循环:</font><br/>
    普通for循环:<c:forEach begin="0" end="10" var="i" step="2">
        ${i}&nbsp;
    </c:forEach>
    <br/>
    <font style="font-weight: bold;">增强for循环:</font><br/>

    <%
        String str[]={"qq","da","sds"};
        pageContext.setAttribute("str", str);
     %>
   1.遍历数组:<c:forEach items="${str}" var="s">
        ${s}&nbsp;&nbsp;&nbsp;&nbsp;
    </c:forEach><br/>
    <%
        List list=new ArrayList();
        list.add("aaa");
        list.add("bbb");
        list.add("fff");
        list.add("dddd");
        pageContext.setAttribute("list", list);
     %>
   2.遍历List:<c:forEach items="${list}" var="e">
        ${e}&nbsp;&nbsp;&nbsp;&nbsp;
    </c:forEach><br/>
    <%
        Map map=new HashMap();
        map.put("name", "lisi");
        map.put("age", "24");
        map.put("addr", "湖南");
        pageContext.setAttribute("map", map);
     %>
   3.遍历Map:<c:forEach items="${map}" var="m">
        ${m}:::${m.key},${m.value}<br/>
    </c:forEach><!-- m是一个entry -->


    <%
        List<User> list2=new ArrayList<User>();
        list.add(new User("ass",23));
        list.add(new User("ffrgr",56));
        list.add(new User("fefr",23));
        list.add(new User("regrgr",67));
        pageContext.setAttribute("list2", list2);
     %>
     <!-- index为下标(索引)的序号,count为计数-->
   4.遍历List2&lt;User&gt;(元素为值对象的集合):<c:forEach items="${list2}" var="u" varStatus="idx">
        ${idx.index},${idx.count}:&nbsp;
        <c:out value="${u.name}"></c:out>&nbsp;&nbsp;&nbsp;&nbsp;
        <c:out value="${u.age}"></c:out><br/>
    </c:forEach><br/>


    <font color='red' size='6'>c:choose,when,otherwise标签</font><br/>
    <c:set value="65" var="score" scope="session"></c:set>
    ${score}:<c:choose>
        <c:when test="${score>=90}">
            优秀<br/>
        </c:when>
        <c:when test="${score>=80}">
            良好<br/>
        </c:when>
        <c:when test="${score>=70}">
            中等<br/>
        </c:when>
        <c:otherwise>
            挂科<br/>
        </c:otherwise>
    </c:choose>

    <font color='red' size='6'>forTokens标签 </font><br/>
    <c:forTokens items="23,sfd,324,sgsdg,3,小明" delims="," var="x">
        ${x}&nbsp;&nbsp;&nbsp;&nbsp;
    </c:forTokens>
    <br/><br/>
    <font color='red' size='6'>url相关的标签: url,import,redirect </font><br/>
    <font style="font-weight: bold;">重写url技术,路径中的斜杠就是项目根目录:</font><br/>
    绝对地址:<c:url value="/show"/>&nbsp;&nbsp;&nbsp;&nbsp;
    <a href='<c:url value="/show"/>'>显示所有用户信息</a><br/>
    <font style="font-weight: bold;">动态包含:</font><c:import url="/jsps/foot.jsp"></c:import>
    <br/>
    <%--小心,页面中写了c:redirect,就会立即重定向到其它页面。不会再停留在当前页面
    <c:redirect url="/jsps/show.jsp"></c:redirect>
     response.sendRedirect("/jsps/show.jsp");
    --%>

    <font color='red' size='6'>c:remove标签:移除属性变量, 和set是相反 </font><br/>
    删除分数score:<c:remove var="score"/><br/>
    score:${score}

        <br/><br/><br/><br/><br/><br/>
  </body>
</html>

这里写图片描述

这里写图片描述

重写URL

package cn.hncu.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.hncu.domain.User;

public class ShowServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        List<User> users=new ArrayList<User>();
        for(int i=0;i<10;i++){
            User u=new User("jack"+i,20+i);
            users.add(u);
        }
        request.setAttribute("users", users);
        request.getRequestDispatcher("/jsps/show.jsp").forward(request, response);
    }

}
<%@ page language="java" import="java.util.*,cn.hncu.domain.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- prefix前缀,相当于xml的命名空间 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>显示用户信息</title>
    <style type="text/css">
        table {
            border: 1px solid green;
            border-collapse: collapse;
        }
        td{
            border: 1px solid green;
        }
        th{
            border: 1px solid green;
        }
        .a{
            background-color: gray;
        }
    </style>
  </head>

  <body>

    <font color='red' size='6'>url相关的标签: url---显示所有用户信息</font><br/>
    <!-- 重写url技术,路径中的斜杠就是项目根目录 -->
    <c:if test="${!empty users}">
        <table>
            <tr><th>姓名</th><th>年龄</th></tr>
            <c:forEach items="${users}" var="u" varStatus="idx">
                <c:if test="${idx.count%2==0}" var="boo">
                    <tr class="a">
                </c:if>
                <c:if test="${!boo}">
                    <tr>
                </c:if>
                <td>${u.name}</td><td>age=${u.age}</td></tr>
            </c:forEach>
            </table>
    </c:if>
  </body>
</html>

动态包含

<%@ page language="java" import="java.util.*,cn.hncu.domain.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- prefix前缀,相当于xml的命名空间 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>JSTL用法演示2</title>
  </head>

  <body>

    <font color='red'>被包含的jsp</font><br/>
    <c:url value="/imgs/1.jpg"></c:url><br/>
    <img src='<c:url value="/imgs/1.jpg"/>' height="200"/>
  </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值