JSTL学习:
作用:
提高在JSP页面中逻辑代码是书写效率
使用:
1,JSTL的核心标签库(重点)
2,JSTL的格式化标签库(讲解)
3,JSTL的SQL标签库(了解)
4,JSTL的函数标签库(了解)
5,JSTL的XML标签库(了解)
JSTL的核心标签库
1,需要导入jar包
2,声明JSTL标签的引入
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3,内容:
<c:out value="数据" default="默认值" ></c:out>
数据可以是常量也可以是EL表达式
<c:set var="hello" value="hello application" scope=""></c:set>
作用:存储数据到作用域对象当中
var:键名
value:数值
scope:表示要存储的作用域对象
<c:remove var="hello" scope="request"/>
作用:删除作用域对象的值
var:表示删除的键名
scope:表示指定删除作用域的名字:requset,session,page,application
4,逻辑判断
<c:if test="${表达式}">
前端代码
</c:if>
作用:进行逻辑判断,相当等与JAVA的if语句
注意:
逻辑判断需要依赖于EL标签,也就是说表达式涉及到的数据必须从域中取
<c:choose>
<c:when test="表达式">
前端代码
</c:when>
....................
</c:choose>
作用:进行逻辑判断,相当等与JAVA的if...esle if语句
5,循环标签
<!--常量循环 -->
<c:forEach begin="0" end="4" step="2">
循环体
</c:forEach>
begin:循环变量
end:循环的次数
step:i+几
varStatus="vs"
111--${vs.index}--${vs.count}--${vs.first}--${vs.last}
<!--对象循环 -->
<c:forEach items="${str}" var="s">
${s}
</c:forEach>
items:声明要遍历的对象,结合EL表达式
var:声明变量,记录每次变量的结果
<%
//request.setAttribute("hello", "hello request");
%>
<c:set var="hello" value="hello PageContext" scope="page"></c:set>
<c:set var="hello" value="hello request" scope="request"></c:set>
<c:set var="hello" value="hello session" scope="session"></c:set>
<c:set var="hello" value="hello application"></c:set>
<c:remove var="hello" scope="request" />
<c:out value="${hello}"></c:out>
</br>
<!-- JSTL的逻辑判断 -->
<!--传统方式 -->
<%
int a=5;
if(a>4){
%>
<b>我是逻辑判断的传统方式</b>
</br>
<%} %>
<!--JSTL方式的逻辑判断 -->
<c:set var="a" value="5"></c:set>
<c:if test="${a>4}">
<b>我是JSTL的逻辑判断方式</b>
</br>
</c:if>
<!--多分支选择结构 -->
<c:set var="soce" value="50"></c:set>
<c:choose>
<c:when test="${soce>=90}">
<i>你考的很好</i>
</br>
</c:when>
<c:when test="${soce>=80&&soce<90}">
<i>你考的不错</i>
</br>
</c:when>
<c:when test="${soce>=70&&soce<80}">
<i>你考的一般</i>
</br>
</c:when>
<c:otherwise>
<i>接受审判吧</i>
</br>
</c:otherwise>
</c:choose>
<!--JSTL循环 -->
<!-- 传统方式 -->
<%
for(int i=0;i<3;i++){
%>
<i>我是传统循环方式</i>
</br>
<%} %>
<!--JSTL循环方式 -->
<!--常量循环 -->
<c:forEach begin="0" end="4" step="2" varStatus="vs">
<i>我是JSTL循环方式</i>
</br>
111--${vs.index}--${vs.count}--${vs.first}--${vs.last}</br>
</c:forEach>
<!--对象循环 -->
<%
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
request.setAttribute("str", list);
HashMap<String,String> hs =new HashMap<String,String>();
hs.put("a1", "哈哈");
hs.put("a2", "嘿嘿");
request.setAttribute("str2", hs);
%>
<!--List循环 -->
<c:forEach items="${str}" var="s">
${s}
</c:forEach>
<!--Map循环 -->
<c:forEach items="${str2}" var="s">
${s.value}
</c:forEach>
<table border="1px">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<c:forEach items="${str}" var="s">
<tr>
<td>${s}</td>
<td>${s}</td>
</tr>
</c:forEach>
</table>