JSP、EL、JSTL简单总结

本文详细介绍了JSP的基本概念及其内置对象,并深入探讨了EL表达式的使用方法及应用场景,包括其语法结构、运算符的使用技巧以及如何在不同范围内查找变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.jsp

 

request ---- javax.servlet.HttpServletRequest

response ----javax.servlet.HttpServletResponse

out --- javax.servlet.JspWriter

 

page --- javax.servlet.jsp.PageContext

session --- javax.servlet.http.HttpSession

application --- javax.servlet.ServletContext

 

pageContext --- 可以访问本页内的所有对象

 

<%--在方法中_jspService(requst,response) --%>
<%int methor_var1= 789;%>

<%-- 这里声明的全部是在类中 --%>
<%!int class_var1 = 789;%>
 

 

2.EL表达式

 

    表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。

 

 

EL的启用

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"
	isELIgnored="false"%>
 

语法结构


     ${expression}

 

运算符[]和.

 

当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[ ]“,如:

 

${user.My-Name}应当改为${user["My-Name"] }
 

如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:

 

${sessionScope.user[data]}中data 是一个变量

 

// data 是一个变量

${sessionScope.user[data]}
 

EL查看变量顺序

 

依序从Page、Request、Session、Application范围查找

 

EL对象

 

术语定义

param

将请求参数名称映射到单个字符串参数值(通过调用 ServletRequest.getParameter (String name) 获得)。getParameter (String) 方法返回带有特定名称的参数。表达式 $(param.name) 相当于 request.getParameter (name)。

paramValues

将请求参数名称映射到一个数值数组(通过调用 ServletRequest.getParameter (String name) 获得)。它与 param 隐式对象非常类似,但它检索一个字符串数组而不是单个值。表达式 ${paramvalues.name) 相当于 request.getParamterValues(name)。

header

将请求头名称映射到单个字符串头值(通过调用 ServletRequest.getHeader(String name) 获得)。表达式 ${header.name} 相当于 request.getHeader(name)。

headerValues

将请求头名称映射到一个数值数组(通过调用 ServletRequest.getHeaders(String) 获得)。它与头隐式对象非常类似。表达式 ${headerValues.name} 相当于 request.getHeaderValues(name)。

cookie将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。表达式 ${cookie.name.value} 返回带有特定名称的第一个 cookie 值。如果请求包含多个同名的 cookie,则应该使用 ${headerValues.name} 表达式。
initParam将上下文初始化参数名称映射到单个值(通过调用 ServletContext.getInitparameter(String name) 获得)。

 

除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如 Web 上下文、会话、请求、页面:

 

 

术语定义

pageScope

将页面范围的变量名称映射到其值。例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope.objectName.attributeName} 访问对象的属性。

requestScope

将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL 表达式可以使用 ${requestScope.objectName} 访问一个 JSP 请求范围的对象,还可以使用 ${requestScope.objectName.attributeName} 访问对象的属性。

sessionScope

将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例如:


$sessionScope.name}

applicationScope

将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。

 

 

3.JSTL

 

JSTL中没有本地范围的概念。只有page,request,session和application范围的变量。
使用c:set存储变量,scope属性默认为page, 若不指定则变量存储在page范围里

 

本地变量读取

<%=name%>

 

用法和structs标签一样

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值