编程开发 > JAVA > 文章内容

java基础知识总结(180)

2016-9-29编辑:ljnbset

1.练习问题

  1)Action中利用DAO可以获取出数据库数据,但是JSP获取不到.

  原因:1.检查Action属性及getter方法

        2.检查struts.xml中元素的配置,不能使用type="redirect"

        3.检查execute中接收集合的变量是否为局部变量

  2) 工程启动出现错误

     由于web.xml或struts.xml配置有误.可以根据异常信息寻找.

2.补充问题

   1)Action属性及setter和getter方法的问题

   Action属性在接收和传出数据时,setter和getter方法是关键.

   a.接收时,表单组件name="user" ,action要有setUser方法才可以接收.

   b.传出数据时,JSP使用${user},action要有getUser方法对应才可以获取.

   public class Action{

       private String name;//成员变量name

      

       //有一个属性,名字是user

       public String getUser(){

           return name;

       }

       public void setUser(String user){

         name = user;

       }

   }

3.OGNL技术

   Object Graphics Navigation Language(对象图导航语言)

   OGNL是一种表达式语言技术,封装在ognl.jar开发包中.

可以很方便的对对象的属性进行获取和设置.

   1)什么是EL,有什么用

   属于表达式语言,可以访pageContext,request,session,application存储范围的数据.可以简化JSP程序.

   2)OGNL表达式,有什么用

    属于表达式语言,需要ognl.jar提供支持.可以完成以下操作

    a.可以访问对象属性(获取和设置)

       基本类型属性:"id","name"

       数组类型属性:"love[0]","love[1]"

       List类型属性:"city[0]","city[1]"

       Map类型属性:"books.key","books['key']"

    b.可以访问对象的方法

       "city.size()","name.toUpperCase()"

    c.可以访问静态常量和方法

      "@java.lang.Math@PI"

    d.可以访问集合中的数据,进行集合过滤等操作

      "persons.{?#this.age>20}" : 返回persons集合中,满足age>20的所有元素. 

      ?指的是返回所有满足条件的元素

      ^指的是返回第一满足条件的元素

      $指的是最后一个满足条件的元素

    e.支持Java中的运算符和表达式

      "\"name\"+name","id+10"

    f.定义一个List和Map类型的常量

      List常量:"{1,2,3}"

      Map常量:"#{'age':20,'name':\"tom\"}"

  3)OGNL标准结构

    OGNL有3个重要组成部分,一个OGNL引擎,一个是root对象,另一个是context对象.

    访问context区域需要使用"#key"格式.

    没有"#",例如"name",意思是访问root对象的name属性

4.OGNL技术在Struts2中应用

   1)OGNL在xwork中进行了改造

    xwork将OGNL中的root对象进行了改造,将其改造成了一个栈结构,类型是CompountRoot继承自ArrayList.在访问root属性时,从栈顶对象向下依次查找,找到属性值返回.

   2)ValueStack结构

    ValueStack是Struts2中非常重要的数据对象,当客户发送一个请求后,控制器会根据当前请求创建一个ValueStack,并将请求处理相关的数据进行填充.

     root栈:存放当前请求对应的Action对象(栈顶)

     context(Map):存放request,session,application,parameters等信息

   3)JSP获取业务数据,需要使用Struts标签+OGNL表达式技术组合

java基础知识总结(179)

热点推荐

登录注册
触屏版电脑版网站地图