EL表达式的初步认识
为了使jsp页面写起来更加简单,EL表达式应运而生。
MyServlet:向request赋值 request.setAttribute(“username”,“itcast”);
request.setAttribute("password","123456");
> request.getRequestDispatcher("my.jsp").forword(request,response);
My.jsp
> 用户名:<%=request.getAttribute("username") %>
>
> 密码:<%=request.getAttribute("password") %>
My.jsp
> 用户名:${username}
>
> 密码:${password}
域对象:page request session application
EL隐式对象
jsp九大隐式对象
1.request:HttpServletRequest
2.response:HttpServletResponse
3.config:ServletConfig
4.application:ServletContext
5.exception:异常对象(isErrorPage必须为true)
6.session:HttpSession(session=true)
7.page:this,代表当前Servlet对象
8.out:JspWriter(作用等同于PrintWriter)输出对象
9.pageContext:PageContext对象
EL表达式的11隐含对象
1.applicationScope
应用程序范围内的scoped变量组成的集合
2.cookie
所有cookie组成的集合
3.header
HTTP请求头部,字符串
4.headerValues
HTTP请求头部,字符串集合
5.initParam
全部应用程序参数名组成的集合
6.pageContext
当前页面的javax.servlet.jsp.PageContext对象
7.pageScope
页面范围内所有对象的集合
8.param
所有请求参数字符串组成的集合
9.paramValues
所有作为字符串集合的请求参数
10.requestScope
所有请求范围的对象的集合
11.sessionScope
所有会话范围的对象的集合
pageContext对象
用于获取jsp页面的隐式对象
例:获取response对象中的characterEncoding属性,可以用以下表达式
${pageContext.response.characterEncoding}
pageContext.jsp
请求URI为:${pageContext.request.requestURI }
Content-Type响应头:${pageContext.response.contentType }
服务器信息为:${pageContext.servletContext.serverInfo }
Servlet注册名为:${pageContext.servletConfig.servletName }
结果:
请求URI为:/ELProject/pageContext.jsp Content-Type响应头:text/html;charset=UTF-8 服务器信息为:Apache Tomcat/6.0.13 Servlet注册名为:jsp
注意:
(1)不要将EL表达式中的隐式对象与JSP中的隐式对象混淆,只有pageContext对象是它们所共有的,其他隐式对象则毫不相关。
(2)如果某个对象存储的属性名与EL表达隐式对象的名称相同,那么,通过EL表达式获取对象的属性是无法实现的。
Implicit.jsp
<body>
<%session.setAttribute("pageContext", "itcast"); %>
输出表达式{pageContext}的值
${pageContext }
</body>
Web域相关对象
在Web开发中,PageContext、HttpServletRequest、HttpSession和ServletContext这4个对象之所以可以存储数据,是因为它们内部都定义了一个Map集合,这些Map集合是有一定作用范围的,例如,HttpRequest对象存储的数据只在当前请求中可以获取到。习惯性地,我们把这些Map集合称为域,这些Map集合所在的对象称为域对象。在EL表达式中,为了获取指定域中的数据,提供了pageScope、requestScope、sessionScope和applicationScope4个隐式对象。
Scopes.jsp
<body>
<%pageContext.setAttribute("userName", "itcast");
request.setAttribute("bookname", "JavaWeb");
session.setAttribute("username", "itheima");
application.setAttribute("bookName", "Java 基础");
%>
表达式\${pageScope.userName }的值为:${pageScope.userName}<br>
表达式\${requestScope.bookName }的值为:${requestScope.bookName}<br>
表达式\${sessionScope.userName }的值为:${sessionScope.userName}<br>
表达式\${applicationScope.bookName}的值为:${applicationScope.bookName }<br>
表达式\${userName }的值为:${userName }
</body>
注意:
也可以不使用这些隐式对象来指定域,而是直接引用域中的属性名称即可。例如${userName }
就是在page,request、session、application4个作用域中内按顺序依次查找userName的值。
param 和paramValues对象
在jsp页面中,经常需要获取客户端传递的请求参数,EL表达式提供了param和paramValues两个隐式对象,用于获取客户端访问JSP页面时传递的请求参数。
param对象
param对象用于获取请求参数的某个值,它是Map类型,与request.getParameter()方法相同,在使用EL获取参数时,如果参数不存在,返回的是空字符串,而不是Null。语法格式:${param.num}
paramValues对象
如果一个请求参数有多个值,可以使用paramValues对象来获取请求参数的所有值,该对象用于返回请求参数所有值组成的数组,如果要获取某个请求参数的第一个值,可以使用以下代码
${paramValues.nums[0]}
Param.jsp
<body>
<form action="${pageContext.request.contextPath}/param.jsp">
num1:<input type="text" name="num1">
<br>
num2:<input type="text" name="num">
<br>
num3:<input type="text" name="num">
<br>
<input type="submit"value="提交">
<input type="reset"value="重置">
<hr>
num1:${param.num1 }<br>
num2:${paramValues.num[0]}<br>
num3:${paramValues.num[1] }<br>
<hr/>
<!-- 通过原来的方法获取表单值 -->
num1: <%=request.getParameter("num1")%>
<%String[] s=request.getParameterValues("num");
%>
<br/>
num2: <%=s[0] %>
<br/>
num3:<%=s[1] %>
</form>
header 和headerValues对象
heaer对象用于获取请求头字段的某个值。
${header[“user-agent”]}
headerValues对象
如果一个请求头字段有多个值,可以使用headerValues对象,该对象用于返回请求头字符的所有值组成的数组,如果要获取某个请求头字段的第一个值,可以使用如下代码
${headerValues[“Accept-Language”][0]}
例 header.jsp
<body>
${header[“user-agent”]}
headerValues["Accept-Language"]:${headerValues["Accept-Language"][0]}
headerValues["Accept-Language"]:${headerValues["Accept-Language"][1]}
</body>
Cookie对象
在JSP开发中,经常需要获取客户端的Cookie信息,为此,在EL表达中,提供了Cookie隐式对象,该对象是一个代表所有Cookie信息的Map集合,Map集合中元素的键为各个Cookie的名称,值则为对应的Cookie对象。
获取cookie对象的信息:${cookie.userName}
获取cookie对象的名称:${cookie.userName.name}
获取cookie对象的值:${cookie.userName.value}
Cookie.jsp
<body>
<%response.addCookie(new Cookie("userName","itCast")); %>
cookie对象的信息:<br>
${cookie.userName }
<br>
${cookie.userName.name }=${cookie.userName.value }
</body>
initParam对象
在开发一个Web应用程序时,通常会在web.xml文件中配置一些初始化参数,为了方便获取这些参数,EL表达式提供了一个initParam隐式对象,该对象可以获取Web应用程序中的全局初始化参数。
${intParam.count}
<body>
初始化参数webSite的值为:<br>
${initParam.webSite }
</body>
web.xml配置
<context-param>
<param-name>webSite</param-name>
<param-value>www.itcast.cn</param-value>
</context-param
仅供参考,如有错误,欢迎指出
来源:CSDN
作者:Cold_Night_
链接:https://blog.csdn.net/Cold_Night_/article/details/103464467