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="©" 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>