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 一行就够了

相关推荐
皮皮林5516 分钟前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河24 分钟前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程3 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅5 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者6 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺6 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart7 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP8 小时前
MyBatis-mybatis入门与增删改查
java
孟陬11 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端