如你梦想和现实只是一步之遥,那么我觉得这一步就应该是执着和笨蛋式的坚持了吧。

jsp <%%>、el表达式、jstl标签

java 独孤九剑 166℃

在java web开发中,我们都需要对数据进行处理。实际上学过jsp的人都知道,jsp其实就是一个servlet对象。所以,不要问我jsp中能不能直接写java代码。
那既然能写要怎么写。
在jsp中写java代码的格式如下:

<% int a = 0; a = 1; %>
逻辑判断:
<% boolean isLogin = request.getAttribute("useLoginState"); if(isLogin){ %>
	    			<label>XX用户已登录</label>
	    			<% }else{ %>
	    			<label>用户未登录</label>
	    			<% } %>
循环等。

既然是一个servlet对象,那有这个就是可以搞定所有的逻辑和数据输出了。是不是,是的。那为啥还要弄出啥el表达式,其实这种事情,我们可以理解为不同的表达
方式。既然java代码可以,为了更方便直观的处理和获取数据。sun公司提供了el表达式,语法更简洁。
el表达式的格式:

-- 获取项目当前路径的方法
${pageContext.request.contextPath}
在作用域范围内的对象和变量都可以采用这种方式获取。
比如:page、session等

1、获取数据:EL 表达式主要用于替换掉 Jsp 页面中的脚本表达式,以从各种类型的 Web 域中检索 Java 对象、获取数据
         (1) 获取域里面的数据:${data},取出域里面关键字为 data 的数据
        服务器会将 ${data} 翻译为:pageContext.findAttribuate("data");
        找不到不会返回 null,而是返回 ""
   (2) 获取 JavaBean 中的数据:${bean.property}
   (3) 获取 JavaBean 中维护的其它的 JavaBean中的数据:${bean1.bean2.property}
   (4) 获取集合中的数据:${list[1].property},如果 "." 搞不出数据的话就换成[]
   (5) 获取 Map 中的数据:${map.key.property},有可能取不出,比如 key 为数字,那么就加 '',${map['key'].property}
2、执行运算:利用 EL 表达式可以在 Jsp 页面中执行一些基本的关系运算、逻辑运算和算数运算。
     (1) ${user==null}
          ${username=='aaa' && password='bbb'}
          ${1+1}
      (2) empty 运算符:检查集合是否为 null 或 "空"
      (3) 二元运算符:${gender=='male'?checked:''}
3、获取 Web 开发常用对象:EL 表达式定义了 11 个隐式对象
      语法:${对象名称}
      (1)、${pageContext} 获取到 pageContext 对象,它不是在四个域里面去找,而是先在自己定义的对象中找,如果找到了就取出来。
              ${pageContext.request.contextPath} 获取针对当前工程的相对路径,应用于 URL 上,因为我们不应该将 URL 写死在代码中。
      (2)、${pageScope} 得到的是 page 域 (pageContext) 中保存数据的 Map集合。也就是指定在 page 域中查找。
      (3-5)、${requestScope}、${sessionScope}、${applicationScope} 和上面的 pageScope 一样,都是在特定的域中检索数据。
      (4)、${param} 获取存在 request 中请求参数的 Map,常用在数据回显上。
      (5)、${paramValues} 获取存在 request 中请求参数名相同的值的 String[] 数组。
      (8)、${header} 获取 HTTP 请求头的 Map 对象。
      (9)、${headValues} 获取 HTTP 请求头值的 Map 对象
      (10)、${cookie} 获取所有 cookie 的 Map 对象
      (11)、${initParam} 获取保存所有 Web 应用初始化参数的 Map 对象

el表达式大概只是为了更方便获取数据吧,但是处理逻辑方面不是太方便。所以他们又整出了jstl标签,专门处理页面的逻辑问题。
但是,这种标签的使用前提是,项目中要有相应的包:

<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

这个还不够,在每个需要使用jstl标签的页面上还要引入,相当于java类import一样

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

然后就可以使用了,代码格式如下:

c:forEach items="${resourcesClassList}" var="rc">
	            <c:choose> 
				    <c:when test="${flag}"> 

<li class="active"><a href="${pageContext.request.contextPath}/shipin/class/${rc.id}" >${rc.name}</a></li>

				    	<input type="hidden" value="${flag = false}"/>
				    	<input type="hidden" value="${classObj = rc}"/>
					</c:when> 
					<c:otherwise> 

<li><a href="${pageContext.request.contextPath}/shipin/class/${rc.id}" >${rc.name}</a></li>

 
					</c:otherwise>
				</c:choose>
	    	</c:forEach> 

到这里,对于java代码、el表达式、jstl表达式的介绍和一些使用场景大概就说完了。在实际的使用过程中,el表达式+jstl这种方式使用的会比较多。但是java代码也是可以做到的,他们是相互配合着使用,没有说绝对
用哪一种。

本文的知识参考:jsp和EL表达式

PS: 服务器页面生成花费时间 0.14秒 查询 40 次

转载请注明:KEEP3YUE » jsp <%%>、el表达式、jstl标签

喜欢 (0)