友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

JSP入门教程(DOC格式)-第30章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




          

            *。jsp  

            true  

          

      

  

   



这样就会禁用所有以。jsp 后缀的请求中的 el 表达式,使用这种方式需要注意两 

点。  



    1。  jsp…property…group 标签是 jsp…2。0 中新增功能,如果你使用低版本的 

       web。xml (2。3 或以下)就不能使用这个标签了。  

    2。  设置 jsp…config 会影响 jsp 生成 servlet 的过程,如果程序修改时已经 

       有 jsp 转换成 servlet 并缓存在 work 目录下,那么修改后需要先清除缓 

       存,才能看到效果。  



实际上还有第三种方法可以禁用掉所有 jsp 中的 el 表达式,那就是把 web。xml 

定义为 2。3 版。  



  

  

  



                                      117 / 148  


…………………………………………………………Page 118……………………………………………………………

                                       



  



这个就是 13…03/WEB…INF/web。xml 的定义,定义了web…app 的版本号是 2。3,这 

样一来所有的 jsp 都无法使用 el 表达式了,因为 el 表达式是 2。4 版才开始支持 

的功能。  



注意  



说了以上三种禁用 el 表达式的方法,不是希望大家抛弃 el 表达式,相反是希望 

大家在自己编写 el 时出现问题时,先去考虑是否有人在这三个地方做了设置造 

成 el 表达式的失效。建议大家多多使用 el 表达式,少用一些 jsp 中的 scriptlet 

代码。  



13。2。 作用域  



使用 el 的时候,默认会以一定顺序搜索四个作用域,将最先找到的变量值显示 

出来。  



                                                                              



如果我们有{username}这样一个正则表达式,它回去依次调用 

pageContext。getAttribute(〃username〃) …》  

request。getAttribute(〃username〃) …》 session。getAttribute(〃username〃)  

…》 application。getAttribute(〃username〃),只要找到某一个不为空的值就立 

刻返回。  



这样的确方便我们的操作,但是随之也出现了另外一个问题,如果 pageContext 

和 request 中有同名变量,但是我想取得request 中的变量该如何是好呢?这就 

需要为 el 表达式引入作用域的概念了。  



{pageScope。username}  

  

{requestScope。username}  



我们可以直接访问 13…04 这个应用,看看 el 表达式支持的所有对象。  



                                    118 / 148  


…………………………………………………………Page 119……………………………………………………………

                                                     



                                                                                                       



下面我们分别对每个作用域对象进行讲解。  



表 13。1。 el 中的作用域  



  el 中的作用域                                   对应关系  



  pageContext                      当前页的 pageContext 对象  



    pageScope           把 page 作用域中的数据映射为一个 map 对象  



  requestScope         把 request 作用域中的数据映射为一个 map 对象  



   sessionScope        把 session 作用域中的数据映射为一个 map 对象  



 applicationScope  把 application 作用域中的数据映射为一个 map 对象  



      param                        对应 request。getParameter()  



  paramValues                  对应 request。getParameterValues()  



     header                         对应 request。getHeader()  



   headerValues                  对应 request。getHeaderValues()  



     cookie                         对应 request。getCookies()  



    initParam                 对应 ServletContext。getInitParamter()  



                                                 119 / 148  


…………………………………………………………Page 120……………………………………………………………

                                    



  



  例子中的{pageContext。request。contextPath}返回的是 

request。getContextPath()的值,在此例中就是/13…04,我们经常使用这个 

来拼接 jsp 中的绝对路径。  



这里的{pageContext。request。contextPath}是一种特殊用法,不能使用 

{request。contextPath}的形式替代。  



  pageScope; requestScope; sessionScope; appliationScope 都可以看作是 

Map 型变量,调用其中的数据可以使用{pageScope。name}或 

{pageScope'〃name〃'}的形式,这两种写法是等价的。  



在某些情况下只能使用{pageScope'〃content…type〃'},这里不能写成 

{pageScope。content…type},jsp 无法解析连字符(…)会出现错误。  



  需要注意的是{paramValues。name}得到的是一个字符串数组,如果需要获 

得其中某个值,还需要使用{paramValues。name'0'}指定数组中的索引。  



这与下面的{headerValues。name}是相似的。  



  {header。name}会取得 http 请求中的 header 参数,现实工作中很少用到这 

里的数据。  



例子中使用 Host 是指请求访问的主机地址,包括 ip 和端口号。而 Referer 

比较有趣,如果用户通过超链接跳转过来的,Referer 会保存上次访问页面 

的地址,我们就可以通过它来统计哪些用户是从哪里转来的了。  



  {cookie。name}将获得对应 cookie 的对象,比如我们用 jsp 将一段 cookie 

发送给客户端。  



Cookie cookie = new Cookie(〃username〃; 〃Username in cookie〃);  

response。addCookie(cookie);  



创建一个名称为 username,值为〃Username in cookie〃的Cookie 对象,然 

后发送给客户端。  



然后我们就可以使用{cookie。username}获得这个 cookie 了, 

{cookie。username。name}获得 cookie 名称,{cookie。username。value}获 

得 cookie 值。  



  ServletContext。getInitParamter()指的应用的初始变量,这些变量都是定 

义在 web。xml 中的。  



  

    username  

    username with context param  



                                 120 / 148  


…………………………………………………………Page 121……………………………………………………………

                                             



       



    {initParam。username}就会得到这里的变量值。  



以上都是死记硬背的东西,建议实际用到的时候翻看一下就好了,演示代码都放 

在 13…04 下,为了获得 param 和 cookie 还要点击一下最下边的连接才可以。  



13。3。 运算符  



el 表达式中支持 java 中所有的操作符,并且还有一些扩展,下面我们简要做一 

下对照。  



表 13。2。 加减乘除四则运算  



   符号   说明  



    +       加  



          减  



    *       乘  



  /或 div    除
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!