2020-10-27课堂笔记 EL表达式、JSTL


前端框架:Vue 、laiUi、Angular、
vue中的Mustache(胡须)语法

EL表达式(jsp表达式语言)

EL: Expression Language
简化对变量的对象的访问,使用EL表达式可以替代页面中脚本的编写

语法:${EL 表达式} 注意:${中间无空格

主要用于:
1.静态文本
2.标准标签和自定义标签
3.EL不能在脚本元素<% %>中使用

禁用EL计算功能: <%@ page isELIgnored ="true" %>

1.读取方式

使用 .和 [ ]

对于连字符(-)或者其它特殊字符的字符串只能用“[ ]”操作符,而不能用“.”操作符

2.EL操作内容

1.当EL在对表达式中的变量进行操作的时候,它通过pageContext.findAttribute(" ")的方式来查找变量
2.查找的范围从page,request,session,application
3.如果这几个范围都没有找到则返回null
4.也可以通过以下的内容来指定范围:

3.EL四大作用域:

pageScope,requestScope,sessionScope,applicationScope

变量类项的自动转换,转换不成功则报错。

4.隐含对象(11个)

在这里插入图片描述

5.EL运算

&&: and
|| :or
取反: !
等于: eq
不等于: ne
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
EL表达式的操作结果会自动输出到输出流对象。

JSP的四大域对象:page、request、session、application

EL表达式的四大域对象:pageScope、requestScope、sessionScope、applicationScope
可以放置对象的
pageContext、request、session、application
如:pageContext.setAttribute(“stu”,“stu”);

6.获取javaBean对象的属性:

${user.name}推荐使用这种方法
${user[“name”]}

当在不同的域中放置了相同名称的对象,默认从最小的域开始找,找到就不再继续找,都找不到时,什么都没有,也不会报异常
可以使用${作用域.名称}指定在某域中找
${requestScope.stu}

注意:当包含特殊字符如-(连字符)时,只能使用[ ] ,不是使用. 来操作

用来取得用户请求的参数,如

${param.name} -->request.getParameter(String name)
${paramValues.name} -->request.getParameterValues(String name)

读取Cookie:
A.设置Cookie:

<title>Insert title here2</title>
<%
  Cookie cookie1 = new Cookie("country","chn");
  cookie1.setMaxAge(120);
  response.addCookie(cookie1);
%>
</head>

B.读取Cookie:

<hr />
  ${cookie.country.name}<br/>
  ${cookie.country.value}<br/>
  ${cookie['country'].name }<br/>
  ${cookie['country'].value }<br/>
<hr />

不要使用EL中的保留字作为变量名称

7.null和empty

1.null不是empty
2.${null}不会报错
3.${empty}不能直接这样用
empty:判断是否为空

8.EL变量-自动类型转换

举例:

${parm.count+20}

当parm.count为10时,结果为30

9.cookie

设置cookie

<% Cookie c=new Cookie("name","user");
       c.setMaxAge(300);//设置cookie存活时间300秒
       response.addCookie(c); %>

获取键、获取值的方法:

     ${cookie.name}<!-- cookie的地址 -->
     ${cookie.name.value}<!-- cookie.cookie对象.name获取cookie的值 user -->
     ${cookie.name.name}<!-- cookie.cookie对象.name获取cookie的名字 -->

10.获取浏览器信息

当前浏览器的一些用户信息

 ${header["User-Agent"] }

11.从xml中获取初始化参数

context:上下文,即容器
1.配置信息

  <context-param>
  <param-name>clazzName</param-name>
  <param-value>Java 4班</param-value>
  </context-param>

2.在jsp页面中获取

   ${initParam.clazzName}

11.Web项目发现显示与自己预期不一样的解决办法

A. F5,刷新页面;
B. Ctrl + F5;强制浏览器刷新;
C. Ctrl + Shift +Delet,清空浏览器的缓存;
D. 重启Tomcat/Jetty等服务器,重新加载配置文件;
E. Clean Project,让Eclipse对项目使用源码重新编译;
F. 若项目是Maven项目,重编编译Maven项目的源码;
G. 怀疑自己的代码单词拼写或逻辑等错误!

JSTL

jsp标准标签库,核心库,减少脚本量
J:Jsp
S:Standard
T:Tag
L:Libraray

1.导入jar包

在这里插入图片描述

2.JSTL标签库(5类)

标签库uri
核心标签库http://java.sun.com/jsp/jstl/core
SQL标签http://java.sun.com/jsp/jstl/sql
I18N标签库http://java.sun.com/jsp/jstl/fmt
XML标签http://java.sun.com/jsp/jstl/xml
EL函数库http://java.sun.com/jsp/jstl/functions

注意:要在uri里写标签库全称

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

3.迭代:foreach的使用

<%
   Student stu=new Student();
   stu.setId(18);
   stu.setName("张三");
   Student stu2=new Student();
   stu2.setId(20);
   stu2.setName("李四");
   List list=new ArrayList();
   list.add(stu);
   list.add(stu2);
   pageContext.setAttribute("stu", list);
%
  <c:forEach var="num" items="${stu}" step="1">
  <h1>序号:${num.id }</h1>
  <h1>姓名:${num.name }</h1>
  </c:forEach>

在这里插入图片描述

3.<c:out></c:out>输出

1.一般out

<c:out value="value"></c:out>

value可以是EL表达式或静态值

如:

 <c:out value="${stu}"></c:out>

2.是否转义输出
如:

  <c:out value="&copy;" escapeXml="false"></c:out>

则输出如下图:
在这里插入图片描述
如果设置为true则不能输出版权号
默认为true

3.带默认值的<c:out>

  <c:out value="${list}" default="空值"></c:out>

4.remove

移除指定范围的变量
默认范围为page

 <c:remove var="name" scope="page|request|session|application"></c:remove>

5.catch

用于捕获异常

<c:catch var="name" scope="page|request|session|application">
内容。。。。
</c:catch>

6.if、choose、when、otherwise

 <c:if></c:if>
  <c:choose></c:choose>
  <c:when></c:when>
  <c:if test="true">
    <c:out value="真"></c:out>
  </c:if>

choose、when、otherwise组合使用:

  <c:choose>
    <c:when test=""></c:when>
    <c:otherwise></c:otherwise>
  </c:choose>

test为真则执行,否则不执行被包裹的内容

7.set

<c:set var="color" value="red"></c:set>

8.forTokens

根据指定分隔符,分割字符串

<%  String temp="张三,男"; 
  pageContext.setAttribute("temp", temp);
  %>
<c:forTokens var="arg" items="${temp}" delims=",">
   ${arg }
</c:forTokens>

9.import

加载一些静态资源

10.redirect

重定向,用于跳转

<c:redirect url="">
<c:redirect url="">
  <c:param name=" " value=""></c:param>
</c:redirect>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值