在JSP中怎样将el表达式 声明变量获得的值赋给Java变量

?02-05?02-05?02-04?02-04?02-04?02-03?02-03?02-03?02-01?02-02?01-28
?01-28?01-09?01-09?01-06?01-06?11-24?11-23?11-23?11-20?11-16?11-15
?02-05?01-30?01-22?01-21?01-22?01-23?01-01?01-01?12-31?01-05?01-17
?01-14?01-13?12-28?12-05?12-02?12-02?10-31?10-29?10-22?09-26?09-26
人才交流中心
技术交流中心
ITLab技术交流平台:在jsp中使用JSTL跟El表达式访问和遍历Map集合 - 我的未来,我们共同coding - ITeye技术网站
博客分类:
1.背景
&&&&& 这段时间在项目中遇到在一个jsp页面中需要访问Map集合。可能各位同行和朋友在开发javaWeb 的时候,用的较多的是List&Bean&这样的集合,针对这类的集合访问比较简单,但是我在遍历Map&K,V& 这样的集合时,着实是费了一点心思。下面的代码样例都是在此背景(jsp、jstl、el、Map)下完成。
2.相关知识点
&&&&& 1.关于jsp和jstl不再解释,具体请查阅相关资料或者书籍。
&&&&&& 2.EL,为什么要解释EL表达式呢,因为本文就是介绍如何使用EL表达来访问Map对象,以及EL的取值方式对于访问Map&K,V&这样的集合的特殊之处。
&&&&& 3.什么是EL表达式,以及EL的用处:JSP表达式语言(ExpressionLanguage),简称EL,最初定义在JSTL1.0规范中,直到JSP2.0之后,EL表达式才正式成为JSP规范中的一部分。EL为存取变量、表达式运算和读取内置对象等内容提供了新的操作方式。
&&&&&& 4.EL取值方式
EL提供(.)和([])两种运算符来存取数据,即使用点运算符(.)和方括号运算符([])。那么EL是如何运用这两个运算符来取值的呢?这应该跟javaBean的规范有关,凡是提供了getXXX()的标准bean,都可以在访问范围(jsp的访问范围)中使用EL表达式取值。闲言少叙,进入正题,如何访问Map呢?
3.正文
1.使用${map.key}和${map.value}访问集合
&& 原理:以HashMap为例,通过查看HashMap的源码,你可以发现在HashMap中提供了如下的方法:
public final K getKey() {
public final V getValue() {
}
jsp代码片段:
&h3&1.使用"."运算符遍历Map&/h3&
&h5&key:$&{map.key};value:$&{map1.value}。&/h5&
&c:forEach items="${map1}" var="map"&
&h5&key: ${map.key}&value:${map.value}&/h5&
&/c:forEach&
&hr/&
使用上述代码访问map时,其实就是调用了getKey()和getValue()这两个方法。
2.对于已经知道map中的key,如何直接获取key对应的value
原理:以HashMap为例,通过看源码,其内部提供了如下方法:
public V get(Object key) {
if (key == null)
return getForNullKey();
int hash = hash(key.hashCode());
for (Entry&K,V& e = table[indexFor(hash, table.length)];
e = e.next) {
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
* Offloaded version of get() to look up null keys.
Null keys map
* to index 0.
This null case is split out into separate methods
* for the sake of performance in the two most commonly used
* operations (get and put), but incorporated with conditionals in
private V getForNullKey() {
for (Entry&K,V& e = table[0]; e != e = e.next) {
if (e.key == null)
jsp 代码片段:
&h3&2.使用"."运算符访问Map&/h3&
&h5&姓名:$&{map.name};年龄:$&{map1.age}。&/h5&
&h5&姓名:${map1.name};年龄:${map1.age}。&/h5&
上面代码对于明确Map中的key的情况下,是可以采用这种方法访问的。当然,使用[]运算符也可以正常访问,具体jsp代码片段如下:
&h3&3.使用"[]"运算符访问Map&/h3&
&h5&姓名:$&{map['name']};年龄:$&{map1['age']}。&/h5&
&h5&姓名:${map1['name']};年龄:${map1['age']}。&/h5&
使用这种方式时,请注意 具体的key请使用双引号或者单引号包含起来,以表示作为整体key。
使用这种方式访问map的时候,有一种特殊情况需要注意。后台 map.put(1, value1) , 前台 ${map[1]}将取不到值。原因:el表达式中数字1是Long类型,无法匹配后台map中的int。 修改 map.put(0L, value);& 前台 :${map[1]}.
3.当key不是明确的,是一个变量时,如何访问Map?原理跟第2条相似,jsp代码有所不同
&h3&4.当key是变量时,使用"[]"运算符访问Map&/h3&
&c:set var="key" value="name"&&/c:set&
&h5&通过变量key获取的姓名:${map1[key]}&/h5&
&hr/&
4.结语
&&& 本文是自己的一个总结和思考,其实在项目中用的多的是list,而list中存储的都是标准的javaBean,因此使用起来比较简单。而针对于Map这种比较特殊的集合,如果把其中的源码稍微看一下,知道里面的getKey()和getValue(),以及get(key)这三个方法了之后,在EL中取Map的值就会得心应手了。欢迎各位前辈和同行拍砖指正,一起交流进步。详细代码和运行截图见附件。
&
欢迎转载,地址:
运行效果:
下载次数: 6
yelangking
浏览: 3300 次
来自: 南京怎样将jsp中的在下方得到的值放入输入框中?_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:302,605贴子:
怎样将jsp中的在下方得到的值放入输入框中?收藏
就是将list中的emp得到之后放到输入框中,可以放么?直接显示在输入框这里。
前辈们,请帮我一下,谢谢!
用个for循环
el表达式取值就好
jsp页面不要写java代码,会被老板砍死
c for each
&input value=&123&&&/input&123换成你写的&%=XXXX.XXX%&
写一个servlet获得文本框的值,然后request.setAttribute(name,值)再forward到jsp,用el表达式取就可以了,如果不清楚这个表达式百度一下写法[HEAVY DOLLAR SIGN]{}
直接${param.参数}
weile完成任务的话 就是再写一个脚本 包住文本yu。就是复制一下你之前的循环。再value那放上你需要get的值
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或JSP中的EL表达式介绍_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
JSP中的EL表达式介绍
J​S​P​中​的​E​L​表​达​式​的​详​细​介​绍​.
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
你可能喜欢在JSP中怎样将EL表达式获得的值赋给Java变量?
[问题点数:20分,结帖人lgq_0714]
在JSP中怎样将EL表达式获得的值赋给Java变量?
[问题点数:20分,结帖人lgq_0714]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 jsp el表达式 赋值 的文章

 

随机推荐