为什么使用JSTL
虽然EL表达式可以访问JavaBean的属性,但是并不能实现在JSP中进行逻辑判断,因而要使用JSTL标签。
什么是JSTL
JSTL(JavaServerPages Standard Tag Library)JSP标准标签库 JSTL通常会与EL表达式合作实现JSP页面的编码
通用标签的使用
set:设置指定范围内的变量值
out:计算表达式并将结果输出显示
remove:删除指定范围内的变量
条件标签的使用 if:if标签用于判断条件是否成立,与Java中的If语句作用相同 语法
JavaBean在JSP中的局限 获取JavaBean属性必须要实例化 强制类型转化
使用EL表达式简化
1.什么是EL
EL即Expression Language(表达式语言)
2.EL的功能
替代JSP页面中的复杂代码 EL的语法
${ EL exprission } ${ bean.name } 或 ${ bean['name'] }
1.自动转换类型
EL得到某个数据时可以自动转换类型
对于类型的限制更加宽松
2.使用简单
相比较在JSP中嵌入Java代码,EL应用更简单
EL语法 以“${”作为开始,以“}”作为结束 直接使用变量名获取值$ ${ username }
属性范围 | EL中的名称 |
page | pageScope,例如${pageScope.username},表示在page范围内查找username变量,找不到返回Null |
request | requstScope |
session | sessionScope |
application | applicationScope |
对象名称 | 说 明 |
pageScope | 返回页面范围的变量名,这些名称已映射至相应的值 |
requestScope | 返回请求范围的变量名,这些名称已映射至相应的值 |
sessionScope | 返回会话范围的变量名,这些名称已映射至相应的值 |
applicationScope | 返回应用范围内的变量,并将变量名映射至相应的值 |
param | 返回客户端的请求参数的字符串值 |
paramValues | 返回映射至客户端的请求参数的一组值 |
pageContext | 提供对用户请求和页面信息的访问 |
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.entity.Orderltem"%>
<%@page import="com.zking.biz.GoodsBiz"%>
<%@page import="com.zking.entity.Goods"%>
<%@page import="com.zking.biz.IGoodsBiz"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//接收gid
String gid=request.getParameter("gid");
//调用业务逻辑
IGoodsBiz igb=new GoodsBiz();
//单个查询得到商品对象
Goods goods=igb.getGoods(gid);
//先拿订单项的集合
//解决覆盖问题
List<Orderltem> ls=(List<Orderltem> )session.getAttribute("mycart");
if(ls==null){//说明之前购物车是空的
ls=new ArrayList<Orderltem>();
}
//2解决加同一商品重复问题
boolean f=false;//假设不存在
//循环遍历集合
for(Orderltem oi:ls){
if(oi.getGoods().getGid()==Integer.parseInt(gid)){
//改变其数量价格
oi.setGinum(oi.getGinum()+1);//在原来的基础上加一
oi.calc();
f= true;
break;
}
}
if(f==false){//说明不存在
//实例化一个订单项
Orderltem item=new Orderltem();
//给对象赋值
item.setGoods(goods);
item.setGinum(1);
item.calc();
//把对象加到集合中
ls.add(item);//00:48:40 00:50:57
}
//把集合存在session中
session.setAttribute("mycart", ls);//键 值
//跳转到购物车界面进行展示
response.sendRedirect("cart.jsp");
%>