jsp中jstl的基本使用

1.首先让我们来了解一下什么是jstl?
JSTL(JavaServer Pages Standard Tag Library),是jsp(java server pages)的标准标签库,由一系列标签构成的用于便捷操作服务端数据的标签的写法,语法类似于html,使用标签库可以彻底抛弃传统jsp中插入java代码的标签(<%%>和<%=%>).
jstl由以下标签构成:
c标签,
fmt标签,
sql标签,
xml标签,
fn标签,
其中属c标签和fmt标签最为常用.
jstl的使用方式:
1.使用jstl必须先引进两个核心的标签库文件:
standard.jar,jstl.jar(文末附下载资源).
2.将已经创建好的jsp文件中声明需要使用的标签库:

<!--引入标签库-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

c标签(核心标签)主要包含以下几种:
<c:out>
<c:set>
<c:forEach>
<c:if>
<c:choose>

jstl的使用案例:
1.首先创建一个学生实体类:

package com.softeem.entity;

import java.util.Date;

/**
 * @author PaxtonWu 2020/8/25 19:19
 */
public class Student {

    private int sno;
    private String sname;
    private String sex;
    private Date birth;
    private String school;
    private boolean married;

    public Student() {

    }

    public Student(int sno, String sname, String sex, Date birth, String school,boolean married) {
        this.sno = sno;
        this.sname = sname;
        this.sex = sex;
        this.birth = birth;
        this.school = school;
        this.married=married;
    }

    public int getSno() {
        return sno;
    }

    public void setSno(int sno) {
        this.sno = sno;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public boolean isMarried() {
        return married;
    }

    public void setMarried(boolean married) {
        this.married = married;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sno=" + sno +
                ", sname='" + sname + '\'' +
                ", sex='" + sex + '\'' +
                ", birth=" + birth +
                ", school='" + school + '\'' +
                ", married=" + married +
                '}';
    }
}

2.然后在servlet中重写service方法,向集合中添加元素模拟数据库:

package com.softeem.servlet;

import com.softeem.entity.Student;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author PaxtonWu 2020/8/25 20:22
 */
@WebServlet("/stu")
public class StudentServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Student s1=new Student(10,"carlo","女",new Date(),"softeem",false);
        Student s2=new Student(11,"judies","女",new Date(),"softeem",true);
        Student s3=new Student(12,"rick","男",new Date(),"softeem",false);
        Student s4=new Student(13,"carl","男",new Date(),"softeem",true);
        Student s5=new Student(14,"negan","男",new Date(),"softeem",false);

        List<Student> list=new ArrayList<>();
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);

        req.setAttribute("stus",list);
        req.getRequestDispatcher("jstl.jsp").forward(req,resp);
    }
}

通过req.setAttribute()方法保存数据,并将数据以请求转发的形式传递给jstl.jsp.

3.创建jstl.jsp文件将数据渲染到网页上:

<%--
  Created by IntelliJ IDEA.
  User: PaxtonWu
  Date: 2020/8/25
  Time: 20:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>jstl</title>
    <style>
        table{
            margin: 0 auto;
            width: 1200px;
            border: 1px solid gray;
            border-collapse: collapse;
        }
        td,th{
            padding: 5px 10px;
            border: 1px solid #b9b9b9;
        }
        tr{
            transition: all .5s;
        }
        tr:hover{
            background: lightgray;
        }
    </style>
</head>
<body>
    <table>
        <tr>
            <%--<th><input type="checkbox"></th>--%>
            <th></th>
            <th>序号</th>
            <th>学号</th>
            <th>姓名</th>
            <th>性别</th>
            <th>生日</th>
            <th>学校</th>
            <th>婚否</th>
            <th>操作</th>
        </tr>
        <c:forEach items="${stus}" var="s" varStatus="stat">
            <tr style="background:${(stat.count mod 2 eq 0) ? '#eee':''}">
                <td><input type="checkbox"></td>
                <td>${stat.count}</td>
                <td>${s.sno}</td>
                <td>${s.sname}</td>
                <td>${s.sex}</td>
                <td>
                    <fmt:formatDate value="${s.birth}" pattern="yyyy年MM月dd日"></fmt:formatDate>
                </td>
                <td>${s.school}</td>
                <td>${s.married ? "已婚" : "未婚"}</td>
                <td>
                    <a href="">详情</a>
                    <a href="">删除</a>
                </td>
            </tr>
        </c:forEach>
    </table>
    <br>
    <select name="" id="">
        <c:forEach begin="1900" end="2020" var="year">
            <option value="${year}">${year}</option>
        </c:forEach>
    </select><select name="" id="">
        <c:forEach begin="1" end="12" var="month">
            <option value="${month}">${month}</option>
        </c:forEach>
    </select></body>
</html>

该代码使用table标签呈现表格数据,使用<c:forEach>标签循环遍历,使用fmt:formatDate实现日期格式化.
经过以上jsp渲染后的网页如下:
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值