1.域对象的作用:
临时的存储有效的数据,四个作用域保存的值,范围不同,存储的方式是一样
2.实现方式:
都是通过setAttribute和getAttribute
3.域对象的范围:
pageContext<request<session<application
pageContext:只在当前JSP页面中有效,其它页面访问无效
request:只在同一个请求当中访问有效,其它无效
session:只在同一个会话(打开浏览器与关闭浏览器的过程)中访问有效,其它无效(浏览器关闭或者session失效)
application:只要服务器没有关闭,期间访问都有效。
案例
<ul>
<li>pageContext:只在当前JSP页面中有效,其它页面访问无效</li>
<li>request:只在同一个请求当中访问有效,其它无效</li>
<li>session:只在同一个会话(打开浏览器与关闭浏览器的过程)中访问有效,其它无效(浏览器关闭或者session失效)</li>
<li>application:只要服务器没有关闭,期间访问都有效。</li>
</ul>
<%
pageContext.setAttribute("小涛", "凡凡");
request.setAttribute("老夫子", "元歌");
session.setAttribute("许仙", "白素贞");
application.setAttribute("居易", "李白");
%>
<hr/>
<%=pageContext.getAttribute("小涛") %>
<br/>
<%=request.getAttribute("老夫子") %>
<br/>
<%=session.getAttribute("许仙") %>
<br/>
<%=application.getAttribute("居易") %>
<hr/>
<!--
EL表达式
属于JSP的一个基础语法,作用:让数据调用的更简单。
$ { }
-->
<h2>EL表达式获取域对象所保存的值</h2>
<!-- 通过EL表达式的方式进行输出域对象所保存的值 -->
<%=pageContext.getAttribute("小涛") %> ==== ${小涛 }
<br/>
${居易 }
${许仙 }
${老夫子 }
<!-- 通过EL表达式获取四个域对象分别保存的值 -->
<!-- EL表达式中提供了四个隐式域对象 -->
<hr/>
${pageScope.小涛 }
<br/>
${requestScope.老夫子 }
<br/>
${sessionScope.许仙 }
<br/>
${applicationScope.居易 }
<!-- EL表达式获取的值可以有哪些? -->
${小涛 }
${"小涛" }
1.EL表达式
属于JSP的一个基础语法,作用:让数据调用的更简单。 ——语法: $ { }通过EL表达式获取四个域对象分别保存的值
EL表达式中提供了四个隐式域对象 (先后顺序:从小范围到大范围)
empty 判断EL表达式中的变量是否存在
${empty list }
JSTL库
1.由JSP内部提供的一套标签库
问题:纯JSP页面中不允许Java代码 需要使用JSTL提供的标签去替代。
2.JSTL标签 out,set,if,foreach
通过JSTL库中的out标签进行值的输出<!-- default 当value值访问的结果不存在时 会输出默认结果 -->
<c:out value="${username }" default="sb"></c:out>
通过JSTL库中的set标签进行对值的设置
<!--
属性:
var 存储的变量名
value 存储的值
scope 作用域(pageContext request session application)
-->
通过JSTL库中提供的if标签来实现对数据进行有效的判断<c:if test="${1==12 }">
<c:out value="你的条件是OK的"></c:out>
</c:if>
remove标签 移除<c:set var="bb" value="123456"></c:set>
移除前: <c:out value="${bb }"></c:out>
<!-- 移除 -->
<hr/>
<c:remove var="bb" />
移除后:<c:out value="${bb }"></c:out>
foreach循环标签
<hr/>
<!--
sb 变量
begin 起始值
end 终值
step 每次增长2
varStatus 获取数据对应的行号(Y1阶段 J2EE 自定义JSP标签)
-->
<c:forEach var="sb" begin="1" end="100" step="2" varStatus="demo" >
${sb }----${demo.index }----${demo.count } <br/>
</c:forEach>
3.使用步骤:
(1)导入依赖库 lib
(2)在指定的页面中通过taglib指令来引
案例:去除掉商城首页的java代码
<body>
<!-- 所有的JSP页面中直接通过biz层实例化调用的数据显示 -->
<!-- 将这些数据显示的java代码存放到一个预处理的do处理页面中去实现,跳转过来 -->
<!--
如果存在do处理页面去获取biz层的数据
是不直接执行do处理的,需要在显示页面中通过if标签进行判断跳转
-->
案例 <!-- 显示数据时,判断非空 --> <c:if test="${empty listGoods }"> <jsp:forward page="doLoad.jsp"></jsp:forward> </c:if> <h3 align = "center">zkingzz购物商城首页</h3> <hr/> <table border = "1" width = "100%" align = "center"> <tr> <th>编号</th> <th>名称</th> <th>类型</th> <th>图片</th> <th>价格</th> <th>库存</th> <th>描述</th> <th>操作</th> </tr> <!-- 需求:显示goods表中所有的记录 --> <c:forEach items="${listGoods }" var="goods"> <tr> <td>${goods.gid }</td> <td>${goods.gname }</td> <td>${goods.gtype }</td> <td><img style = "width:80px;height:50px;" src = "${goods.gimage }"/></td> <td>${goods.gprice }</td> <td>${goods.gkc }</td> <td>${goods.ginfo }</td> <td> <button onclick="addCart(${goods.gid})">加入购物车</button> </td> </tr> </c:forEach> </table> </body>