Struts学习03
来源:互联网 发布:淘宝茶具套装 编辑:程序博客网 时间:2024/06/08 05:21
1,OgnlContext:
root:任意对象(setRoot)
Context:map(setValues)
---------------------------------------------------------------------------------------------------------------
2,语法:以下oc为OgnlContext
取值:
取root对象中name属性:Ognl.getValue("name", oc, oc.getRoot());
用key(user1)取map中value:Ognl.getValue("#user1", oc,oc.getRoot());
取map中value对象的成员属性:Ognl.getValue("#user1.name", oc, oc.getRoot());
赋值:
赋值root对象的name和age属性:Ognl.getValue("name='jerry',age='20'", oc,oc.getRoot());
赋值map中value对象的成员属性:Ognl.getValue("#user1.name='haha'", oc,oc.getRoot());
方法调用:
直接调用root对象的方法:Ognl.getValue("getName()+' '+getAge()", oc,oc.getRoot());
静态方法调用:格式为@类名@静态方法名 Ognl.getValue("@com.cl.ognl.Echo@echo('haha')", oc,oc.getRoot());
创建list/map:
list:花括号表示list,后面可以接方法或指定索引。Ognl.getValue("{'you','me','he'}.size()", oc, oc.getRoot());
map:使用#加花括号里键值对表示,后面可以接方法或指定key。Ognl.getValue("#{'name':'zhangsan','age':18}['name']", oc, oc.getRoot());
--------------------------------------------------------------------------------------------------------------
3,Struts整合Ognl
值栈包括root和Context,root默认放置当前访问的action对象
获得值栈ValueStack:ActionContext.getContext().getValueStack();然后用它将对象压栈。可实现Preparable接口,将这2步操作放在prepare方法里。最好实现ModelDriven接口,它自动处理这2步操作(过滤之前)了。
应用:
参数接收(交给Ognl引擎处理)
配置文件(Ognl表达式)
-------------------------------------------------------------------------------------------------------------------
4,过滤器
先注册拦截器:
<interceptor name="InterceptorDemo" class="拦截器类"></interceptor>
再注册拦截器栈:
<interceptor-stack name="MyStack">
<!-- 引入自定义拦截器 -->
<interceptor-ref name="InterceptorDemo">
<!-- 指定哪些方法不进行拦截,excludeMethods和includeMethods只能用一个 -->
<param name="excludeMethods">方法名,方法名</param>
<!-- <param name="includeMethods">方法名,方法名</param> -->
</interceptor-ref>
<!-- 引用默认拦截器栈 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
再指定默认拦截器栈:
<default-interceptor-ref name="MyStack"></default-interceptor-ref>
拦截器创建方式:
a:实现Interceptor接口
b:继承AbstractInterceptor类
c:继承MethodFilterInterceptor类(推荐。MethodFilterInterceptor继承了AbstractInterceptor)
---------------------------------------------------------------------------------------------------------------
5,标签
导入标签库 <%@ taglib prefix="s" uri="/struts-tags" %>
控制标签:iterator/if/elseif/else
数据标签:property
表单标签:有name和label属性,可以根据name属性自动回显。from/textfield/password/file/radio/checkboxlist/select/textarea/submit
非表单:actionerror
- Struts学习03
- struts学习---配置struts
- 学习Struts
- struts学习
- 学习struts
- Struts 学习
- struts学习
- struts学习
- 学习Struts
- Struts学习
- Struts 学习
- struts学习
- struts学习
- struts学习
- struts学习
- struts学习
- struts学习
- struts学习
- 子网掩码,网络号,主机号 计算问题。
- fileinput.js在上传文件时提交表单数据
- 再不会nginx你就out了
- 《A Sub-Pixel Edge Detector: an Implementation of the Canny/Devernay Algorithm》
- c语言List头文件和应用
- Struts学习03
- easyUI 显示加载中
- TCP传输图片及多线程
- 显式等待
- 用SQuirreL工具连接phoenix
- VC2010使用openssl-1.1.0f静态库时链接报错
- css3的书翻页技术
- Mysql的FIND_IN_SET的使用
- flume-kafka- spark streaming(pyspark)