JTSL注册过商标注册分类明细吗?还有哪些分类可以注册?

上海通用别克君越3.0,宣传材料上发动机为3.0L.V6 SIDI智能直喷发动机 和3.0L.V6 VVT发动机有何不同?
SIDI 是智能直喷发动机技术,而以皇冠为例的3.0LVVT是可变气门正时技术,同为3.0升,却是有着不同优势的发动机。这两种技术均可以是发动机的燃油经济型有所提高。
我个人认为,国际上越来越多的发动机采用直喷技术,这既与相关信息厂家的技术有关也与理念有关,再就是与国内的油品有关系,直喷发动机对油品的要求很高。
VVT发动机是很多发动机都采取的技术,尤其在日系车上,只是叫法有不同。
以下是新君越发动机的内容,供参考
新君越采用3.0升SIDI智能直喷V6发动机,这款发动机在依靠新技术提升汽车的动力性能以及降低燃油消耗和排放方面,都取得了突破性的进展。单SIDI发动机的燃油直喷技术而言,可以给发动机带来更高的效率却不会损耗更多的能源,因而曾经得到包括博世(Motronic MED7)、奔驰(CGI)和菲亚特(JTS)众多知名汽车厂商的追捧。另外,新君越3.0 SIDI发动机加持了全新第三代缸内直喷技术,动力更为强劲。新的缸内直喷能够将汽油准确地从汽缸顶部喷入汽缸内部,从而完善燃烧。这是一项精密的燃油喷射技术,需要超精密的设计加工,并以数百Pa的压力压入汽缸,它改变了传统发动机进气道喷...
SIDI 是智能直喷发动机技术,而以皇冠为例的3.0LVVT是可变气门正时技术,同为3.0升,却是有着不同优势的发动机。这两种技术均可以是发动机的燃油经济型有所提高。
我个人认为,国际上越来越多的发动机采用直喷技术,这既与相关信息厂家的技术有关也与理念有关,再就是与国内的油品有关系,直喷发动机对油品的要求很高。
VVT发动机是很多发动机都采取的技术,尤其在日系车上,只是叫法有不同。
以下是新君越发动机的内容,供参考
新君越采用3.0升SIDI智能直喷V6发动机,这款发动机在依靠新技术提升汽车的动力性能以及降低燃油消耗和排放方面,都取得了突破性的进展。单SIDI发动机的燃油直喷技术而言,可以给发动机带来更高的效率却不会损耗更多的能源,因而曾经得到包括博世(Motronic MED7)、奔驰(CGI)和菲亚特(JTS)众多知名汽车厂商的追捧。另外,新君越3.0 SIDI发动机加持了全新第三代缸内直喷技术,动力更为强劲。新的缸内直喷能够将汽油准确地从汽缸顶部喷入汽缸内部,从而完善燃烧。这是一项精密的燃油喷射技术,需要超精密的设计加工,并以数百Pa的压力压入汽缸,它改变了传统发动机进气道喷射的方式,使燃烧更加精准,控制更加严密。
  体现发动机品质高低主要是看动力性和经济性,也就是说发动机要具有较好的功率、良好的加速性和较低的燃料消耗量。作为更新一代的发动机技术,别克新君越SIDI发动机却似乎更有引以为豪的资本。SIDI发动机相比其它同排量发动机,功率提升了15%以上,扭矩增加了8%,而油耗反倒下降3%,二氧化碳排放更减少25%。这些都是SIDI缸内直喷技术引以为豪的数字。在环保问题日益突出的大背景,这确实是一个值得欣喜的数字。
尊敬的用户您好:
3.0L.V6 SIDI智能直喷发动机相比3.0L.V6 VVT发动机是两种完全不同的发动机。
新君越上应用的SIDI是通用最新一代的 双VV...
一般变速器都是看最高承载扭矩的
跟功率关系不大
既然要专家阐述,那么我就给你说多点:别克其车辆的热卖,完全归功于上海通用优秀的品牌营销!对于这个品牌在刚进入中国市场时,中国的消费者就对其漂亮的标志深感兴趣,在...
不应该这么多人民币。是什么原因出的问题?
尊敬的用户你好:
如果在平整的路面上,方向盘有明显的抖动,或是与同款车有明显区别。建议检查轮胎或轮毂的跳动量,有时候外力导致的变形也会造成抖动的产生。
希望上述...
答: 10.78万 - 15.38万
答: 汽车的保养也是要靠自己慢慢积累经验的。一、汽车生命周期分为以下阶段奔腾期车子的头两年,是生命的“奔腾期”,有些质量不过硬的车,“奔腾”期只能保持一年左右。所以,...
答: 网上过低的报价在实际交易中可能存在附加条件。
答: 你好.这个问题一般有两种.1.散热网不是正厂的.造成散热效果不好系统会高压.2.系统冷冻油.和雪种严重超量.也会造成系统高温.高压,检查这两种.你会成功的。
答: 一般.空间大,动力调教较高,但排量不大,扭距略不足,油耗高,市场占有率不高.同等价格推荐速腾迈腾涡轮增压系列.
如何洗衣服?也许有人会说,衣服谁不会洗啊?放到水里,加点洗衣粉洗就成了呗。是啊,说是这样说,可是洗衣服还有不少学问呢。我就说说我的“洗衣经”吧。
说起洗衣服,想想真有不少要说的呢。
首先要分开洗。内衣外衣、深色浅色要分开。个人和个人的衣物也尽量分开洗涤,这样可以防止不同人体间细菌和病菌的相互交叉感染,尤其是宿舍或者朋友的衣服尽量不要放置在一起洗。即使是自己的衣服,内衣和外衣也要分开洗。因为外衣接触外界的污染和尘土较多,而内衣将直接接触皮肤,为避免外界尘螨等对皮肤的不良入侵,内外分开洗涤是有科学道理的。不同颜色的衣物要分开洗涤,可将颜色相近的一同洗涤,浅色的一起洗涤,容易掉色的单独洗涤,避免衣物因脱色而损坏。另外,袜子和其他衣物不要一起洗涤。
其次,使用洗衣粉宜提浸泡一会。洗衣粉功效的发挥不同于肥皂,只有衣物适时浸泡才能发挥最大的洗涤效果。浸泡时间也不宜太长,一般20分钟左右。时间太长,洗涤效果也不好,而且衣物易褶皱。有人洗衣服时把洗衣粉直接撒在衣物上便开始搓揉洗涤,那样不能发挥最好的洗涤效果,对洗衣粉是一种浪费,当然,免浸泡洗衣粉出外。另外,冬季一般宜使用温水浸泡衣物。水温过低,不能有效发挥洗衣粉的洗涤效果,水温太高,会破坏洗衣粉中的活性成分,也不利于洗涤。
再次,衣物及时更换,及时洗涤。衣服要及时更换,相信道理大家应该都很清楚。可是,衣物换下后应该及时清洗,有人却做的不好。好多家庭喜欢将换的衣服积攒起来,每周洗一次,这样很不科学,容易使衣物上积聚的细菌大量繁殖,容易诱发皮疹或皮肤瘙痒症状。为了个人和家人的身体健康,还是勤快一点,把及时换下的衣物及时洗涤,这样,其实也费不了多少时间,也不至于最后要花费半天甚至更长 的时间专门来洗涤大量的衣物要节约的多。另外衣服穿的太久就比较脏,要花很大的力气洗涤才能洗干净,也容易将衣物搓揉变形,而影响美观和穿着效果。
洗衣服是个简单的小家务,也是生活中不可缺少的一件事,学问却很多,也许您的“洗衣心得”比这还要科学,还要多样,欢迎您 的指正~~
关于三国武将的排名在玩家中颇有争论,其实真正熟读三国的人应该知道关于三国武将的排名早有定论,头十位依次为:
头吕(吕布)二赵(赵云)三典韦,四关(关羽)五许(许楮)六张飞,七马(马超)八颜(颜良)九文丑,老将黄忠排末位。
关于这个排名大家最具疑问的恐怕是关羽了,这里我给大家细细道来。赵云就不用多说了,魏军中七进七出不说武功,体力也是超强了。而枪法有六和之说,赵云占了个气,也就是枪法的鼻祖了,其武学造诣可见一斑。至于典韦,单凭他和许楮两人就能战住吕布,武功应该比三英中的关羽要强吧。
其实单论武功除吕布外大家都差不多。论战功关羽斩颜良是因为颜良抢军马已经得手正在后撤,并不想与人交手,没想到赤兔马快,被从后背赶上斩之;文丑就更冤了,他是受了委托来招降关羽的,并没想着交手,结果话没说完关羽的刀就到了。只是由于过去封建统治者的需要后来将关羽神话化了,就连日本人也很崇拜他,只不过在日本的关公形象是扎着日式头巾的。
张飞、许楮、马超的排名比较有意思,按理说他们斗得势均力敌都没分出上下,而古人的解释是按照他们谁先脱的衣服谁就厉害!有点搞笑呦。十名以后的排名笔者忘记了,好象第11个是张辽。最后需要说明的是我们现在通常看到的《三国演义》已是多次修改过的版本,笔者看过一套更早的版本,有些细节不太一样。
有可能搓纸轮需要清洗一下了,如果清洗了还是不行的话,那估计需要更换搓纸组件了
tann转成假名就是たん,拼音的话,相当于tang吧……
bakka转成假名是ばっか
kkou转成假名是っこう
benn转成假名是べん
kyo转成假名是きょ
系统学过五十音的话,看罗马音就能直接读了。用拼音来学是不合适的,有些发音没法用拼音标的。
P.S.罗马音里,“nn”就是波音“ん”,“kka”是前面带促音小写“っ”的“か”,同理“tta”就等于“った”。
考虑是由于天气比较干燥和身体上火导致的,建议不要吃香辣和煎炸的食物,多喝水,多吃点水果,不能吃牛肉和海鱼。可以服用(穿心莲片,维生素b2和b6)。也可以服用一些中药,如清热解毒的。
确实没有偿还能力的,应当与贷款机构进行协商,宽展还款期间或者分期归还; 如果贷款机构起诉到法院胜诉之后,在履行期未履行法院判决,会申请法院强制执行; 法院在受理强制执行时,会依法查询贷款人名下的房产、车辆、证券和存款;贷款人名下没有可供执行的财产而又拒绝履行法院的生效判决,则有逾期还款等负面信息记录在个人的信用报告中并被限制高消费及出入境,甚至有可能会被司法拘留。
第一步:教育引导
不同年龄阶段的孩子“吮指癖”的原因不尽相同,但于力认为,如果没有什么异常的症状,应该以教育引导为首要方式,并注意经常帮孩子洗手,以防细菌入侵引起胃肠道感染。
第二步:转移注意力
比起严厉指责、打骂,转移注意力是一种明智的做法。比如,多让孩子进行动手游戏,让他双手都不得闲,或者用其他的玩具吸引他,还可以多带孩子出去游玩,让他在五彩缤纷的世界里获得知识,增长见识,逐渐忘记原来的坏习惯。对于小婴儿,还可以做个小布手套,或者用纱布缠住手指,直接防止他吃手。但是,不主张给孩子手指上“涂味”,比如黄连水、辣椒水等,以免影响孩子的胃口,黄连有清热解毒的功效,吃多了还可导致腹泻、呕吐。
合肥政务区网络广告推广网络推广哪家公司比较好 一套能在互联网上跑业务的系统,被网络营销专家赞为目前最 有效的网络推广方式!
1、搜索引擎营销:分两种SEO和PPC,即搜索引擎优化,是通过对网站结构、高质量的网站主题内容、丰富而有价值的相关性外部链接进行优化而使网站为用户及搜索引擎更加友好,以获得在搜索引擎上的优势排名为网站引入流量。
良工拥有十多位资深制冷维修工程师,十二年生产与制造经验,技术力量雄厚,配有先进的测试仪器,建有系列低温测试设备,备有充足的零部件,包括大量品牌的压缩机,冷凝器,蒸发器,水泵,膨胀阀等备品库,能为客户提供迅捷,优质的工业冷水机及模温机维修和保养。
楼主,龙德教育就挺好的,你可以去试试,我们家孩子一直在龙德教育补习的,我觉得还不错。
成人可以学爵士舞。不过对柔软度的拒绝比较大。  不论跳什么舞,如果要跳得美,身体的柔软度必须要好,否则无法充分发挥出理应的线条美感,爵士舞也不值得注意。在展开暖身的弯曲动作必须注意,不适合在身体肌肉未几乎和暖前用弹振形式来做弯曲,否则更容易弄巧反拙,骨折肌肉。用静态方式弯曲较安全,不过也较必须耐性。柔软度的锻炼动作之幅度更不该超过疼痛的地步,肌肉有向上的感觉即可,动作(角度)保持的时间可由10馀秒至30-40秒平均,时间愈长对肌肉及关节附近的联结的组织之负荷也愈高。
正在加载...
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415今题广告热线
021- 转分机 8028
021- 转分机 8020
周一至周五 早九点至晚六点
广州区域快速选择:
广州工商注册相关标签:
广州工商注册周边城市:
热门工商注册城市:
广州工商注册最新信息:
今题网广州工商注册欢迎您访问和使用广州工商注册信息。今题网广州工商注册平台为本地区网友免费提供工商注册查询信息,您也可以在这里免费发布广州工商注册的信息或刊登广州工商注册信息的置顶广告。您可以在广州工商注册平台发布工商年检 , 公司注册 , 海外公司注册 , 商标注册 , 申请书刊号 , 香港公司注册 , 专利注册 , 专项审批 , 其他注册等工商注册类目信息。为了您方便查看,请访问今题移动版的广州工商注册平台。
© 2018 Jinti.com. All rights reserved. & 版权所有 今题网 & 未经许可,不得转载
吴老师 (北京)
联系时请一定说明在今题网看到的,谢谢!
微信扫一扫
快速拨打电话
还没有关注今题网?
芒果积分和精美奖品等你拿!L.S注册过商标吗?还有哪些分类可以注册?_百度知道
L.S注册过商标吗?还有哪些分类可以注册?
我有更好的答案
L.S商标总申请量8件其中已成功注册0件,有6件正在申请中,无效注册1件,0件在售中。经八戒知识产权统计,L.S还可以注册以下商标分类:第1类(化学制剂、肥料)第2类(颜料油漆、染料、防腐制品)第4类(能源、燃料、油脂)第5类(药品、卫生用品、营养品)第6类(金属制品、金属建材、金属材料)第8类(手动器具(小型)、餐具、冷兵器)第10类(医疗器械、医疗用品、成人用品)第11类(照明洁具、冷热设备、消毒净化)第12类(运输工具、运载工具零部件)第13类(军火、烟火、个人防护喷雾)第15类(乐器、乐器辅助用品及配件)第16类(纸品、办公用品、文具教具)第17类(橡胶制品、绝缘隔热隔音材料)第18类(箱包、皮革皮具、伞具)第20类(家具、家具部件、软垫)第22类(绳缆、遮蓬、袋子)第23类(纱、线、丝)第24类(纺织品、床上用品、毛巾)第25类(服装、鞋帽、袜子手套)第26类(饰品、假发、纽扣拉链)第27类(地毯、席垫、墙纸)第28类(玩具、体育健身器材、钓具)第29类(熟食、肉蛋奶、食用油)第30类(面点、调味品、饮品)第31类(生鲜、动植物、饲料种子)第32类(啤酒、不含酒精的饮料)第33类(酒、含酒精饮料)第34类(烟草、烟具)第36类(金融事务、不动产管理、典当担保)第37类(建筑、室内装修、维修维护)第38类(电信、通讯服务)第39类(运输仓储、能源分配、旅行服务)第40类(材料加工、印刷、污物处理)第41类(教育培训、文体活动、娱乐服务)第42类(研发质控、IT服务、建筑咨询)第43类(餐饮住宿、养老托儿、动物食宿)第44类(医疗、美容、园艺)第45类(安保法律、婚礼家政、社会服务)
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。F&L FOOT AND LEG注册过商标吗?还有哪些分类可以注册?_百度知道
F&L FOOT AND LEG注册过商标吗?还有哪些分类可以注册?
我有更好的答案
F&L FOOT AND LEG商标总申请量28件其中已成功注册0件,有26件正在申请中,无效注册2件,0件在售中。经八戒知识产权统计,F&L FOOT AND LEG还可以注册以下商标分类:第25类(服装、鞋帽、袜子手套)第29类(熟食、肉蛋奶、食用油)第30类(面点、调味品、饮品)第31类(生鲜、动植物、饲料种子)第32类(啤酒、不含酒精的饮料)第33类(酒、含酒精饮料)第34类(烟草、烟具)第35类(广告、商业管理、市场营销)第36类(金融事务、不动产管理、典当担保)第37类(建筑、室内装修、维修维护)第38类(电信、通讯服务)第39类(运输仓储、能源分配、旅行服务)第40类(材料加工、印刷、污物处理)第41类(教育培训、文体活动、娱乐服务)第42类(研发质控、IT服务、建筑咨询)第43类(餐饮住宿、养老托儿、动物食宿)第44类(医疗、美容、园艺)
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。posts - 113,&
comments - 9,&
trackbacks - 0
最早的一个学习笔记,时间过去了久了,供java web初学者参考。
JTSL/EL Expression学习安排
学习目标:掌握几个常见标签的使用,通晓工作原理,详细到代码层面,遇到问题时能查得出异常,能排除异常。
学习时间:2天
a) 掌握逻辑判断标签&c:if&,&c:choose&,&c:when&,&c:otherwise&
b) 掌握EL表达式页面隐式对象:requestScope,sessionScope,pageScope,pageContext,applicationScope,param等几个常见对象在不同场景下的使用,
& & 了解paramValues,header,headerValues,cookie,initParam的用法
c) 掌握几个程序流控制标签&:catch&&c:redirect&
d) 掌握&c:out&输出标签,&c:set&,&c:remove&等多用途标签
e) 掌握标签中几个常用的函数fn:contains,fn:containsIgnoreCase,fn:indexOf, fn:length,fn:substring,fn:trim
f) 掌握迭代标签的使用c:forEach,c:forTokens
g) 掌握时间格式化函数fmt:parseDate,fmt:formatDate
Servlet版本
JSTL标签库
Tomcat3.3.2
Tomcat4.1.39
Standard-1.0
已经出现,作为JSTL的一部分,必须依赖于JSTL
Standard-1.0.6
Tomcat5.5.27
Standard-1.1
可独立使用
Tomcat6.0.18
Standard-1.2
可独立使用
&标签库的下载
&Standard Taglib
JSP(tm) Standard Tag Library implementations
Apache hosts the Apache Standard Taglib, an implementation of the
specification. Various versions are available.
JSTL version
Requirements
Getting the Taglib
Standard 1.2
JSTL 1.2 (not yet JCP approved)
Servlet 2.5, JavaServer Pages 2.1
Standard 1.1
Servlet 2.4, JavaServer Pages 2.0
Standard 1.0
Servlet 2.3, JavaServer Pages 1.2
&Table 1. The EL implicit objects
Identifier
Description
pageContext
The PageContext instance corresponding to the processing of the current page
A Map associating the names and values of page-scoped attributes
requestScope
A Map associating the names and values of request-scoped attributes
sessionScope
A Map associating the names and values of session-scoped attributes
applicationScope
A Map associating the names and values of application-scoped attributes
Request parameters
A Map storing the primary values of the request parameters by name
paramValues
A Map storing all values of the request parameters as String arrays
Request headers
A Map storing the primary values of the request headers by name
headerValues
A Map storing all values of the request headers as String arrays
A Map storing the cookies accompanying the request by name
Initialization parameters
A Map storing the context initialization parameters of the Web application by name
Table 2 .Methods That the EL Invokes for You
Identifier Type
Example Use
Method Invoked
JavaBean component
${colorBean.red}
${colorBean["red"]}
colorBean.getRed()
${colorArray[2]}
${colorArray["2"]}
Array.get(colorArray, 2)
colorList[2]
colorList["2"]
colorList.get(2)
colorMap[red]
colorMap["red"]
colorMap.get(pageContext.
findAttribute("red"))
colorMap.get("red")
A Closer Look at the [] Operator
As discussed in "Accessing JavaBeans Components" on page 46 and "Accessing Objects Stored in Arrays, Lists, and Maps" on page 52, you use the [] operator with this syntax: ${identifier[subexpression]}. Here's how expressions with that syntax are evaluated:
Evaluate the identifier and the subexpression; if either resolves to null, the expression is null.
If the identifier is a bean: The subexpression is coerced to a String value and that string is regarded as a name of one of the bean's properties. The expression resolves to the va for example, the expression ${name.["lastName"]} translates into the value returned by name.getLastName().
If the identifier is an array: The subexpression is coerced to an int value—which we'll call subexpression-int—and the expression resolves to identifier[subexpression-int]. For example, for an array named colors, colors[3] represents the fourth object in the array. Because the subexpression is coerced to an int, you can also access that color like this: colors["3"]; in that case, JSTL coerces "3" into 3. That feature may seem like a very small contribution to JSTL, but because request parameters are passed as strings, it can be quite handy.
If the identifier is a list: The subexpression is also coerced to an int—which we will also call subexpression-int—and the expression resolves to the value returned from identifier.get(subexpression-int), for example: colorList[3] and colorList["3"] both resolve to the fourth element in the list.
If the identifier is a map: The subexpression is regarded as one of the map's keys. That expression is not coerced to a value because map keys can be any type of object. The expression evaluates to identifier.get(subexpression), for example, colorMap[Red] and colorMap["Red"]. The former expression is valid only if a scoped variable named Red exists in one of the four JSP scopes and was specified as a key for the map named colorMap.
JSTL1.1常用函数&
fn:contains(string,
substring)
如果参数string中包含参数substring,返回true
fn:containsIgnoreCase(string, substring)
如果参数string中包含参数substring(忽略大小写),返回true
fn:endsWith(string, suffix)
如果参数 string 以参数suffix结尾,返回true
fn:escapeXml(string)
将有特殊意义的XML (和HTML)转换为对应的XML实体字符,并返回转义后的字符
fn:indexOf(string, substring)
返回参数substring在参数string中第一次出现的位置
fn:join(array, separator)
将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。
fn:length(item)
返回参数item中包含元素的数量。参数Item类型是普通对象、数组、Collection、Map、Iterator迭代器、Enumeration枚举对象、或者String。
如果是String类型,返回值是String中的字符数。
如果是&数组类型,返回值是数组的长度。
如果是Collection容器类的子类,返回值是该容器类的包含元素的个数。
如果是Map类型,返回值是此映射中的键-值映射关系数。
如果是Iterator类型,返回值是Iterator中的元素个数。
如果是Enumeration类型,返回值是Enumeration中的元素个数
fn:replace(string, before, after)
返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果
fn:split(string, separator)
返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素
fn:startsWith(string, prefix)
如果参数string以参数prefix开头,返回true
fn:substring(string, begin, end)
返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符
fn:substringAfter(string, substring)
返回参数substring在参数string中后面的那一部分字符串
fn:substringBefore(string, substring)
返回参数substring在参数string中前面的那一部分字符串
fn:toLowerCase(string)
将参数string所有的字符变为小写,并将其返回
fn:toUpperCase(string)
将参数string所有的字符变为大写,并将其返回
fn:trim(string)
去除参数string 首尾的空格,并将其返回
&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EL隐式对象参照表
类对应关系
值所在作用域
pageContext
org.apache.jasper.runtime.PageContextImpl
PageContext&实例对应于当前页面的处理
当前jsp页面
当前页面中的Map类
与页面作用域属性的名称和值相关联的&Map&类
requestScope
org.apache.commons.el.ImplicitObjects
请求作用域中的Map类
一次请求过程
与请求作用域属性的名称和值相关联的&Map&类
sessionScope
org.apache.commons.el.ImplicitObjects
会话作用域中的Map类
一次会话过程
与会话作用域属性的名称和值相关联的&Map&类
applicationScope
org.apache.jasper.runtime.JspApplicationContextImpl
应用程序作用域的Map类
应用程序域
与应用程序作用域属性的名称和值相关联的&Map&类
org.apache.commons.el.ImplicitObjects
request.getParameterNames ()
按名称存储请求参数的主要值的&Map&类
paramValues
org.apache.commons.el.ImplicitObjects
request.getParameterValues(String)
将请求参数的所有值作为&String&数组存储的&Map&类
org.apache.commons.el.ImplicitObjects
request.getHeaderNames ()
按名称存储请求头主要值的&Map&类
headerValues
org.apache.commons.el.ImplicitObjects
request.getHeaders(String)
将请求头的所有值作为&String&数组存储的&Map&类
Javax.servlet.http.Cookie
request.getCookies ()
按名称存储请求附带的 cookie 的&Map&类
初始化参数
org.apache.commons.el.ImplicitObjects
ServletContext. getInitParameter(String)
当前web应用
按名称存储 Web 应用程序上下文初始化参数的&Map&类
&通过将字符串映射为期望作用域中的对象来将对象存储到该作用域, 然后,就可以通过提供相同字符串来从该作用域检索该对象。
& 在作用域的映射中查找字符串,并返回被映射的对象。
EL表达式查找值的方法:
&1& EL表达式常用的隐式作用域
& & &首先对页面作用域检查是否存在这样的标识符,其次对请求作用域、然后对会话作用域、最后对应用程序作用域依次进行这样的检查,然后测试该标识符的名称是否与存储在该作用域中的某个对象的名称匹配。第一个这样的匹配作为&EL&标识符的值被返回。通过这种方法,可以将&EL&标识符看作引用限制了作用域的变量。
pageContext,pageScope,requestScope,sessionScope,applicationScope
从技术方面来说,没有映射到隐式对象的标识符是用&PageContext&实例的&findAttribute()&方法求值的,该实例表示对页面的处理,在该页面上,当前正在处理用于请求的表达式。标识符的名称作为参数传递给这个方法,然后该方法依次在四个作用域中搜索具有相同名称的属性。并将所找到的第一个匹配项作为&findAttribute()&方法的值返回。如果未在这四个作用域中找到这样的属性,则返回&null。
HashMap&String,Object& map=new HashMap&String,Object&();
&&& map.put("name","张三");
&&& pageContext.setAttribute("customerScope",map);
&&&& ${customerScope.name}
&&& 表达式运算结果: 张三
2点运算符(.)和方括号运算符([])
EL&提供了两种不同的存取器(点运算符(.)和方括号运算符([])),也支持通过&EL&操作特性和元素
点运算符通常用于访问对象的特性。例如,在表达式&${user.firstName}&中,使用点运算符来访问user&标识符所引用对象的名为&firstName&的特性。EL&使用&Java&bean&约定访问对象特性,因此必须定义这个特性的&getter&方法(通常是名为&getFirstName()&的方法),以便表达式正确求值。
当被访问的特性本身是对象时,可以递归地应用点运算符。例如,如果我们虚构的&user&对象有一个实现为&Java&对象的&address&特性,那么也可以用点运算符来访问这个对象的特性。例如,表达式&${user.address.city}&将会返回这个地址对象嵌套的&city&特性。
&&&& &方括号运算符用来检索数组和集合的元素。在数组和有序集合(也即,实现了&java.util.List&接口的集合)的情况下,把要检索的元素的下标放在方括号中。例如,表达式&${urls[3]}&返回&urls&标识符所引用的数组或集合的第四个元素(和&Java&语言以及&JavaScript&中一样,EL&中的下标是从零开始的)。
&&&&& 对于实现&java.util.Map&接口的集合,方括号运算符使用关联的键查找存储在映射中的值。在方括号中指定键,并将相应的值作为表达式的值返回。例如,表达式&${commands["dir"]}&返回与commands&标识符所引用的&Map&中的&"dir"&键相关联的值。
3 .EL&运算符的优先级
EL&运算符优先级(自顶到底,从左到右)
unary&-、not、!、empty&
*、/、div、%、mod&
+、binary&-&
()&&&/code&、&、&=、&=、lt、gt、le、ge&
==、!=、eq、ne&
四种标准标签库
JSTL提供一组四个标准标记库(core核心、internationalization/format国际标准化/格式、SQL和 XML)并支持EL
函数&&&&&&&&&&&&& fn&&&&&&&& functions
库:Core(核心库)
1. &c:catch&
&c:catch&动作用于捕获JSP元素在其体中抛出的异常,从而提供细粒度的错误控制,此异常也可以保存为一个页面作用域变量。
[var="var"]&
JSP elements
&/c:catch&
是否接受动态值
&&&&&&&&&&&
&&&&&&&&&&&
var="importException"&
&fmt:parseDate value="${param.empDate}" dateStyle="short"
&/c:catch&
&c:if test="${importException != null}"&
&jsp:forward page="input.jsp"&
&jsp:param name="msg" value="Invalid date format" /&
&/jsp:forward&
2. &c:choose&
&c:choose&动作用于控制嵌套&c:when&和&c:otherwise&动作的处理,它只允许第一个测试表达式计算为true的&c:when&动作得到处理;如果所有&c:when&动作的测试表达式都计算为false,则会处理一个&c:otherwise&动作。
[var="var"]&
JSP elements
&/c:catch&
&c:choose&
&c:when test="${product.onSale}"&
${product.salesPrice} On sale!
&c:otherwise&
${product.price}
&/c:otherwise&
&/c:choose&
3. &c:forEach&
&c:forEach&动作将其体反复计算固定次数,或者针对一个集合中的每个元素分别计算一次体。当前元素(如果未指定集合则为当前索引)和迭代状态可以通过嵌套变量提供给体中的动作元素。
此动作接受属性表中所列的类型集合。当前元素的类型即为底层集合的类型,仅有两个例外。对于一个基本类型的数组,当前元素将作为相应包装类(Integer、Float等等)的一个实例提供。对于一个java.util.Map,当前元素则作为一个java.util.Map.Entry提供。
语法1:基于集合元素进行迭代
&c:forEach
items="collection" [var="var"]
[varStatus="varStatus"]
[begin="startIndex"] [end="stopIndex"]
[step="increment"]&
JSP elements
&/c:forEach&
语法2:迭代固定次数
&c:forEach
[var="var"] [varStatus="varStatus"]
begin="startIndex" end="stopIndex"
[step="increment"]&
JSP elements
&/c:forEach&
是否接受动态值
&&&&&&&&&&&
&&&&&&&&&&&
结合集合使用时的开始索引,从0计起。对于集合来说默认为0
&&&&&&&&&&&
&&&&&&&&&&&
结合集合使用时的结束索引(元素引要小于等于此结束索引),从0计起。默认为集合的最后一个元素。如果end小于begin,则根本不计算体集合,迭代即要针对此集合进行。
&&&&&&&&&&&
java.util.Collection,
java.util.Iterator, java.util.Enumeration, java.util.Map, 对象数组或基本类型数组。
集合,迭代即要针对此集合进行。
&&&&&&&&&&&
&&&&&&&&&&&
每次迭代时索引的递增值。默认为1。
&&&&&&&&&&&
&&&&&&&&&&&
保存当前元素的嵌套变量的名字。
&&&&&&&&&&&
&&&&&&&&&&&
保存LoopTagStatus对象的嵌套变量的名字。
&%-- Iterate
five times, writing 1, 2, 3, 4, 5 --%&
&c:forEach begin="1" end="5" var="current"&
${current}
&/c:forEach&
&%-- Iterate
over all request parameters --%&
&c:forEach items="${param}" var="current"&
Name: &c:out value="${current.key}" /&
Value: &c:out value="${current.value}" /&
&/c:forEach&
4. &c:forTokens&
&c:forTokens&动作对于String中的每个token(单字)计算其体一次,在String中这些token由某个所指定的分隔符相分隔。当前token和迭代状态可以通过嵌套变量提供给体中的动作元素。
&c:forTokens
items="stringOfTokens" delims="delimiters"
[var="var"] [varStatus="varStatus"]
[begin="startIndex"] [end="stopIndex"]
[step="increment"]&
JSP elements
&/c:forTokens&
是否接受动态值
&&&&&&&&&&&
&&&&&&&&&&&
一组token,迭代即要针对这些token进行
&&&&&&&&&&&
&&&&&&&&&&&
分隔符列表
&&&&&&&&&&&
&&&&&&&&&&&
保存当前元素的嵌套变量的名字
&&&&&&&&&&&
&&&&&&&&&&&
保存LoopTagStatus对象的嵌套变量的名字
&&&&&&&&&&&
&&&&&&&&&&&
开始索引,从0计起,默认为0
&&&&&&&&&&&
&&&&&&&&&&&
结束索引(小于等于此索引),从0计起。默认为最后一个token。如果end小于begin,则根本不计算体。
&&&&&&&&&&&
&&&&&&&&&&&
每次迭代时索引的递增值。默认为1。
&%-- Iterate
over tokens separated by vertical bars --%&
&c:forTokens items="${tokens}" delims="|"
var="current"&
&c:out value="${current }" /&
&/c:forTokens&
&c:if&动作仅当所指定的表达式计算为true时才计算其体。计算结果也可以保存为一个作用域Boolean变量。
语法1:没有体
test="booleanExpression "
& var="var " [scope="page
|request|session|application"]/&
语法2:有体
test="booleanExpression"&
& JSP elements
是否接受动态值&
&&&&&&&&&&&
&&&&&&&&&&&
测试表达式&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
变量作用域
test="${empty param.empDate}"&
&jsp:forward
page="input.jsp"&
&jsp:param
name="msg" value="Missing the Employment Date" /&
&/jsp:forward&
要理解当前JSTL对EL支持的状态,让我们检查相关的说明书是怎样处理的。Java说明书请求(JSR)专家组成员决定:由于某种原因,EL规范说明应该是JSP说明书的一部份,而不是JSTL说明书的一部分。EL完整的说明书成为JSP2.0的一部分。因为JSTL1.0在JSP1.3之前已经完成,JSTL作者不得不对用于JSTL1.0的EL支持实现做一个合理的猜测(结果可能是相当好的)。一个JSTL维护版本将与JSP1.3说明书保持一致,并为了使EL适合JSP1.3说明书,JSTL维护版本做了一些修正。
另附一些用法(以下内容一部分转载自网络,一部分原创)&&
pageContext
请求参数:${pageContext.request.queryString}
绝对路径:${pageContext.request.requestURL}:http://localhost/jstl/pages/MyJsp.jsp
工程名(相对路径):${pageContext.request.contextPath}:/jstl
请求方法:${pageContext.request.method}:GET
HTTP版本:${pageContext.request.protocol}:HTTP/1.1
远程计算机用户名:${pageContext.request.remoteUser}:
${pageContext.request.remotePort}:2067
本地开设的服务器端口:${pageContext.request.localPort}:81
${pageContext.request.scheme}:http
远程计算机名:${pageContext.request.remoteHost}:127.0.0.1
IP地址:${pageContext.request.remoteAddr
}:127.0.0.1
session状态:${pageContext.session.new}:true
session编号:${pageContext.session.id}:00EB0C44178CCEAABA2E
HTTP连接头部的host值 :${header["host"]}
HTTP头部的accept值:${header["accept"]}
HTTP头部的user-agent值:${header["user-agent"]}
表达式 ${param.name} 相当于 request.getParameter (name)
表达式 ${paramvalues.name) 相当于 request.getParamterValues(name)
表达式 ${header.name} 相当于 request.getHeader(name)
表达式 ${headerValues.name} 相当于 request.getHeaderValues(name)
表达式 ${cookie.name.value} 返回带有特定名称的第一个 cookie 值
初始化参数
${initParam . name}&&& name 是你在web.xml 文件中配置的初始化参数
将上下文初始化参数名称映射到单个值(通过调用 ServletContext.getInitparameter(String name) 获得)
requestScope
在页面请求时将javaBean一起传递
只在使用&jsp:forward& 时有效,当页面使用sendRedirect时不会传递
任何出现在EL 表达式中的变量(除了上面的内置对象),都会被容器认为是在引用存储在某个作用域中的对象,可以这样认为,变量是某个作用域的属性,当EL 中出现了一个变量时,EL将到作用域中去找与它同名的属性,然后将值映射给变量EL语言中的变量与其他语言中的变量的权限和作用是不一样的
EL 中的变量是不能够赋予新值的
EL中的变量只能与某一个作用域相关联
将会在作用域中查找,顺序是:
pageScope,requestScope,sessionScope,applicationScope
jsp页面9大隐式对象与el表达式11个隐式对象的比较
EL表达式 11个隐式对象及其功能的简单描述如下
●& pageContext:用于该网页的pageContext对象
●& pageScope,
requestScope, sessionScope, 和
applicationScope:这些是映射这些范围的每一个变量到值上的Map集。
●& param 和 paramValues:用页访问传递的参数,与在JSP中一样
●& header 和 headerValues:用页请求传递的头,与在JSP中一样
●& cookie& Map映射cookie程序到特定的cookie对象上
● &config
个隐式对象及其功能的简单描述如下:
application 是使用范围最广的上下文状态。它允许 JSP 页面的 servlet 与包括在同一应用程序中的任何 Web 组件共享信息。
config 允许将初始化数据传递给一个 JSP 页面的 servlet。
exception include 含有只能由指定的 JSP“error pages”访问的异常数据。
out 提供对 servlet 的输出流的访问。
page 是JSP页面的处理当前请求的 servlet 的实例。一般来说,JSP 页面作者不使用该对象。
pageContext 是 JSP 页面本身的上下文。它提供惟一一个 API 来管理具有不同作用域的属性。这个 API 在实现 JSP 自定义标记处理程序时使用得非常多。
request 提供对 HTTP 请求数据的访问,同时还提供用于加入特定于请求的数据的上下文。
response 允许直接访问 HTTPServletResponse 对象,JSP 程序员很少使用该对象。
session 可能是状态管理上下文中使用得最多的对象。“会话”的概念是指单个用户与 Web 应用程序在几个请求上进行交互。
&&&&&&&& 虽然有些隐式对象只提供单一的功能,但是几个结合起来使用就可以提供多种功能。在接下来的一节里,我们将按照功能分类来考察隐式对象:
会话管理:
application , session , request , pageContext
流控制: application , config ,
pageContext , request , session
日志记录和异常:
application , config , exception , pageContext , request , session
输入/输出控制: request , response , out
初始化参数: config
为 JSP 定义的四个隐式对象可以用来在一个特定的上下文或者作用域中加入有状态数据。这四个对象是 application 、 session 、 request 和 pageContext 。下表列出了这四个对象和它们定义的状态上下文,同时还给出了对每个对象的简单描述。
表1. JSP 状态管理
javax.servlet.ServletContext
application
代表整个运行时的 Web 模块(应用程序)。作用域为 application 的数据在同一个应用程序模块的所有 Web 组件之间共享。这很像J2EE 中提供的“全局(global)”数据
javax.servlet.http.HttpSession
代表当前的 HTTP 会话。除 page 作用域外, session 作用域是使用最普遍的上下文。这个对象在提供跨多个请求的持久的、有状态的用户体验方面使用得最普遍
javax.servlet.http.HttpServletRequest
代表当前的 HTTP 请求。这个上下文可以跨越多个 Web 组件(servlet 和 JSP 页面),只要这些组件属于同一原子请求的一部分。由客户机提供的特定于请求的数据(请求方法、URI、HTTP 参数等等)都被自动地保存在一个 request
上下文中。servlet 或 JSP 页面还可以程式化地(programmatically)将数据的作用域指定为 request ,以便允许同一 request
作用域中的其他 servlet 或 JSP 页面可以获取该数据
javax.servlet.jsp.PageContext
代表当前 JSP 页面的上下文。因为一个 JSP 页面的上下文包括当前的请求、会话和应用程序,所以使用 pageContext 实例可以访问与一个JSP 页面相关的所有命名空间。它是所有对象的默认作用域,包括 JavaBeas 对象在内。 具有 page 作用域的对象通常会绑定到一个局部变量,以便在 scriptlet、表达式、JavaBeans 标记和自定义标记中可以访问它
从最佳实践的立场来看,我们应该尽可能地使用 page 作用域。它简单,而且是 JSP 数据的默认作用域。 request 作用域非常适合于运行期间在组件间共享数据以处理一个特定的请求。 session 作用域被设计用来为单个用户提供持久的、有状态的体验,它可以跨越多个请求。 application 作用域只有需要在组件之间跨用户会话共享数据时才应该使用。参阅 以了解更多有关 session 作用域的信息。
面向对象设计方法的最大好处是可重用性。特别是,J2EE 系统将它们借用到模块化风格的开发中,其中组件可以在其他应用程序中重新安排、重新打包和重新使用。即使您对设计可重用的 Web 模块不感兴趣,也很可能会发现您的 J2EE 应用程序由几个部分组成。任何时候使用多个 servlet 或者 JSP 页面(也就是组件)完成一个请求的时候,都需要使用某种类型的流控制技术。Servlet 架构提供两种这样的技术:forward(转发) 和 include(包括)。
在 J2EE Web 开发中, forward会把处理用户请求的控制权转交给到其他 Web 组件。forward 在有些时候会比较有用,比如说需要用一个组件设置一些 JavaBean、打开或关闭资源、认证用户,或者在将控制权传递给下一个组件之前需要执行一些准备工作。在转发之前可以执行很多类型的任务,但是要转发的组件不能设置响应头部信息,也不能有内容发送到输出缓冲区。所有与向客户发送内容直接相关的任务必须由被转发的组件完成。
J2EE 中第二种流控制技术是 include。在使用 forward 时,要传递控制权。与此不同的是,执行 include 的组件维持对请求的控制权,而只是简单地请求将另一个组件的输出包括在该页面的某个特定的地方。对于常见的设计元素,例如页首、页脚和导航栏等,这是一个非常好的方法。
forward 和 include 都是通过一个专门的对象
java.servlet.RequestDispatcher 来完成的。简单地调用一个 ServletContext 对象的
getRequestDispatcher() 方法就可以获得一个 RequestDispatcher 对象。得到对 ServletContext 对象的引用有几种方法,我们可以:
使用隐式声明的
application 变量,因为它的类型本身已经是 ServletContext。
调用方法 getServletContext() ,该方法返回一个对隐式声明的 application 变量的引用。
调用隐式声明的 config 变量的 g etServletContext() 方法 。
调用隐式声明的
pageContext 变量的 getServletContext() 方法 。
调用隐式声明的 request 变量的 getServletContext() 方法 。
调用隐式声明的 session 变量的 getServletContext() 方法 。
清单1给出了使用隐式变量 application 的 forward 流控制机制的代码示例。
清单1. forward 流控制示例
javax.servlet.RequestD
/* Obtain a reference to a RequestDispatcher object via the implicit
&&&& application variable*/
rd = application.getRequestDispatcher( "/NextPage.jsp" );
/* Perform the forward specified by the RequestDispatcher
&&&& and pass along a reference to the current request and
&&&& response objects */
rd.forward( request, response );
清单2给出了同样使用变量 application 的 include 流控制的代码示例。
清单2. include 流控制示例
javax.servlet.RequestD
/* Obtain a reference to a RequestDispatcher object via the implicit
&&&& application variable*/
rd = application.getRequestDispatcher( "/Header.jsp" );
/* Perform the include specified by the RequestDispatcher
&&&& and pass along a reference to the current request and
&&&& response objects */
rd.include( request, response );
forward 和 include 是添加到 J2EE Web 开发工具包中的两个非常棒的技术。还有其他一些方法可以在 JSP 页面中完成 include,而且还有很多解决 J2EE 设计模式方面的文献中讲到了如何结合使用这两种技术。参阅 以了解更多信息。
日志记录和异常
如果您需要把与 Web 应用程序相关的信息存储到一个日志中,依然有内建的方法可用。 ServletContext 接口声明了两个方法,用于把数据传给一个日志。其中一个方法接受简单的文本消息: log( java.lang.String ) ,另一个方法接受一个异常信息和一个文本消息: log(java.lang.Throwable, java.lang.String ) 。
在有了 ServletContext 接口提供的两个可用的日志记录方法之后,剩下的关键是获取一个对 ServletContext 类型的对象的引用。像我们前面讨论过的流控制对象一样,有多种方法可以获取对 ServletContext 类型的对象的引用。在获得了对象引用之后,简单地调用 log() 方法并向方法中传递必需的数据即可。一旦调用了这个方法,您当然就会希望能够查看应用程序日志以查看消息。 ServletContext 是一个简单的接口,并且也没有规定怎样实现它声明的方法。因而 log 方法的具体实现是由供应商处理的。他们可以把日志信息存储到一个文本文件、二进制文件、数据库中,或者是供应商认为合适的其他格式中。您需要从服务器的文档中得知存储日志的位置。
输入和输出控制
因为 JSP 页面仅仅是 HTTP servlet 的一个简单抽象,所以您可以访问 HttpServletRequest 和 HttpServletResponse 对象。如果需要特定于请求的信息,比如客户机浏览器的类型、HTTP post 的内容类型、客户机性能、Cookie 数据或者请求参数,简单地用隐式声明的 request 变量直接调用适当的方法即可。类似地,如果您需要设置响应头部信息,比如说浏览器类型、内容类型、内容长度等等,简单地用隐式变量 response 调用适当的方法即可。
如果需要直接访问 JSP 页面的输出流,您可能会试图通过隐式 response 变量调用 getWriter() 或 getOutputStream() 。然而由于 JSP 页面的特殊性,您不能这样做。如果需要直接访问输出流,必须通过一个 avax.servlet.jsp.JSPWriter 类型的特殊缓冲 PrintWriter 对象来访问。怎样定位这样一个对象的引用呢?JSP 容器将会为您隐式地声明一个,并通过 out 变量提供给您。在 JSP scriptlet 中可以通过简单地调用 out.print() 或 out.println() 使用它。
一般来说不需要像这样直接使用 JSPWriter 对象,而只需简单地把内容作为普通文本或者通过 JSP 表达式写入,然后允许容器将这些信息翻译成 JSPWriter 调用。然而,在两种情况下您需要直接使用 out 变量。一种情况是要为 JSP 自定义标记定义处理程序,这部分内容我们将在下个月重点讲到。另外一种情况是您想要对 JSP 创建的输出拥有更多的控制。如果您有一段夹杂着 JSP scriptlets 和表达式的 HTML,您可能会发现创建大的 scriptlet 然后在需要输出内容到客户机的时候使用 out.println() 语句这样做会更简洁、更容易。
初始化参数
如果您有一些静态数据想提供给 JSP 页面使用,并且那些数据不会频繁地改动,初始化参数可能会是一个比较好的选择。初始化参数有时候又叫环境变量或者“init”参数,这些参数通过位于一个 per-servlet/JSP 内的 Web 应用程序的 web.xml 文件指定,并且它们在servlet 的生命周期中只读取一次,即在初始化时读取。
清单3是一个初始化参数声明的例子。
初始化参数声明
&&&&&&&& &servlet&
&&&&&&&&&&&&&&&& &servlet-name&MyServlet&/servlet-name&
&&&&&&&& &&&&&&&& &servlet-class&com.gabhart.MyTestServlet&/servlet-class&
&&&&&&&&&&&&&&&& &init-param&
&&&&&&&&&&&&&&&&&&&&&&&&& &param-name&contactEmail&/param-name&
&&&&&&&&&&&&&&&&&&&&&&&&& &param-value&&/param-value&
&&&&&&&&&&&&&&&& &/init-param&
&&&&&&&& &/servlet&
使用隐式变量 config 可以访问这些参数的值,隐式变量 config 是对 JSP 页面的 ServletConfig 对象的引用。通过 ServletConfig 接口提供了两个处理 init 参数的方法。可以根据名字对一个特定的参数完成一个查找( getInitParameter( java.lang.String) ),或者也可以检索到为 JSP 页面定义的所有参数名字的一个 enumeration( getInitParameterNames() )。在拥有了enumeration 之后,可以通过循环查找每一个值。所有 init参数都是 String 对象。如果需要其他的数据类型,比如说整数、浮点数或者布尔值,必须使用相应的包装器类来解析字符串。
版本更替带来的使用习惯改变以及特性的体验
&&&&&&&& 在JSTL1.0的时候,在页面显示数据必须用&c:out&来进行,然而在JSTL1.1中,由于JSP2.0规范已经默认支持
EL表达式,因此可以直接在JSP页面使用表达式,看下面一个例子
&c:out value=“${sessionScope.anyValue}” default=“no value” escapeXml=“false”/&
在EL表达式尚未出现之前,Structs1中一直用&bean:write&输出变量内容
length -7,empty -5,foreach – 14
empty,not empty,or,and运算符
fn:length(java.lang.Object& item) 其中item可以是普通对象、数组、Collection、Map、Iterator迭代器、Enumeration枚举对象、或者String
empty item 其中item可以是普通对象、数组、List集合、Map集合、字符串
&c:forEach item=“collection”&其中collection可以是Object数组、int数组、bollean数组、byte数组、char数组、short数组、long、float数组、double数组、
Collection容器、Iterator迭代器、Enumeration枚举对象、Map容器类、以”,”为分隔符的String对象内容
重点学习org.apache.commons.el包和org.apache.taglibs.standard.lang.jstl包下面的类,并进行参照对比
EL表达式是从Servlet2.4中开始使用的
&&&&&&&&&&&&&&&&&&&&&& Everything in ELnull表示不存在的值
&&&&&&&&&&&&&&&&&&&&&& EL表达式中转移用 \
访问的属性需要具备该属性的getter/setter方法,类如Collection中的size、count方法因为相对应的getter/setter,所以无法直接调用
关键字: 版本比较
一 JSP2.0与JSP1.2比较
JSP 2.0是对JSP 1.2的升级,新增功能:
1. Expression Language
2. 新增Simple Tag和Tag File
3.web.xml新增&jsp:config&元素
特别说明web.xml.
web.xml新增&jsp:config&元素
&jsp-config& 元素主要用来设定JSP相关配置,&jsp-config& 包括&taglib&和&jsp-property-group&
(1)其中&taglib&以前的Jsp1.2中就有的,taglib主要作用是作为页面taglib标签中的uri和tld文件的一个映射关系
(2)其中&jsp-property-group&是JSP2.0种新增的元素。
&jsp-property-group& 主要包括8个子元素,它们分别是:
&jsp-property-group&
&description&
设定的说明
&/description&
&display-name&设定名称&/display-name&
&url-pattern&设定值所影响的范围&/url-pattern&
&el-ignored&若为true则不支持EL语法&/el-ignored&
&page-encoding&ISO-8859-1&/page-encoding&
&scripting-invalid& 若为true则不支持&% scripting%& 语法&/scripting-invalid&
&include-prelude&设置JSP网页的抬头,扩展名为.jspf &/include-prelude&
&include-coda&设置JSP网页的结尾,扩展名为.jspf&/include-coda&
&/jsp-property-group&
例如: 其中抬头程序:
prelude.jspf
二、Servlet个版本比较
Servlet 2.2新增功能:
引入了self-contained Web applications的概念。
2.3 新增功能:
2000年10月份出来
Servlet API 2.3中最重大的改变是增加了filters
Servlet 2.3增加了filters和filter chains的功能。引入了context和session listeners的概念,当context 或session被初始化或者被将要被释放的时候,和当向context或session中绑定属性或解除绑定的时候,可以对类进行监测。
2.4 新增功能:
2003年11月份出来
2.4加入了几个引起关注的特性,没有特别突出的新内容,而是在推敲和阐明以前存在的一些特性上花费了更多的功夫,对一些不严谨的地方进行了校验。
2.4增加了新的最低需求,监测request的新方法,处理response的新方法,新的国际化支持,RequestDispatcher的几个处理,新的request listener类,session的描述,和一个新的基于Schema的并拥有J2EE元素的发布描述符。这份文档规范全面而严格的进行了修订,除去了一些可能会影响到跨平台发布的模糊不清的因素。总而言之,这份规范增加了四个新类,七个新方法,一个新常量,不再推荐使用一个类。
1、web.xml DTD改用了XML S
Servlet 2.3之前的版本使用DTD作为部署描述文件的定义,其web.xml的格式为如下所示:
&?xml version="1.0" encoding="IS0-8859-1"?&
&!DOCTYPE web-app
PUBLIC "-//sunMicrosystems,Inc.//DTD WebApplication 2.3f//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.3.dtd"&
&/web-app&
Servlet 2.4版首次使用XML Schema定义作为部署描述文件,这样Web容器更容易校验web.xml语法。同时XML Schema提供了更好的扩充性,其web.xml中的格式如下所示:
&?xml version="1.0" encoding="UTF-8"?&
&web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:workflow="http://www.workflow.com"
xmins:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&
&/web-app&
注意: 改为Schema后主要加强了两项功能:
(1) 元素不依照顺序设定
(2) 更强大的验证机制
主要体现在:
a.检查元素的值是否为合法的值
b.检查元素的值是否为合法的文字字符或者数字字符
c.检查Servlet,Filter,EJB-ref等等元素的名称是否唯一
2.新增Filter四种设定:REQUEST、FORWARD、INCLUDE和ERROR。
3.新增Request Listener、Event和Request Attribute Listener、Enent。
4.取消SingleThreadModel接口。当Servlet实现SingleThreadModel接口时,它能确保同时间内,只能有一个thread执行此Servlet。
5.&welcome-file-list&可以为Servlet。
6.ServletRequest接口新增一些方法。
public String getLocalName()
public String getLocalAddr()
public int getLocalPort()
public int getRemotePort()
Servlet 2.5的新特征
2005年9月发布Servlet 2.5
Servlet2.5一些变化的介绍:
1) 基于最新的J2SE 5.0开发的。
2) 支持annotations 。
3) web.xml中的几处配置更加方便。
4) 去除了少数的限制。
5) 优化了一些实例
servlet的各个版本对监听器的变化有:
(1)servlet2.2和jsp1.1
新增Listener:HttpSessionBindingListener
新增Event: HttpSessionBindingEvent
(2)servlet2.3和jsp1.2
新增Listener:ServletContextListener,ServletContextAttributeListener
,HttpSessionListener,HttpSessionActivationListener,HttpSessionAttributeListener
新增Event:
ServletContextEvent,ServletContextAttributeEvent,HttpSessionEvent
(3)servlet2.4和jsp2.0
新增Listener:ServletRequestListener,ServletRequestAttribureListener
新增Event: ServletRequestEvent,ServletRequestAttributeEvent
三、J2EE规范版本比较
1.J2EE的发展
1997 年Servlet技术的产生以及紧接着JSP的产生,为Java对抗PHP,ASP等等服务器端语言带来了筹码。1998年,Sun发布了EJB1.0标准,至此J2EE平台的三个核心技术都已经出现。于是,1999年,Sun正式发布了J2EE的第一个版本。并与1999年底发布了J2EE1.2,在 2001年发布了J2EE1.3,2003年发布了J2EE1.4。
J2EE1.3的架构,其中主要包含了Applet容器,Application Client容器,Web容器和EJB容器,并且包含了Web Component,EJB Component,Application Client Component,以JMS,JAAS,JAXP,JDBC,JAF,JavaMail,JTA等等技术做为基础。
1.3中引入了几个值得注意的功能:Java消息服务(定义了JMS的一组API),J2EE连接器技术(定义了扩展J2EE服务到非J2EE应用程序的标准),XML解析器的一组Java API,Servlet2.3,JSP1.2也都进行了性能扩展与优化,全新的CMP组件模型和MDB(消息Bean)。
J2EE1.4 大体上的框架和J2EE1.3是一致的,1.4增加了对Web服务的支持,主要是Web Service,JAX-RPC,SAAJ,JAXR,还对EJB的消息传递机制进行了完善(EJB2.1),部署与管理工具的增强(JMX),以及新版本的Servlet2.4和JSP2.0使得Web应用更加容易。
5拥有许多值得关注的特性。其中之一就是新的 Java Standard Tag Library (JSTL) 1.2 规范。JSTL 1.2 的关键是统一表达式语言,它允许我们在 JavaServer Faces (JSF) 中结合使用 JSTL 的最佳特性。
四、Tomcat版本比较
Tomcat 3.x
servlet2.2和jsp1.1标准
Tomcat 4.x
Servlet 2.3 和 JSP 1.2 版本
Tomcat 5.x
Servlet 2.4或2.5 和 JSP 2.0 版本
五、JDK版本比较
已发行的版本:
版本号 名称 中文名 发布日期
JDK 1.1.4 Sparkler 宝石
JDK 1.1.5 Pumpkin 南瓜
JDK 1.1.6 Abigail 阿比盖尔--女子名
JDK 1.1.7 Brutus 布鲁图--古罗马政治家和将军
JDK 1.1.8 Chelsea 切尔西--城市名
J2SE 1.2 Playground 运动场
J2SE 1.2.1 none 无
J2SE 1.2.2 Cricket 蟋蟀
J2SE 1.3 Kestrel 美洲红隼
J2SE 1.3.1 Ladybird 瓢虫
J2SE 1.4.0 Merlin 灰背隼
J2SE 1.4.1 grasshopper 蚱蜢
J2SE 1.4.2 Mantis 螳螂
将发行的版本:
J2SE 5.0 (1.5.0) Tiger 老虎 已发布
J2SE 5.1 (1.5.1) Dragonfly 蜻蜓 未发布
J2SE 6.0 (1.6.0) Mustang 野马 已发布
阅读(...) 评论()}

我要回帖

更多关于 苏州注册商标分类 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信