zoukankan      html  css  js  c++  java
  • 无脚本的jsp(动作,EL)

       无脚本jsp的必要?

              在实际开发中web设计人员很可能不太懂Java语言,而在jsp中Java作为脚本使用,这样就造成不便。我们应该使用一些web设计人员容易接受的"脚本",javaweb2.0就出现了EL,JSTE来替换java脚本(srciptlet,声明等)。

       1  jsp动作元素

                (1) <jsp:useBean id="p" type="person" class="person" scope="request"/>

                      id:属性名;type:id类型 ; class:bean对象类型; scope:属性作用域

                 这个标准动作转换成servlet是什么样子的?

                    
                       person p=null;//person是type属性对应的类型。 p是 id
    
                       p= (person)request.getAttribute("p");//判断这个id存不存在,(person)->type类型
    
                       if(p==null){
    
    //为空的话,设置一个id对应的属性
    
                      p=request.setAttribute("p",new person());//new person()是class对应类型
    
     }
    

                 结论:id就是一个实例的引用(bean),通过id可获取性质(成员变量),要知道bean有getXX(),setXX();

                 

                

    (2) <jsp:setProperty name="p" property="username" vlaues="xiaoming"/>//设置属性值,name是useBean的id;

                  (3)<jsp:getProperty name="p" property="uername"/>//获取username属性值xiaoming

                这几个有什么用?

                     接收servlet中的bean,在jsp中获取bean对象的性质(成员变量),比较遗憾的是:bean对象的性质这可以是String或者基本数据类型,username性质假设是一个Object,会显示什么?地址值

               那么我们应该怎么办?

    --------------------------------------------------------------------------------------------------------------------------------------------------

           2 EL(expression language)表达式语言

                 语法${//content}

                (1)EL的出现,个人以为可以不再使用前面几个动作, 我们可以这样替换

                servlet中:

                 person user=new person();user.setName("xiaoming"); request.setAttribute("p",user);

                request.setAttribute("xx","hello EL");

                jsp中接收:

                ${p.username}  //username是person的性质

                ${xx}//hello EL,简单吧!

               (2)属性(Javabean实例)中性质也是对象怎么办

                假设上面username是一个对象(有个a性质 a="xin"),那么${p.username.a}//得到xin

               从上面可以看出,EL随随便便搞定啊

          3 EL中的二个重要的操作符

                (1).操作符

                   . 有二种格式(没有第三种)

                   map.key

                   javabean.property

                   说明:右边必须是合法的标识符(和定义变量同理),比如:map集合中有一个key="1",map.1是错误的,不合法。

                   使用:jsp接受的一般都是javabean数据或者“数据包”(集合,数组)。“.”可以处理的是Javabean和map,但list集合和一般的数组他是处理不了。后面还有一个[]操作符,功能更加多。由于jsp处理的数据map和Javabean较多,“.”简单实用,所以EL中用的频率很高       

                  (2)[]操作符

                     "."可以做的事情,[]都可以完成。"."比较简便,可以使用"."尽量使用(个人喜好)。[]操作符处理下面几种“.”没完成的操作

                        key不是合法标识符;${map["1"]}没问题

                         list和数组集合,${arrayList["name"] }

                       注意:[]里面获取要使用" "符号,也不要使用";"符号结束

            4 内置对象

                    (1)有哪些对象

                         第一类: requestScope,pageScope,sessionScope,applicationScrope   -- 作用域属性的map

                         第二类:param,paramVlaues  -- 请求参数的map

                         第三类:cookie --cookie的map

                         第四类:initParam-- 上下文初始化参数的map

                         第五类:pageContext  --Javabean对象的一个引用。

                         简单说一下:  所谓"请求参数的map",就是把所有的请求参数保存在这个map集合中。

                    (2)一个例子:

                   在servlet中:

                           request.setAttibute("attri","12");

                    在jsp中 ${attri}就直接拿到值12;

                      你会不会这么想?session,servletContext的属性这么获取?

                       执行${attri}时,按顺序在 pageScope,requestScope,sessionScope,applicationScrope属性中找。 意思就是: session,servletContent(application)中的属性也一样获取。在这里${attri}效果等价于${requestScope.attri}

                    (3)获取session,servletContext属性

                     ${sessionScope.property}    ${applicationScrope.proterty}

                    (4)现在仔细看看前面内置对象的介绍,你就会使用了。

             5 EL函数---省略

             --------------------------------------------------------------------------------------------------------------------------------------

            EL自然不止这些,不过上面介绍的是常用的。发现没,EL主要用来获取数据的。Java中if,while,for怎么办?答案就jstl中

  • 相关阅读:
    【ci框架】PHP常见面试题汇总。。。
    fieldset的collapse和expand事件
    CI 学习
    Ext JS 4预览:重构和规范渲染过程()
    LAMP环境搭建过程
    Extjs中FieldSet的收缩和展开实例
    EXTJS组件化(三)----组件之间的暧昧关系
    EXTJS组件化(四)---减少你的代码
    EXTJS组件化(二)----简易的私有和公有
    EXTJS组件化(一)----建立你的思想
  • 原文地址:https://www.cnblogs.com/huang-1995/p/6576336.html
Copyright © 2011-2022 走看看