EL表达式用于简化jsp取值的操作
基本语法:${域对象别名.键}
String value = (String)request.getAttribute("key");
等于
${requestScope.key}
四大域对象(别名)
applicationScope
- 描述:
applicationScope
表示整个Web应用程序的作用域,其中存储了在应用程序生命周期内有效的属性和变量。- 生命周期: 数据存储在 ServletContext 对象中,从Web应用程序启动到关闭期间一直有效。
sessionScope
- 描述:
sessionScope
表示HTTP会话的作用域,其中存储了在整个用户会话期间内有效的属性和变量。- 生命周期: 数据存储在 HttpSession 对象中,从用户登录到退出期间一直有效。
requestScope
- 描述:
requestScope
表示当前HTTP请求的作用域,包含了在该请求中设置的属性和变量。- 生命周期: 数据存储在 HttpServletRequest 对象中,仅在当前请求周期内有效。
pageScope
- 描述:
pageScope
表示当前JSP页面的作用域,即在当前JSP页面中设置的属性和变量。- 生命周期: 数据存储在
pageContext
对象中,只在当前页面请求周期内有效。
允许不写别名 ${键}
将按照以下顺序查找
pageContext:EL首先会检查
pageContext
对象,这是EL表达式的默认上下文。如果找到匹配的属性,即返回该属性的值。requestScope:如果在
pageContext
中没有找到属性的值,EL 将继续在requestScope
中查找匹配的属性。sessionScope:如果在
requestScope
中也没有找到属性的值,EL 将继续在sessionScope
中查找匹配的属性。applicationScope:最后,如果在
sessionScope
中仍然找不到属性的值,EL 将在applicationScope
中查找匹配的属性。如果以上所有作用域中都找不到对应的属性,会返回空值(null)。
Servlet中向request域对象填充数据
记得不能使用重定向,只有跳转才能保存request域中的数据
request.setAttribute("key", value);
request.getRequestDispatcher("/example.jsp").forward(request, response);
使用EL表达式获取请求参数
${param.key}
String value = request.getParameter("key");
等于
${param.key}
${paramValues.key[0]} 用于获取多个同名值时使用
/example.jsp?key=1&key=2
JSTL用于简化jsp的流程语句
版本区别与下载地址
在jsp页面加上
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 导入jstl