zoukankan      html  css  js  c++  java
  • struts2的总体回想(ACTION、拦截器、值栈、OGNL表达式、ModelDriven方案等)

    ValueStack:struts2的一个存放数据的数据结构(核心)
    ValueStack大致能够理解为:由Map和对象栈组成
    ValueStack作用范围:一个请求,用它来取代request的作用域。
    当来了一个请求时,便创建出一个ValueStack,并进行一些初始化。
    往Map中放:request=...,session=...,application=...,attr=...,parameters=...。等等

    往对象栈中放:action和还有一个默认对象


    拦截器:ModelDriven
    作用:把model放在对象栈栈顶,
    參数拦截器:params
    作用:封装參数,把參数封装到对象栈中,会先封装到对象栈中的属性里(一找到同样属性就封装)


    Action里怎么用ValueStack:ActionContext.getContext().getValueStack()
    JSP里怎么用ValueStack:OGNL表达式
    调用ValueStack
    1.调用map:
    ActionContext.getContext().put(k,v);//将一组对象存入map
    ActionContext.getContext().get(k);//通过key拿到value
    2.调用对象栈:
    ActionContext.getContext().getValueStack().push(obj);//将obj放到栈顶
    ActionContext.getContext().getValueStack().pop();//拿到栈顶对象

    OGNL表达式
    格式:
    在struts.xml中,OGNL的格式为:${ognl}
    在JSP中,OGNL的格式为:%{ognl}
    语法:
    user  = findValue("user")//先找对象栈,再找map,一找到就返回
    #user = map.get("user")//直接从map中获取
    #user.name = map.get("user").getName()


    findValue(expr)的查找顺序
    1.从对象栈中查找指定名称的属性,从栈顶開始向下找,找到后就返回。
    2.假设从对象栈中没有找到属性,则从map中查找相应的key值,找到后就返回。



    EL表达式(struts中):
    作用域查找顺序:page,request。ValueStack.findValue(),session,application



  • 相关阅读:
    单元测试乱弹(一):悲剧的测试工具
    Android 4.2中sqlite操作问题(二):某些情况下显式启用事务能提高操作效率
    some code of debug mode
    asp .NET弹出窗口 汇总
    if (!IsPostBack)
    Asp.Net中清空所有textbox的几种方法
    ASP.NET验证控件详解
    正则表达式限制文本框只能输入数字
    颜色
    gridview 根据条件更改链接的可用和颜色
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5197650.html
Copyright © 2011-2022 走看看