java_web 快速入门之第十四章 域对象&EL表达式&JSTL库

一:域对象

四大作用域对象:

      pageContext request session application

作用:
        用于保存数据,获取数据,在不同资源之间共享数据。

方法:
        setAttribute(name,object) ; 保存数据方法
        getAttribute(name) 获取数据
        romveAttribute(name) 清除数据


作用范围:

 pageContext域 处于同一个jsp页面中数据共享是有效的,其他页面无效(范围最小)
 request域处于同一个请求中数据共享是有效的,其他无效(转发有效)
 session域处于同一个会话(打开浏览器和关闭浏览器的过程)中数据共享是有效的
 application域处于同一个web应用中数据共享是有效的

二:EL表达式

   1. EL(expression language) 是 JSP 表达式语言,全称是 ExpressionLanguage,使用 EL 的目的是简化在 JSP 中访问变量的方式,简单静态 HTML 与 Java 代码的耦合,提供了在jsp中简化表达式的方法,让jsp的代码更加简化

   基本语法格式:

​
${ EL Expression}

​

        2. EL表达式主要是输出域对象中的数据,当四个域对象都有同一个key的值时,EL表达式会按照四个域对象的范围从小到大进行搜索,找到就输出,与四个域对象声明的先后顺序无关

​
​
<!-- 通过域对象保存同一个键  不同的值 -->
	<%
		//存储值
		pageContext.setAttribute("李白", "西施");
		request.setAttribute("李白", "王昭君");
		session.setAttribute("李白", "貂蝉");
		application.setAttribute("李白", "杨玉环");
	%>
	<hr/>
	<!-- 获取 -->
	<!-- 通过jsp表达式的方式进行输出作用域保存的值 -->
	<%=pageContext.getAttribute("李白") %>
	<br/>
	<%=request.getAttribute("李白") %>
	<br/>
	<%=session.getAttribute("李白") %>
	<br/>
	<%=application.getAttribute("李白") %>
	
	
	<h3>通过EL表达式获取同一个键不同的值</h3>
	${李白 }

​

​

 3. EL表达式中的四个隐式域对象 :

       pageScope  requestScope sessionScope applicationScope

4. EL表达式中可以获取的值:

       ${ "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 指定键的值。

5. empty运算:
empty运算可以判断一个数据是否为空,若为空,输出true,不为空,输出false
以下几种情况为空(在原本的key之前加empty关键字):
(1)值为null、空串
(2)值为Object类型的数组且长度为0 (注:其他类型的长度为0的数组值为非空)
(3)List、Map集合元素个数为0
 

6."."与"[ ]"的相同点和差别:

(1)相同点:都可以访问对象有属性。
(2)不同点:当属性的名字包含有空格,点号等复杂符号时。使用"." 来访问对象有属性将会出现异常
        

三:JSTL库

         由JSP所提供的一套标准标签 ,在纯JSP页面中用JSTL提供的标签去替代Java代码 

  使用步骤:
                (1)导入依赖库---- lib
                (2)在指定的页面中通过taglib指令来引入具体的标签库依赖文件

使用标签时,一定要在jsp文件头加入以下代码:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

1. <c:out> 用来显示数据对象(字符串、表达式)的内容或结果

使用Java脚本的方式为:<% out.println("hello") %>  <% =表达式 %>

使用JSTL标签:<c:out value="字符串">,例如:

 <c:out value="${username }" default="ok"></c:out>

注:default 当value值访问的结果不存在时 会输出默认结果

2. <c:set> 用于将变量存取于 JSP 范围中或 JavaBean 属性中。

    属性:
             var  存储的变量名
             value 存储的值
             scope 作用域

​
 <c:set var="uname" value="李太白" scope="session"></c:set>
	 ${uname }
	 <c:out value="${uname }"></c:out>

​

3.<c:remove> 主要用来从指定的 jsp 范围内移除指定的变量。使用类似,语法如下:

<c:remove var="变量名" [scope="page|request|session|application"]></c:remove>

<c:set var="bb" value="123456"></c:set>
	移除前: <c:out value="${}"></c:out>
	<hr/>
	<c:remove var="cc" />
	移除后:<c:out value="${bb }"></c:out>

4.<c:if>

<c:if test="条件1" var="name" [scope="page|request|session|application"]></c:remove>

 <c:if test="${1==12 }">
	 	<c:out value="你的条件是OK的"></c:out>
	 </c:if>

5.<c:forEach>

语法:<c:forEach var="name" items="Collection" varStatus="statusName" begin="begin" end="end" step="step"></c:forEach>

     属性:

         var  变量名
         begin 起始值
         end  终值
         step 每次增长量
         varStatus 获取数据对应的行号
 

    <c:forEach  var="wa" begin="1" end="100" step="2" varStatus="demo" >
        ${wa }----${demo.index }----${demo.count } <br/>
    </c:forEach>

案例:遍历集合数据

	<%
		List<Student> myList = new ArrayList<Student>();
		myList.add(new Student("李白","男"));
		myList.add(new Student("李世民","男"));
		myList.add(new Student("成吉思汗","男"));
		myList.add(new Student("刘邦","男"));
		myList.add(new Student("刘备","男"));
		session.setAttribute("myList", myList);
	%>
	
	<c:forEach items="${myList }" var="stu">
		${stu.username }   ${stu.sex }
	
	</c:forEach>
	
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值