购物车项目3

本文介绍了JSP中的四大域对象——pageContext、request、session和application的作用范围及使用场景,并通过示例演示了如何存储和获取数据。接着讲解了EL表达式的基本语法、操作符及其在访问对象属性时的区别。此外,还探讨了JSTL库的使用,包括通用标签、条件标签和迭代标签,并展示了如何在实际项目中运用这些知识进行数据判断和循环处理。
摘要由CSDN通过智能技术生成

域对象

  page域(pageContext):只能作用于当前页面,既不能用来做做转发的数据分享,也不能做重定向的数据分享。
    
    request域:只能作用于同一个请求的数据共享,所以只能在请求的转发中使用。
    
    session域:只能作用于一次对话中共享数据(一次对话:用户打开浏览器,浏览多个web站点后,关闭该浏览器),转发和重定向都可以使用
    
    context域(application):只能在同一个web应用中使用。(全局的)
 

 

演示:

<%
	//四大域对象 pageContext  request  session  application
%>
 
<%
	//存储值
	pageContext.setAttribute("夏名广", "小龙女");
	request.setAttribute("唐琪琪", "赵敏");
	session.setAttribute("林凡", "黄蓉");
	application.setAttribute("香香子", "刘亦菲");
%>
<hr />
 
 
<!-- 通过jsp表达式的方式进行输出作用域保存的值 -->
<%=pageContext.getAttribute("夏名广")%>
<br />
<%=request.getAttribute("唐琪琪")%>
<br />
<%=session.getAttribute("林凡")%>
<br />
<%=application.getAttribute("香香子")%>
 
 
<hr />

 


<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<h2>这是demo3.jsp</h2>
<!-- 通过jsp表达式的方式进行输出作用域保存的值 -->
<%=pageContext.getAttribute("夏明广")%>
<br />
<%=request.getAttribute("唐琪琪")%>
<br />
<%=session.getAttribute("林凡")%>
<br />
<%=application.getAttribute("香香子")%>
 
<hr />
${唐琪琪 }
效果:

EL表达式

    2.1 概述
          EL 是 JSP 表达式语言,全称是 ExpressionLanguage,使用 EL 的目的是简化在 JSP 中访问变量的方式,简单静态 HTML 与 Java 代码的耦合。
          
    2.2 基本语法格式
        ${ EL Expression}
    
    2.3 示例代码
        ${ "Helloworld" }   // 输出字符串常量
        ${  str  }           // 输出字符串变量 str 的值
        ${ 3 + 2 }           // 输出 3+2 的结果
        ${ user.name}          // 输出 user 对象的 name 属性
        ${user["name"] }    // 同上
        ${  sessionScope ["user"].name }  // 同上
        ${user.name}        //访问对象 user 的 getName () 方法以得到 name 成员的值。
        ${list[1]}            //访问 list 对象的第二项。
        ${map["key"]}         //访问 map 指定键的值。
        
    2.4 "."与"[ ]"的相同点和差别
        (1)相同点:都可以访问对象有属性。
        (2)不同点:当属性的名字包含有空格,点号等复杂符号时。使用"." 来访问对象有属性将会出现异常
        
    2.5 EL表达式中的操作符
        (1)算术操作符 (+,-,*,/,%)
        
        (2)逻辑操作符 (&&,||,! 或 and,or,not )
        
        (3)比较操作符 (>,>=,<,<=,==,!==)  可以自动转换数据类型
        
        (4)空操作符 (empty)    当值为 null 时返回 true
        
        【注意事项】
            (a)EL的算术运算符和Java中的运算符的大致相同,优先级也相同。
            (b)'+' 运算符不会连接字符串了,他只用于加法运算。
        ==========================================================================
        (5)EL关系运算符有以下六个运算符
            关系运算符          说 明                    范例                                 结果
            == 或 eq   |       等于       |        ${ 5 = = 5 } 或 ${ 5 eq 5 }     |         true
            != 或 ne    |       不等于         |        ${ 5 != 5 } 或 ${ 5 ne 5 }         |         false
            < 或 lt     |       小于        |        ${ 3 < 5 }或 ${ 3 lt 5 }        |         true
            > 或 gt     |       大于        |        ${ 3 > 5 }或 ${ 3 gt 5 }        |         false
            <= 或 le    |         小于等于     |        ${ 3 <= 5 }或 ${ 3 le 5 }       |         true
            >= 或 ge    |         大于等于     |        ${ 3 >= 5 }或 ${ 3 ge 5 }       |         false
        
        (6)集合访问
 

演示:

<!-- 通过EL表达式获取四个域对象分别保存的值 -->
<!-- EL表达式中提供了四个隐式域对象 -->
<hr />
${pageScope.夏明广 }
<br />
${requestScope.唐琪琪 }
<br />
${sessionScope.林凡 }
<br />
${applicationScope.香香子 }
 
 
<!-- 超链接跳转  属于重定向 -->
<p>
	<a href="Demo3.jsp">跳转</a>
</p>

 

JSTL库

由JSP所提供的一套标准标签 
     --通用标签:set out remove
      --条件标签:if  if...else
      --迭代标签:forEach   for循环
     
    JSTL库怎么使用  
        导入------taglib指令
 

 

 演示:


<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.entity.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!-- 使用taglib指令引入JSTL库 -->
<!-- prefix="" 为标签库命令 -->
<!-- uri="" 引入标签库的文件 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 
 
<!-- 通过JSTL库中提供的if标签来实现对数据进行有效的判断 -->
<c:if test="${1==1 }">
	<c:out value="匹配完美~~~"></c:out>
</c:if>
 
 
<c:if test="${empty student }">
	<form action="demo4.jsp" method="post">
		账户 <input type="text" name="username" /> <br /> <br /> 密码 <input
			type="password" name="password" /> <br /> <br /> <input
			type="submit" value="登录" />
	</form>
</c:if>
<c:if test="${not empty student }">
	<h4>欢迎您回来!${student.username }</h4>
</c:if>
 
 
<!-- remove标签   移除 -->
<c:set var="aa" value="哈哈"></c:set>
移除前:
<c:out value="${aa }"></c:out>
<!-- 移除 -->
<hr />
<c:remove var="aa" />
移除后:
<c:out value="${aa }"></c:out>
 
<!-- foreach循环标签 -->
<hr />
 
<c:forEach var="sb" begin="1" end="100" step="2" varStatus="demo">
		${sb }----${demo.index }----${demo.count } <br />
</c:forEach>
 
<br />
<%
	List<Student> myList = new ArrayList<Student>();
	myList.add(new Student("李白", "男"));
	session.setAttribute("myList", myList);
%>
 
<c:forEach items="${myList }" var="stu">
		${stu.username }   ${stu.sex }
	
	</c:forEach>

资料拓展:

 

 运用以上知识进行购物车项目拓展


<%@page import="com.zking.cart.entity.Users"%>
<%@page import="com.zking.cart.entity.Goods"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.cart.biz.impl.GoodsBizImpl"%>
<%@page import="com.zking.cart.biz.IGoodsBiz"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>购物车主页</title>
<style type="text/css">
h1 {
	color: plum
}
</style>
<script type="text/javascript">
	
	function addCart(gid){
		location.href = "doShopping.jsp?gid="+gid;
	}
 
</script>
</head>
<body>
 
	<!-- 显示数据时,判断非空 -->
	<c:if test="${empty listGoods }">
		<jsp:forward page="doLoad.jsp"></jsp:forward>
	</c:if>
 
 
	<h1 align="center">糖糖购物商城首页</h1>
	<hr>
	<%
		request.setCharacterEncoding("utf-8");
		//获取usernmae
		String username = request.getParameter("username");
		if (null != username) {
			out.println("<span>欢迎你回来!&nbsp;&nbsp;" + username + "</span>");
		} else {
			out.println("【<a href = 'Login.jsp'>登录</a>】");
		}
	%>
	<center>
		<table border="1" width="70%">
			<tr>
				<th>商品编号</th>
				<th>商品名称</th>
				<th>商品价格</th>
				<th>商品描述</th>
				<th>商品图片</th>
				<th>商品操作</th>
			</tr>
 
			<c:forEach items="${listGoods }" var="goods">
 
				<tr>
					<td>${goods.gid }</td>
					<td>${goods.gname }</td>
					<td>${goods.gprice }</td>
					<td>${goods.ginfo }</td>
					<td><img src="admin/${goods.gpath }" /></td>
					<td>
						<button onclick="addCart(${goods.gid })">加入购物车</button>
					</td>
				</tr>
 
			</c:forEach>
 
		</table>
	</center>
	<script type="text/javascript">
	//加入购物车的点击事件
	function addCart(cid){
		//alert(cid)
		location.href = "doShopping.jsp?cid="+cid;
	}
 
</script>
 
</body>
</html>

 


<%@page import="com.zking.cart.entity.Goods"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.cart.biz.impl.GoodsBizImpl"%>
<%@page import="com.zking.cart.biz.IGoodsBiz"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
 
<!-- 首页数据显示的预处理do页面 -->
<%
	//实例化业务逻辑层
	IGoodsBiz igb = new GoodsBizImpl();
	//调用查询所有的方法
	List<Goods> listGoods = igb.queryGoodsAll();
	//将biz层获取的数据保存到session作用域中
	session.setAttribute("listGoods", listGoods);
	//重定向
	response.sendRedirect("Index.jsp");
%>

效果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值