JSTL标签详解

本文详细介绍了JSTL标签库中的C标签、格式化FMT标签和FN标签的使用方法,包括页面布局、数据展示、日期和数字格式化以及字符串处理等功能,并展示了如何通过JSTL实现国际化。

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

1、核心标签: C

<c:set var="name" value="zhangsan" scope="page"></c:set><br>
${name }

<c:redirect url="LoginServlet">
    <c:param name="id" value="1"></c:param>
</c:redirect>

C标签比较核心的是forEach和if标签

格式化FMT标签:
日期格式化:

<fmt:formatDate value="<%=new Date() %>" pattern="yyyy-MM-dd"/>

<p>日期格式化 (1): <fmt:formatDate type="time" 
            value="${now}" /></p>
<p>日期格式化 (2): <fmt:formatDate type="date" 
            value="${now}" /></p>
<p>日期格式化 (3): <fmt:formatDate type="both" 
            value="${now}" /></p>
<p>日期格式化 (4): <fmt:formatDate type="both" 
            dateStyle="short" timeStyle="short" 
            value="${now}" /></p>
<p>日期格式化 (5): <fmt:formatDate type="both" 
            dateStyle="medium" timeStyle="medium" 
            value="${now}" /></p>
<p>日期格式化 (6): <fmt:formatDate type="both" 
            dateStyle="long" timeStyle="long" 
            value="${now}" /></p>
<p>日期格式化 (7): <fmt:formatDate pattern="yyyy-MM-dd" 
            value="${now}" /></p>
<p>格式化数字 (1): <fmt:formatNumber value="${balance}" 
            type="currency"/></p>
<p>格式化数字 (2): <fmt:formatNumber type="number" 
            maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (3): <fmt:formatNumber type="number" 
            maxFractionDigits="3" value="${balance}" /></p>
<p>格式化数字 (4): <fmt:formatNumber type="number" 
            groupingUsed="false" value="${balance}" /></p>
<p>格式化数字 (5): <fmt:formatNumber type="percent" 
            maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (6): <fmt:formatNumber type="percent" 
            minFractionDigits="10" value="${balance}" /></p>
<p>格式化数字 (7): <fmt:formatNumber type="percent" 
            maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (8): <fmt:formatNumber type="number" 
            pattern="###.###E0" value="${balance}" /></p>

jstl实现国际化:

<fmt:setLocale value="${param.word }"/>
    <fmt:bundle basename="Message">

    <a href="<%=path%>jsp/jst3.jsp?word=zh_CN">中文版</a>
    <a href="<%=path%>jsp/jst3.jsp?word=en_US">English</a>

    <br><br>
    <form action="?" method="post">
        <fmt:message key="login"/><input type="text"> <br> 
        <fmt:message key="pwd"/><input type="password"> <br> 
        <input type="submit" value="<fmt:message key="btn"/>"> <br> 
    </form>
    </fmt:bundle>

c标签主要是用于页面布局及展示数据使用
fmt标签主要是用于格式化一些数据使用
fn标签主要是用于进行我们的字符串处理使用

fn主要是就是一些针对字符串操作的函数,我们js、java都已经大量使用过了,所以很简单,只是使用的方式需要注意一下

OK

${fn:substring(data,0,3) }

剩下的sql标签和xml标签,已经基本不使用了,因为有更好的框架来替代他们,
我们只需要了解

sql标签:一组可以操作数据库数据的标签
xml标签:一组可以对xml进行生成、解析的标签

什么是xml:xml是一种标准的数据格式:用于网络之间传输数据使用

<duogediannao>
    <diannao>
        <x>ThinkpadT400<x>
        <yanse>黑色</yanse>
        <zhongliang>120</zhongliang>
    </dinnao>
    <diannao>
        <xinghao>123<xinghao>
        <yanse>黑色</yanse>
        <zhongliang>120</zhongliang>
    </dinnao>
<duogediannao>


jsp实现页面分页
页面<!-- 一页只显示3条 -->
<a href="<%=path%>servlet/StoreListServlet?page=${page-1}">上一页</a>
<a>${page }</a>
<a href="<%=path%>servlet/StoreListServlet?page=${page+1}">下一页</a>``


servlet代码:

//获取参数
String page = request.getParameter(“page”);

    //调用dao完成功能
    StoreDao dao = new StoreDao();
    ArrayList<Store> list = dao.storeList(page);

    //跳转页面
    request.setAttribute("list", list);
    request.setAttribute("page", page);
    request.getRequestDispatcher("../jsp/storeList.jsp").forward(request, response);

dao代码:

public ArrayList storeList(String page) {
ArrayList list = new ArrayList();
Connection conn = null;
PreparedStatement pre = null;
ResultSet rs = null;
String sql = “select * from store limit ?, 3”;

    int num = Integer.parseInt(page);
    int start = (num-1) * 3;

    /**
     * select * from store limit 3,3
     * 第一页   0 - 3
     * 第二页  3 - 3
     * 第三页  6
     * 第四页  9
     * 第五页  12
     * 
     * (页数-1) * 3
     * 
     */

    try {
        conn = DBUtils.getConn();
        pre = conn.prepareStatement(sql);
        pre.setInt(1, start);

        rs = pre.executeQuery();
        Store g = null;

        while(rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            String statu = rs.getString("statu");
            Date createDate  =rs.getDate("createDate");
            int leval = rs.getInt("leval");
            String userName = rs.getString("userName");
            String address = rs.getString("address");
            String phone = rs.getString("phone");

            g = new Store(id, name, userName, leval, address, phone, statu, createDate);

            list.add(g);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        DBUtils.closeDB(conn, pre, rs);
    }
    return list;
}

“`

解决上一页和下一页可以错误点击的BUG:
上一页是0还是可以点击,下一页已经没有数据了。但还是可以点击

我们编码的原则是能在客户端拦截就在客户端拦截,不要访问服务器,增加服务器压力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值