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中

  • 相关阅读:
    阿里P8架构师谈:阿里双11秒杀系统如何设计?
    秒杀系统设计的知识点
    秒杀系统架构优化思路
    秒杀系统解决方案
    Entity Framework Code First (七)空间数据类型 Spatial Data Types
    Entity Framework Code First (六)存储过程
    Entity Framework Code First (五)Fluent API
    Entity Framework Code First (四)Fluent API
    Entity Framework Code First (三)Data Annotations
    Entity Framework Code First (二)Custom Conventions
  • 原文地址:https://www.cnblogs.com/huang-1995/p/6576336.html
Copyright © 2011-2022 走看看