struts2学习笔记摘要二

1.OGNL
 在MVC设计模式里,视图负责显示模型和其他对象。为了从JSP页面访问这些对象,需要使用Struts从WebWork继承来的OGNL(Object-Graph Navigation Language,对象-图形导航语言)。OGNL可以完成:
  把GUI元素(文本字段,选择框)绑定到模型对象,以及把数据值从一种类型转换为另一种类型。
  把通用标签与模型对象绑定在一起。
  即时创建各种列表和映射关系与GUI对象配合使用;
  调用各种方法,调用任何方法,不限于那些用来对属性进行读取和设置方法。
  1.1 Value Stack栈
  对于每一个动作调用,Struts在执行相应的动作方法之前会先创建一个名为Value Stack的对象。
  Value Stack栈内部有两个逻辑组成部分,它们分别叫做Object Stack和Context Map,Struts将把动作和相关对象压入Object Stack,把各种各样的映射关系压入ContextMap.
  Struts会把下面这些映射关系压入Context Map
  parameters:这个Map包含当前请求的请求参数
  request:这个Map包含当前请求的所有请求级属性。
  session:这个Map包含当前请求的会话级属性
  application:这个Map包含当前应用程序的ServletContext属性。
  attr:这个Map用来按照这个顺序来检索某个属性:request、session、application。
  访问Context Map时,在OGNL表达式加上一个前缀字符“#”。如果没有前缀字符“#”,搜索将在Object Stack里进行。
  请求参数总是返回一个String类型的数组,而不是一个String类型的对象,因此,如果想知道请求参数的个数,就必须使用#parameters.count[0].
  1.2读取Object Stack里的对象属性
  object.propertyName
  object[‘propertyName’]
  object["propertyName"]
  Object Stack里的对象可以通过一个从零开始的下标来引用。栈顶用[0]来引用,下面一个元素用[1]来引用。
  Struts里的OGNL实现有一个重要特征:如果指定的对象里没有找到指定的属性,则到指定的对象的下一个对象里继续搜索。也就是下标[n]的含义是从第n个对象开始搜索,而不是只搜索第n个对象。也就是
 [0].password
  与这个表达式passwotrd等价
  1.3读取Context Map里的对象属性
  #object.propertyName
  #object['propertyName']
  #object["propertyName"]
  1.4调用字段和方法
  调用任何一个Java类里的静态字段和方法。
  @fullyQualifiedClassName@fieldName
  @fullyQualifiedClassName@methodName(argumentList)
  1.5访问数组类型的属性
   类似访问Java数组的元素使用的符号去访问这种数组的各个元素。
   可以通过length字段查询出给定数组有多少个元素。
  1.6访问List类型的属性
   跟访问数组的方式一样。
   可以通过size方法和size关键字来查询出给定List的长度。
   使用isEmpty关键字或者isEmpty方法判定给出的是否为空。
   还可以使用OGNL表达式来创建List,当与提供一组选项的表单标签的时候需要用此来解决。
  1.7访问Map类型的属性
  map[key]
  可以用size或size()查出某给定Map里的键值对的个数。
  你可以用isEmpty或isEmpty()检查某给定的Map是不是空的。
  访问Context Map里的各个Map要使用#前缀
  1.8JSP EL:当OGNL帮不上忙时
  输出JSP页面上某个模板对象,你可以使用Struts标签库里的property标签
 
  使用EL表达式也可以
  ${serverValue}
  用Struts定制标签输出一个请求标头是见比较困难的事情,使用EL表达式如下:
  ${header.host}
  在MVC设计模式里,视图负责显示模型和其他对象,需要使用OGNL去访问那些对象。保存动作对象和上下文对象的ValueStack栈。
2.表单标签
  struts自带一个标签库,标签分为UI标签和非UI标签,其中UI标签还可以分为数据录入和显示出错信息。其中数据录入部分统称为表单标签。非UI标签可以帮助我们在应用程序里实现各种流程控制和数据访问。还有一部分标签可以完成Ajax编程。
  2.1Struts标签的使用方法
  在JSP页面的开头加上一条下面的taglib指令即可使用标签
  <%taglib prefix="s" uri="/struts-tags"%>
  标签的属性可以被赋值为一个静态的值或一个OGNL表达式。如果你在赋值时使用了一个OGNL表达式并把它用“%{”和“}”括起来,这个表达式将会被求值。
  2.2form标签
 
  2.3textfield、password、hidden标签
  textfield标签将被呈现为一个输入文本字段,password标签将被呈现为一个口令字段,hidden标签将被呈现为一个不可见字段。
  password标签扩展自textfield标签,前者比后者多一个showPassword属性。该属性是布尔型,默认值为false。它决定着口令字段输入表单因为没能通过验证而被重新显示给用户时,需不需要把用户刚才输入的口令字显示出来(依然看不到原字符)。
  2.4submit标签
  submit标签将呈现为一个提交按钮。根据其type属性的值,这个标签可以提供3种呈现效果。
  input:把submit标签将呈现为
  button:把submit标签呈现为

你可能感兴趣的:(学习笔记)