当前位置:学者斋 >

计算机 >java语言 >

JSP内置对象及EL表达式使用

JSP内置对象及EL表达式使用

在JSP内置对象及EL表达式时我们通常会遇到一些棘手的问题,下面小编给大家提供了JSP内置对象及EL表达式使用,大家可以参考阅读,更多详情请关注应届毕业生考试网。

JSP内置对象及EL表达式使用

JSP 的内置对象是为了方便, 开发 JSP 的时候,把一些对象设置为内置对象,开发者在 JSP 页面编程的时候不必声明这些对象就能直接使用。

本文我们具体讲解一下Jsp内置对象及EL表达式的使用。

  一、JSP的内置对象(9个JSP内置对象)

JSP的内置对象引用名称   对应的类型

request      HttpServletRequest

response     HttpServletResponse

session      HttpSession(有开关的:page指令的session属性的取值)

application    ServletContext

config       ServletConfig

page        this(当前Servlet对象)

exception     wable(有开关:page指令的isErrorPage属性改为true)

out        JspWriter

pageContext    Context非常重要

  pageContext对象有三大作用:

  1、本身是一个域对象,表示的域范围是本页面。

同时还能操作其他三个域对象(PageContext ,ServletRequest, HttpSession,ServletContext)

设置属性:

void setAttribute(String name,Object value)

void removeAttribute(String name)

Object getAttribute(String name)

操作其他的三个域对象,设置属性:

void setAttribute(String name,Object value,int scope)

void removeAttribute(String name,int scope)

Object getAttribute(String name,int scope)

参数int scope是由PageContext类提供的静态变量规定的。

_SCOPE:页面范围(是PageContext本身中的那个Map,代号page)

EST_SCOPE:请求范围(是ServletRequest中的那个Map,代号request)

ION_SCOPE:请求范围(是HttpSession中的那个Map,代号session)

ICATION_SCOPE:请求范围(是ServletContext中的那个Map,代号application)

Object findAttribute(String name):依次按照page,request, session ,application范围搜索指定名称的对象,找到为止。

EL表达式便是调用了此方法(非常有用)

  2、获取其他8个隐式对象

  3、提供了转发和包含的方便方法

若不用pageContext对象:

RequestDispatcher rd = equestDispatcher("/url");

ard(request,response);

用pageContext对象:

ard("url");

ude("url");

四大域对象(两个资源之间互传数据)

JSP中隐式对象的名称  范围名称  具体的类型

pageContext    page    Context

request      request  letRequest

session     session  Session

application    application  letContext (如果使用,必须同步处理)

  二、EL表达式

它只是JSP中的表达式,不是一种开发语言

基本语法:${EL表达式}

  1. 获取数据

EL表达式只能获取四大域中的数据。

EL表达式获取的对象如果是null,页面不会显示数据。因此,EL表达式中永远不会出现空指针异常

"."运算符:

${}:调用域中名称为p对象的getName方法,点运算符是用于获取属性的取值的。

[]运算符:

(.运算符能做的,[]也能做。[]能做的,.不一定能做)

比如${}===${p['name']}==${p["name"]}

优秀在可以取不符合Java命名规范的东东。

  2. 数学逻辑运算:

empty运算符:

如果判断的对象是null或者空字符串,都返回true。

对于集合,即使集合对象本身不是null,没有任何元素,也返回true。

EL表达式不支持字符串连接操作。

  三、EL内置对象(11大EL内置对象)

获取JSP的内置对象(11大EL内置对象):难点,不要与JSP的内置对象和范围名称搞混

11大EL隐式对象中,其中一个是表示自身对象外,其余都是表示的Map结构

EL隐式对象名称     Java类型              备注

pageContext    Context   与JSP中的内置对象完全相同

剩余的都是代表的集合

pageScope      代表着PageContext页面范围域那个Map

requestScope      代表着ServletRequest请求范围域那个Map

sessionScope     代表着HttpSession会话范围域那个Map

applicationScope      代表着ServletContext应用范围域那个Map

param         代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符串。

paramValues     代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符串数组。

header        代表着请求消息头。key:头名称。value:头值,它是一个字符串。

headerValues     代表着请求消息头。key:头名称。value:头值,它是一个字符串数组。

cookie       代表客户端提交的Cookie的Map。key:cookie的name。value:cookie对象本身

initParam     代表着全局初始化参数(中context-param):参数名称。value:参数值

  EL表达式与JSP内置对象问题

问:

${est}和${request}有区别吗?这里的request都是HttpServletRequest类吗?

我在Action中有ttribute("key",key);

key变量是集合时在jsp用${key}能拿到,但是key是个字符串时${key}就是null,为什么呢?

还有Attribute和Parameter有什么区别?可以分别有同名的吗?(比如Parameter中有个"key",Attribute也有个"key")

  可以的话,EL中区分吗?先找哪个?

  回复一:

有区别吧

request对象有若干个内部信息,其中一个是attribute(key, value)队列。

${est}表示的是request对象本身,能取得request的所有信息。

${request}表示的是request对象内部的attribute(key, value)队列,只能取得该队列内的信息

  回复二:

key变量是集合时在jsp用${key}能拿到,但是key是个字符串时${key}就是null,为什么呢?

你在页面<%arameter(‘key’)>可以取到!

  Attribute和Parameter有什么区别:

getParameter(String name)获得客户端传送给服务器的参数值,该参数是由name指定的,通常是表单中的参数.

getAttribute(String name):返回有name 指定的属性值,如果指定的属性值不存在,则会返回一个null值.

标签: JSP EL 内置 表达式
  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/java/qx50m.html