EL表达式、request、requestScope

request对象通常用来接收从客户端通过表单提交过来的数据,然后在servlet或者action中用request.getParameter()的方法获取获取参数内容;

requestScope通常是在servlet和action中通过request.setAttribute()方法把数据放到request对象中供客户端获取,然后客户端获取的方法就是requestScope.getAttribute()。它是EL表达式中的一个隐含对象,类似request,如${requestScope.username }表示从request域中获取username属性对应的值,相当于request.getAttribute(“username”);

①request.getParameter(“username”)等价于${param.username },它们一般用在服务器获取页面或客户端的内容,这些内容都是String的;

②request.getAttribute(“username”)等价于${requestScope.username},一般是从服务器传递数据到页面,在页面中获取服务器保存在其中的数据内容。

EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
     因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
     假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
所以${requestScope.hello}等价于${hello}
EL表达式获取对象属性的原理是这样的:
以表达式${user.name}为例
EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。

所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法。
其实你要了解EL表达式的运行原理,它其实后台也对应的java代码,
它会先将你EL表达式中的对象属性的首字符大写,拼成getXX()方法,
然后利用反射将对象构建出来,然后再执行getXX()方法,
所以这中间不关私有属性的事,调用的是私有属性的get/set方法。
如果你不写get/set方法,那EL表达式就拿不到值了。set方法是给你后台设置值用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值