EL表达式

    在JSP开发中,为了获取Servlet域对象中存储的数据,经常需要写很多Java代码,这样的做法会使JSP页面混乱,难以维护,为此,在JSP2.0规范中提供了EL表达式,EL是Expression Language的缩写,它是一种简单的数据访问语言。

EL表达式可以简化JSP页面,语法以“${”开始,以“}”结束的,具体格式:${表达式}

接下来通过一个案例来对比使用Java代码与EL表达获取信息的不同

先写一个文件MyServlet.java

package t;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setAttribute("username", "itcast");
		request.setAttribute("password", "123");
        RequestDispatcher dispatcher = request.getRequestDispatcher("/myjsp.jsp");
		dispatcher.forward(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

接下来写myjsp.jsp文件

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<html>
<head></head>
<body>
    使用java代码<br />
	用户名:<%=request.getAttribute("username")%><br /> 
	密 码:<%=request.getAttribute("password")%><br />	
	<hr>
	使用EL表达式:<br />
	用户名:${username}<br />
 	密 码:${password}<br />
	
</body>
</html>

EL中还有标识符,保留字,变量,常量,运算符,等等,这些就不说了

重点说下EL隐式对象

共有11个:

pageContext:对应于JSP页面中的pageContext对象

pageScope代表page域中用于保存属性的Map对象

requestScope代表request域中用于保存属性的Map对象

sessionScope代表session域中用于保存属性的Map对象

applicationScope代表application域中用于保存属性的Map对象

param表示一个保存了所有请求参数的Map对象

paramValues表示一个保存了所有请求参数的Map对象它对于某个请求参数,返回的是一个String类型数组

header表示一个保存了所有HTTP请求头字段的Map对象

headerValues表示一个保存了所有请求HTTP请求字段的Map对象,返回String类型数组。

cookie用来取得使用者的cookie值,cookie的类型是Map

initParam表示一个保存了所有Web应用初始化参数的Map对象

直接上代码,看效果

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<html>
<head></head>
<body>
	请求URI为:${pageContext.request.requestURI} <br />
	Content-Type响应头:${pageContext.response.contentType} <br /> 
	服务器信息为:${pageContext.servletContext.serverInfo} <br /> 
	Servlet注册名为:${pageContext.servletConfig.servletName} <br />
</body>
</html>

结果

Web域相关对象

在Web开发中,PageContext、HttpServletRequest、HttpSession、ServletContext这4个对象之所以可以存储数据,是因为它们内部都定义了一个Map集合,这些Map集合是由一定作用范围的,例如,HttpServletRequest对象存储的数据只在当前请求中可以获取到。

我们习惯把这些Map集合称为域,这些Map集合所在的对象称为域对象,

在EL表达式中,为了获取指定域中的数据,提供了PageContext、HttpServletRequest、HttpSession、ServletContext 4个隐式对象,示例代码:

${pageScope.userName}

${requestScope.userName}

${sessionScope.userName}

${applicationScope.userName}

在EL表达式中,只能在这4个作用域中获取数据

上代码

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<html>
<head></head>
<body>
	<% pageContext.setAttribute("userName", "itcast"); %>
	<% request.setAttribute("bookName", "Java Web"); %>
	<% 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>
</html>

结果如下

param和paramValues对象

在JSP页面中,经常需要获取客户端传递的请求参数,为此,EL表达式提供了param和paramValues两个隐式对象。

param对象

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值