JavaWeb-14 (购物车项目3)

22 篇文章 1 订阅

一.域对象

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

<%@page import="com.zking.entity.Student"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
	
	<%
		//四大域对象 pageContext  request  session  application
		//1.域对象的作用:临时的存储有效的数据,四个作用域保存的值,
		//范围不同,存储的方式是一样
		//2.都是通过setAttribute和getAttribute
		//3.域对象的范围:pageContext<request<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/>
	<!-- 超链接跳转  属于重定向 -->
	<p>
		<a href = "demo3.jsp">跳转</a>
	</p>
	
	
	<hr/>
	
	
	<!-- 通过jsp表达式的方式进行输出作用域保存的值 -->
	<%=pageContext.getAttribute("杨过") %>
	<br/>
	<%=request.getAttribute("张无忌") %>
	<br/>
	<%=session.getAttribute("郭靖") %>
	<br/>
	<%=application.getAttribute("渣渣辉") %>
	
	
	
	<hr/>
	<!-- 
		EL表达式
			属于JSP的一个基础语法,作用:让数据调用的更简单。
			$ {  }
	 -->
	 <h2>EL表达式获取域对象所保存的值</h2>
	<!-- 通过EL表达式的方式进行输出域对象所保存的值 -->
	<%=pageContext.getAttribute("杨过") %> ==== ${杨过 }
	<br/>
	${郭靖 }

	
	
	
	<!-- 通过域对象保存同一个键  不同的值 -->
	<%
		//存储值
		pageContext.setAttribute("aa", "西施");
		request.setAttribute("aa", "王昭君");
		session.setAttribute("aa", "貂蝉");
		application.setAttribute("aa", "杨玉环");
	%>
	<hr/>
	<!-- 获取 -->
	<!-- 通过jsp表达式的方式进行输出作用域保存的值 -->
	<%=pageContext.getAttribute("aa") %>
	<br/>
	<%=request.getAttribute("aa") %>
	<br/>
	<%=session.getAttribute("aa") %>
	<br/>
	<%=application.getAttribute("aa") %>
	
	
	<h3>通过EL表达式获取同一个键不同的值</h3>
	${zkingzz }
	
	
	<!-- 超链接跳转  属于重定向 -->
	<p>
		<a href = "demo3.jsp">跳转</a>
	</p>
	
	<!-- 转发 -->
	<%--  <jsp:forward page="demo3.jsp"></jsp:forward> --%>
	 
	 <!-- 通过EL表达式获取四个域对象分别保存的值 -->
	 <!-- EL表达式中提供了四个隐式域对象 -->
	 <hr/>
	 ${pageScope.aa}
	 <br/>
	 ${requestScope.aa}
	 <br/>
	 ${sessionScope.aa}
	 <br/>
	 ${applicationScope.aa}
	 
	 <hr/>
	 <!-- EL表达式获取的值可以有哪些? -->
	 ${123 }
	 ${"123" }
	 ${1==2 }
	 ${"love"=="爱" }
	 equals
	 ${"love" eq "爱" }
	 ${1>2 }
	 <%
	 	List<String> list = new ArrayList<String>();
	 	list.add("zhangsan");
	 	list.add("lisi");
	 	session.setAttribute("list",list);
	 %>
	 ${list }
	 <hr/>
	 <!-- 保存实体 -->
	 <%
	 	Student stu = new Student("张三","男");
	 	session.setAttribute("stu", stu);
	 %>
	${sessionScope.stu.name }
	 
	 <!-- empty 判断EL表达式中的变量是否存在 -->
	 ${empty list }
	 
	 
	 
	

二.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表达式
			属于JSP的一个基础语法,作用:让数据调用的更简单。
			$ {  }
	 -->
	 <h2>EL表达式获取域对象所保存的值</h2>
	<!-- 通过EL表达式的方式进行输出域对象所保存的值 -->
	<%=pageContext.getAttribute("杨过") %> ==== ${杨过 }
	<br/>
	${郭靖 }

三.JSTL库

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

<!-- 
		JSTL
			1.由JSP内部提供的一套标签库
			问题:纯JSP页面中不允许Java代码  需要使用JSTL提供的标签去替代。
			2.JSTL
				out,set,if,foreach
			3.使用步骤:
				(1)导入依赖库     lib
				(2)在指定的页面中通过taglib指令来引入具体的标签库依赖文件
	 -->
	 <%
	 	//通过JSP脚本保存一个值
	 	session.setAttribute("username", "admin");
	 	out.println(session.getAttribute("username"));
	 %>
	 <%=session.getAttribute("username") %>
	 ${sessionScope.username }
	 <!-- 通过JSTL库中的out标签进行值的输出 -->
	 <!-- default 当value值访问的结果不存在时 会输出默认结果  -->
	 <c:out value="${username }" default="sb"></c:out>
	 
	 <!-- 通过JSTL库中的set标签进行对值的设置 -->
	 <!-- 
	 	属性:
	 		var  存储的变量名
	 		value 存储的值
	 		scope 作用域(pageContext request session application)
	  -->
	 <c:set var="uname" value="风清扬" scope="session"></c:set>
	 ${uname }
	 <c:out value="${uname }"></c:out>
	 
	 
	 <!-- 通过JSTL库中提供的if标签来实现对数据进行有效的判断 -->
	 <c:if test="${1==12 }">
	 	<c:out value="你的条件是OK的"></c:out>
	 </c:if>
	 
	 
	 <!-- 通过JSTL库中的if标签实现一个登录案例 -->
	 <!-- 
	 	已登录----显示当前的登录名
	 	未登录 ----显示登录的表单
	 -->
	  <%
	 	//获取
	 	request.setCharacterEncoding("utf-8");
	 	String username = request.getParameter("username");
	 	if(username!=null){
	 		Student student = new Student(username,"男");
	 		session.setAttribute("student", student);
	 	}
	 %>
	 <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="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>
	
	<br/>
	<%
		List<Student> myList = new ArrayList<Student>();
		myList.add(new Student("张三1","男"));
		myList.add(new Student("张三2","男"));
		myList.add(new Student("张三3","男"));
		myList.add(new Student("张三4","男"));
		myList.add(new Student("张三5","男"));
		session.setAttribute("myList", myList);
	%>
	
	<c:forEach items="${myList }" var="stu">
		${stu.username }   ${stu.sex }
	
	</c:forEach>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值