EL表达式

五迷三道 提交于 2019-12-16 07:12:18

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

仅供参考,如有错误,欢迎指出

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!