1 jsp的java太长了,el自己的语言${ 开始 }结束
2el直接返回空字符转,而java直接报错
3使用“lt”代替“<”运算符,如果运算符后面是数字,在运算符
*EL取值时,没有数组的下标越界,没有空指针异常,没有字符串的拼接。
el与jsp对比
pageContext..JSP的作用域(request、 session、 application 以及page)EL不仅可以访问一般变量,还可以访问JavaBean中的属性、嵌套属性和集合对象。
如“-”或“?”等非字母或数字的符号,就只能使用中括号运算符访问该属性。中括号运算符的用法示例如下:${user["My-Name"]}
什么时候用:联合使用集合里有多个对象,对象又有属性${users[0].userName}
一般情况可以互换
${student.name}等价于${student["name"]}。
可分为5种
请求URI为:${pageContext.request.requestURI}
Content-Type响应头:${pageContext.response.contentType}
服务器信息为:${pageContext.servletContext.serverInfo}
Servlet注册名为:${pageContext.servletConfig.servletName}
最后会打印itcase因为找的顺序是pageScope、requestScope、 sessionScope和applicationScope都可以通过setAttribute()方法存储属性,通过getAttribute()方法获取属性。
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<% pageContext.setAttribute("userName", "itcast"); %>
<% request.setAttribute("bookName", "Java Web"); %>
<% session.setAttribute("userName", "itheima"); %>
<% application.setAttribute("bookName", "Java 基础"); %>
表达式\${pageScope.userName}的值为:${pageScope.userName}
表达式\${requestScope.bookName}的值为:${requestScope.bookName}
表达式\${sessionScope.userName}的值为:${sessionScope.userName}
表达式\${applicationScope.bookName}的值为:${applicationScope.bookName}
表达式\${userName}的值为:${userName}
,它是Map类型,
例子:获取客户端请求参数的值
${param.num}获取一个
${paramValues.nums[0]} 获取数组
num1:
/>num2:
/>num3:
/>
/>
/>num1: ${param.num1}
/>num2: ${paramValues.num[0]}
/>num3: ${paramValues.num[1]}
/>
第一次访问服务器时,服务器会向浏览器回写一个Cookie,此时的Cookie信息是存储在浏览器中的,当刷新浏览器,
第二次访问cookie.jsp页面时,由于浏览器中已经存储了名为userName的Cookie信息,浏览器会将此Cookie信息一同发送给服务器,这时使用表达式${cookie.userName.name }和${cookie.userName.value }便可以获取Cookie的名称和值。
一开始访问一下都是空
获取cookie对象的信息:${cookie.userName}
获取cookie对象的名称:${cookie.userName.name}
获取cookie对象的值:${cookie.userName.value}
Web应用初始化值
${initParam.author}
JSTL
1在使用这些标签库前,必须在JSP页面的顶部使用<%@ taglib%>指令定义引用的标签库和访问前缀。
<%@ taglib prefix="c" url="http://java.sun.com/jsp/jstl/core" %>
用于输出文本内容的
2.格式标签库Fmt
SQL标签库sql
XML标签库xml
函数标签库fn
每个厂商都有一个标签库,所以jsp里面要自定义标签
jstl.jar文件包含JSTL规范中定义的接口和相关类,standard.jar文件包含用于实现JSTL的.class文件以及JSTL中5个标签库描述符文件(TLD)。
Tld
写上核心地址
escapeXml=true下面就不会编码输出
输出:
单标签 双标签
输出都是unknown
可以在网页里面直接传入键值输出
范围page、request、session和application
双标签在标签体中指定要输出的内容
[scope="{page|request|session|application}"]>
body content
unKnown user.
${ param.username} is manager.
${ param.username} is employee.
可以用c_choose.jsp?username=itcast传参
双标签:迭代指定范围内的集合start,end,步长就行
迭代包含多个对象的集合
<%
List colorsList=new ArrayList();
colorsList.add("red");
colorsList.add("yellow");
colorsList.add("blue");
colorsList.add("green");
colorsList.add("black");
%>
end="3" step="2">
${color}
双标签中构造URL参数
其中
使用绝对路径构造URL:
value="http://localhost:8080/chapter07/c_out1.jsp">
:param name="username" value=" 张三" />
使用相对路径构造URL:
value="c_out1.jsp?username=Tom" />
var和 value就可以
参数值进行编码