JSP标签&JSTL标签&EL表达式

xml 复制代码
        <dependency>
            <!-- JSTL表达式的依赖 -->
            <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 复制代码
<input type="text" name="username" value="${param.username}">
java 复制代码
<form action="coreif.jsp" method="get">
    <%--
    EL表达式获取表单中的数据
    ${param.参数名}
    --%>
    <input type="text" name="username" value="${param.username}">
    <input type="submit" value="登录">
</form>

JSP标签

转发

java 复制代码
<jsp:forward page="jsptag2.jsp"></jsp:forward>

携带参数

可以配合转发或者文件包含使用

  • 转发的时候默认携带参数进行请求
java 复制代码
<%--
http://localhost:8081/jsptag.jsp?name=root&passwd=root
--%>

<jsp:forward page="jsptag2.jsp">
    <jsp:param name="name" value="root"/>
    <jsp:param name="passwd" value="root"/>
</jsp:forward>
java 复制代码
<jsp:include page="jsptag2.jsp">
    <jsp:param name="name" value="root"/>
    <jsp:param name="passwd" value="root"/>
</jsp:include>

取出参数

jsptag2.jsp

java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<h1>这是jsptag2的页面</h1>

<%--取出参数--%>
用户名:<%=request.getParameter("username")%>
密码:<%=request.getParameter("password")%>


</body>
</html>

jsptag.jsp

java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>


<%--
http://localhost:8081/jsptag.jsp?name=root&passwd=root
--%>

<jsp:forward page="jsptag2.jsp">
    <jsp:param name="username" value="root"/>
    <jsp:param name="password" value="root"/>
</jsp:forward>




</body>
</html>

jsptag.jsp页面可以看见转发的时候默认携带参数了,而jsptag2.jsp接受参数的时候还需要在网页中输入请求的参数

文件包含

java 复制代码
<jsp:include page="jsptag2.jsp"></jsp:include>

JSTL表达式

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

  • 格式化标签
  • SQL标签
  • XML标签
  • 核心标签(掌握部分)

核心标签

JSTL标签库使用步骤

  • 引入对应的taglib
  • 使用其中的方法
  • 在Tomcat也需要引入jstl的包,否则会报错:JSTL解析错误

c:if

核心

java 复制代码
<c:if test="${param.username=='admin'}" var="isAdmin">
    <c:out value="管理员登陆成功"/>
</c:if>
<c:if test="${not isAdmin}">
    <c:out value="普通用户"/>
</c:if>

coreif.jsp

java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%--引入JSTL核心标签库,我们才能使用JSTL标签 core--%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h4>if测试</h4>

<hr>
<form action="coreif.jsp" method="get">
    <%--
    EL表达式获取表单中的数据
    ${param.参数名}
    --%>
    <input type="text" name="username" value="${param.username}">
    <input type="submit" value="登录">
</form>

<%--判断如果提交的用户名是管理员,则登陆成功
<%
    if(request.getParameter("username").equals("admin")){
        out.print("登陆成功");
    }
%>
--%>

<c:if test="${param.username=='admin'}" var="isAdmin">
    <c:out value="管理员登陆成功"/>
</c:if>
<c:if test="${not isAdmin}">
    <c:out value="普通用户"/>
</c:if>


</body>
</html>

c:set

定义一个变量score的值

java 复制代码
<c:set var="score" value="85"/>

c:choose

java 复制代码
<c:choose>
    <c:when test="${score>=90}">
        优秀
    </c:when><c:when test="${score>=85}">
        良好
    </c:when><c:when test="${score>=80}">
        还行
    </c:when><c:when test="${score>=70}">
        一般
    </c:when><c:when test="${score>=60}">
        差生
    </c:when>
</c:choose>

c:forEach

java 复制代码
<%@ 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<Object>  people = new ArrayList<>();
  people.add(0,"张三");
  people.add(1,"BB");
  people.add(2,"CC");
  people.add(3,"DD");
  people.add(4,"EE");
  request.setAttribute("list",people);
%>

<%--
var,每一次遍历出来的变量
items,遍历的集合
begin,哪里开始到哪里
end,到哪里
step,步长
--%>

<c:forEach var="people" items="${list}">
  <h1><c:out value="${people}"/></h1><br>
</c:forEach>


<hr>
<c:forEach begin="1" end="3" step="1" items="${list}" var="people">

</c:forEach>

<%-- 等价于上面
<%
  for (int i = 0; i < 2; i++) {}
%>
--%>


</body>
</html>

如果是前端html弄出数据就要写50行代码,但是c:forEach 一行就够了

相关推荐
秃然想通2 小时前
Java继承详解:从零开始理解“父子关系”编程
java·开发语言
嘻嘻嘻开心2 小时前
List集合接口
java·开发语言·list
源码获取_wx:Fegn08952 小时前
基于springboot + vue物业管理系统
java·开发语言·vue.js·spring boot·后端·spring·课程设计
cike_y2 小时前
JavaWeb-JDBC&事务回滚
java·开发语言·javaweb
青啊青斯2 小时前
python markdown转word【包括字体指定】
开发语言·python·word
corpse20102 小时前
trae下载依赖包特别慢!!!
开发语言·python
rainFFrain2 小时前
QT显示类控件---QSlider
开发语言·qt
dragoooon342 小时前
[C++——lesson30.数据结构进阶——「红黑树」]
开发语言·数据结构·c++
云泽8082 小时前
C++ STL 栈与队列完全指南:从容器使用到算法实现
开发语言·c++·算法