【学习笔记】JSP标签、JSTL标签、EL表达式
EL 表达式 ${}
作用:
-
获取数据
-
执行运算
-
获取web开发的常用对象
JSP 标签
-
拼接页面
<jsp:include page="jsp1.jsp"/>
-
转发,可传递参数
<%-- 参数标签:name 是参数的键,value是参数的值--%> <jsp:forward page="/jsptag02.jsp"> <jsp:param name="name" value="张三"></jsp:param> <jsp:param name="age" value="18"></jsp:param> </jsp:forward>
需要注意的是,在jsp标签中不要写注释
取出参数
<body> <%=request.getParameter("name")%> <%=request.getParameter("age")%> </body>
JSTL标签
JSTL标签库的使用就是为了弥补HTML 的不足,它自定义了许多标签,可以供我们使用,标签的功能和Java代码一样,只是为了更加美观。
要使用JSTL标签必须要引入三个依赖:
-
jakarta.servlet.jsp.jstl-api
-
standard
-
jakarta.servlet.jsp.jstl
在tomcat也需要引入jstl的包,否则会报jstl解析错误
JSTL标签包含以下几种类型:
-
核心标签
-
格式化标签
-
sql标签
-
xml标签
想要使用某种标签必须,在jsp文件中引入该标签库,比如引入核心标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
我们主要使用核心标签,其他的标签不常使用
c:if 标签
我们提交表单,然后使用c:if判断表单的参数
<body>
<form action="coreif.jsp" method="get">
<input type="text" name="username" value="${param.username}">
<input type="submit" value="登录">
</form>
<%--
c:if 的参数:
test:需要判断的条件
var:返回的值 true/false
--%>
<c:if test="${param.username=='admin'}" var="isAdmin">
<c:out value="管理员成功登录"/>
</c:if>
<c:out value="${isAdmin} 登录"/>
</body>
c:if 标签中 还可以 使用 c:out 标签输出,value就是要输出的内容
c:set 标签 保存数据 c:when 标签 判断
<body>
<form action="corewhen.jsp" method="get">
<input type="text" name="score" value="${param.score}">
<input type="submit">
</form>
<%--使用 c:set 定义一个变量
c:set 标签参数:
var:定义变量
value:变量的值
--%>
<c:set var="score" value="${score=param.score}"/>
<%--c:choose 标签 里面包含了c:when
c:when 标签参数:
test:用于判断
--%>
<c:choose>
<c:when test="${score>=90}">
你的成绩为优秀
</c:when>
<c:when test="${score>=80}">
你的成绩为良好
</c:when>
<c:when test="${score>=70}">
你的成绩为一般
</c:when>
<c:when test="${score>=60}">
你的成绩为及格
</c:when>
<c:when test="${score<=60}">
你的成绩为不及格
</c:when>
</c:choose>
</body>
c:when 的判断条件的顺序是从上到下的,在这个例子中,如果顺序搞反,有可能就会逻辑错误
c:forEach 标签 循环
我们以循环集合为例
<body>
<%
ArrayList<String> citys = new ArrayList<>();
citys.add("北京");
citys.add("上海");
citys.add("广州");
citys.add("深圳");
citys.add("苏州");
citys.add("济南");
//需要把这个集合放到erquest 或 pageContext / session / application 中
request.setAttribute("citys",citys);
%>
<%--
c:forEach 参数:
var:每一次遍历的变量
items:遍历的对象
--%>
<c:forEach var="city" items="${citys}">
<c:out value="${city}"/>
</c:forEach>
</body>
这是forEach循环,下面是普通的for循环
<%--
c:forEach 参数:
var:每一次遍历的变量
items:遍历的对象
begin:遍历开始的索引
end:遍历结束的索引
step:步长
--%>
<c:forEach var="city" items="${citys}" begin="1" end="4" step="1">
<c:out value="${city}"></c:out>
</c:forEach>