EL(Expression Language)时jsp特性之一,jsp页面可以使用EL表达式来访问程序的数据,用来取代页面中的脚本部分也就是java代码片段
1.EL语法 ${expression}
2.保留字 and eq gt true instanceof or ne le false empty not lt ge null div mod
3.访问对象的方式${object["name"]} ${object.name} eg.${header.host} ${header["host"]}
4.隐士对象pageContext,initParam,param,header,headerValues,cookie,sessionScope,applicationScope等
5.EL运算符 其中一个为${empty X}
6.配置EL:可以在web.xml中配置EL表达式,eg
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true<scripting-invalid>
</jsp-property-group>
<jsp-config>
使用jstl类库必须在页面头部加入引用声明(先要在lib文件夹中引入standard.jar和jstl.jar)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
自定义标签文件
在WEB-INF文件夹下新建一个文件夹命名位tags,新建一个firstTag
<%@ tag language="java" import="java.util.Date,java.text.DateFormat"
pageEncoding="UTF-8"%>
<%
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
Date now = new Date(System.currentTimeMillis());
out.println(dateFormat.format(now));
%>
然后我们就可以在jsp中声明该taglib的属性,包括名字和位置,这时候就可以直接使用该标签文件了
声明:<%@ taglib prefix="easy" tagdir="/WEB-INF/tags"%>
使用:
Today is:
<easy:firstTag>
</easy:firstTag>
标签文件之doBody
它含有三个属性,var,varReader和scope,这三个属性都是可选的,如果都没有指定的话,就将执行的结果保存在所调用页面的JspWriter中
比如我们定义一个doBodyDemo.tag标签内容如下
<jsp:doBody var="referer" scope="session">
然后我们在一个jsp页面中使用这个标签
<%@ taglib prefix="doBodyDemo" tagdir="xxxx"%>
<doBodyDemo:doBodyDemo>
${header.referer}
</doBodyDemo:doBodyDemo>
那么这个时候${header.referer}的结果就会被写入到属性位session的referer中去,我们可以在属性的范围内使用这个变量referer