jsp详细总结二(EL表达式,JSTL)

一.EL表达式

作用:EL :为了消除jsp中的Java代码

1.语法

${EL表达式}
a.EL不需要导包
b.在el中调用属性,其实是调用的getXxx()方法
${范围.对象.属性.属性的属性 }
${requestScope.student.address.schoolAddress }

2.操作符:操作:属性,不是对象

. : 使用方便
[] : 如果是常量属性,需要使用双引号/单引号 引起来;比点操作符更加强大(可以访问数据,获取变量值)

[]强大之处:
a.可以容纳一些 特殊符号 (. ? -)
b.[]可以容纳 变量属性 (可以动态赋值)
String x =“a”; $ {requestScope.a}等价于$ {requestScope[“a”]}等价于KaTeX parse error: Expected '}', got 'EOF' at end of input: …e[x]} c.可以处理数组:{requestScope.arr[0] }
获取map属性
Map<String,Object> map = new HashMap<>();
map.put(“cn”,“中国”);
map.put(“us”,“美国”);
request.setAttrubute(“map”,map);
${requestScope.map.cn}
3.通过EL获取JSP 九大内置对象
${pageContext }
${pageContext.request }
${pageContext.sessoin }
${pageContext.方法名去掉()和get并且将首字母小写} //上面的就是

4.各内置对象的作用域

<%// 向page作用域存入内容
    pageContext.setAttribute("name", "张三"); // 同一页面中的信息
    request.setAttribute("name", "李四");    // 一次请求有效的信息(例如servlet存入结果,jsp获取结果)
    session.setAttribute("name", "王五"); // 每个用户(浏览器)独有的信息(例如购物车信息)
    application.setAttribute("name", "赵六"); // 适合放全局信息(城市信息, 类别信息)
    %>
 
    <!-- 从page作用域获取内容-->
    <%= pageContext.getAttribute("name")%>
    <!--  从page作用域获取内容(推荐) -->
    ${pageScope.name}
 
    <!-- 从request作用域取-->
    <%= request.getAttribute("name")%>
    <!-- 从request作用域取(推荐)-->
    ${requestScope.name}
 
    <!-- 从session作用域取值 -->
    <%= session.getAttribute("name")%>
    <!-- 从session作用域取值(推荐) -->
    ${sessionScope.name}
 
    <!-- 从application作用域取值 -->
    <%= application.getAttribute("name")%>
    <!-- 从application作用域取值(推荐) -->
    ${applicationScope.name}
 
    <hr/>
    <!-- 在el表达式取作用域变量时,不加前缀,先搜索pageScope, 再搜索requestScope, 继续搜索sessionScope, 再搜索applicationScope-->
    ${name}

二.JSTL (比EL更加强大)

需要引入2个jar :jstl.jar standard.jar
引入tablib :

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

其中prefix=“c” :前缀

核心标签库: 通用标签库、条件标签库、 迭代标签库

1.通用标签库

1.<c:set>赋值

i:
在某个作用域之中(4个范围对象),给某个变量赋值
<%-- request.setAttribute(“name”, “zhangsan”) ; --%>

<c:set var=“name” value=“zhangsan” scope=“request”/>
${requestScope.name }

<c:set var=“变量名” value=“变量值” scope=“4个范围对象的作用域”/>

给普通对象赋值
在某个作用域之中(4个范围对象),给某个对象的属性复制 (此种写法,不能指定scope属性)

${requestScope.student.sname}  //取出studen对象sname属性值
<c:set target="${requestScope.student}" property="sname"  value="zxs" />

给map对象赋值

${requestScope.countries.cn}  //取出countries对象cn属性值
<c:set target="${requestScope.countries}" property="cn"  value="中国" />

<c:set target=“对象” property=“对象的属性” value=“赋值” />

注意 <c:set>可以给不存在的变量赋值 (但不能给不存在的对象赋值)

2.<c:out>显示
传统EL:$ {requestScope.student }
c:out方式:<c:out value ="$ {requestScope.student }"
c:out显示不存在的数据:<c:out value="$ {requestScope.stu}>" default=“zs-23”>

true:<c:out value=‘百度’ default=“当value为空的,显示的默认值” escapeXml=“true” /> //将a标签内容以文字形式显示
false:<c:out value=‘百度’ escapeXml=“false” /> //显示链接
3.<c:remove >:删除属性

<c:set var=“a” value=“aaa” scope=“request”/> //赋值
${a} // 赋值后显示
<c:remove var=“a” scope=“request”/> //删除
${a} //删除后再显示

2.条件标签库

1.选择
单重选择

<c:if test="${6>2}" var = "result" scope="request" ></c:if>

if else if… esle if… else /switch

<c:choose>
	<c:when test="${requestScope.role == '老师'}">
				老师代码 .... 
	 </c:when>
	<c:when test="${requestScope.role == '学生'}">   ==可以用 eq 代替
				学生代码....
	</c:when>
	<c:otherwise>  
				管理员其他人员....
	 </c:otherwise>
</c:choose>

3.迭代标签库(循环)

for(int i=0;i<5;i++)
<c:forEach var=“name” items=“r e q u e s t S c o p e . n a m e s " > − {requestScope.names }” > -requestScope.names">−{name }-
</c:forEach>

//相当于 for(int i=0;i<5;i++)
<c:forEach begin="0" end="5" step="1" varStatus="status" >
	${status.index}
</c:forEach>

//相当于for(String str:names)
<c:forEach var="name" items="${requestScope.names}">
	${name}
</c:forEach>

<c:forEach  var="student" items="${requestScope.students }" >
		${student.sname }-${student.sno }	
</c:forEach>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值