javaweb-21:JSP、JSTL标签

8.6、JSP标签、JSTL标签、EL表达式

依赖:

 <!-- jstl表达式的依赖 -->
<dependency>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>1.2</version>
</dependency>
<!-- standard标签库 -->
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

EL表达式:${}

  • 获取数据
  • 执行运算
  • 获取web开发的常用对象
  • 调用java方法(基本废弃了)

JSP标签

<%--jsp:include--%>
<%--http://localhost:8080/jsptag.jsp?name=gongyi&age=22--%>
<jsp:forward page="/jsptag2.jsp">
    <jsp:param name="name" value="gognyi"/>
    <jsp:param name="age" value="22"/>
</jsp:forward>

JSTL表达式(参考教程)

JSTL标签库的使用就是为了弥补HTML标签的不足;它自定义许多标签,可以供我们使用,标签的功能和Java代码一样

  • 格式化标签

  • SQL标签

  • XML标签

  • 核心标签(掌握部分)

    javaweb-21:JSP、JSTL标签

JSTL标签库使用步骤:

  • 引入对应的taglib
  • 使用其中的方法

代码show

jsptag.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h1>1</h1>
        <%--jsp:include--%>
        <%--http://localhost:8080/jsptag.jsp?name=gongyi&age=22--%>
        <jsp:forward page="/jsptag2.jsp">
            <jsp:param name="name" value="gognyi"/>
            <jsp:param name="age" value="22"/>
        </jsp:forward>

    </body>
</html>

jsptag2.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h1>2</h1>
        <%--取出参数--%>
        名字:<%=request.getParameter("name")%>
        年龄:<%=request.getParameter("age")%>
    </body>
</html>

coreif.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入JSTL核心标签库,我们才能使用JSTL标签,core--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h4>测试</h4>
        <hr>
        <form action="coreif.jsp" method="get">
            <%--
            EL表达式获取表单中的数据
            ${param.参数名}
            --%>
            <input type="text" name="username" value="${param.username}">
            <input type="submit" value="登录">
        </form>
        <%--判断如果提交的用户名是管理员,则登录成功--%>
        <c:if test="${param.username=='admin'}" var="isAdmin">
            <c:out value="管理员欢迎您!" />
        </c:if>
        <%--自闭合标签--%>
        <c:out value="${isAdmin}"/>
    </body>
</html>

corewhen.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <%--定义一个变量score,值为66--%>
        <c:set var="score" value="66" />
        <c:choose>
            <c:when test="${score >= 90}">
                你的成绩为优秀
            </c:when>
        </c:choose>
        <c:choose>
            <c:when test="${score >= 80}">
                你的成绩为一般
            </c:when>
        </c:choose>
        <c:choose>
            <c:when test="${score >= 70}">
                你的成绩为良好
            </c:when>
        </c:choose>
        <c:choose>
            <c:when test="${score <= 60}">
                你的成绩为不及格
            </c:when>
        </c:choose>
    </body>
</html>

coreforeach.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <%
            ArrayList<String> people = new ArrayList<String>();
            people.add(0, "张三");
            people.add(1, "李四");
            people.add(2, "王五");
            people.add(3, "赵六");
            people.add(4, "田七");
            request.setAttribute("list", people);
        %>
        <%--
        var,每一次遍历出来的变量
        items,要遍历的对象
        begin,哪里开始
        end,到哪里
        step,步长
        --%>
        <c:forEach var="people" items="${list}">
            <c:out value="${people}"/><br>
        </c:forEach>
        <hr>
        <c:forEach var="people" items="${list}" begin="1" end="3" step="1">
            <c:out value="${people}"/><br>
        </c:forEach>
    </body>
</html>

彩蛋

1.访问:http://localhost:8080/javaweb_jsp_war_exploded/coreif.jsp 报错【核心原因:jstl1.2与别的版本不同】

javaweb-21:JSP、JSTL标签

解决:

将项目中的jstl和taglib jar包拷贝到tomcat的lib目录下,重新部署即可

javaweb-21:JSP、JSTL标签

javaweb-21:JSP、JSTL标签

2.jstl头文件不用手工写,在idea如果要用c:out,回车就会自动导入相应的头文件

javaweb-21:JSP、JSTL标签

上一篇:php中reset函数的作用,reset函数怎么用


下一篇:YACS2021年4月月赛第五题—考试排名(错误)