Struts2[四]
2019-10-11 / JAVA / 1181 次围观 / 0 次吐槽 /contextMap中的数据操作
1、存数据
利用ActionContext存数据
利用ValueStack存数据
2、取数据
n 用Struts2的标签(OGNL表达式)在JSP上(用的最多)
使用s:property取数据
取contextMap里面ValueStack中对象的属性:直接写属性名
如果遇有对象属性重名,可以通过OGNL表达式,选择查找的起始位置
在jsp页面取值时,可以通过索引获取
特殊说明:当s:property不给定value属性时,默认取栈顶对象。
3、valueStack的其它方法
a、setValue方法
b、set方法
n 掌握压栈的顺序问题
c、findValue方法
n 在jsp页面上的调用的都是findValue方法
4 、Struts中对EL取值顺序的改变
默认情况下EL查找顺序
n 表达式取值必须是servlet四大作用域 由小到大排列为
pageContext【page】 > request > session > servletContext【application】
在Struts中EL表达式的查找顺序的改变
OGNL表达式:page –> request -> valueStack(根中)-> contextMap -> session -> application
Struts标签与OGNL的配合使用
1、iterator标签
2、OGNL投影
使用过滤条件投影
使用指定属性投影
3、回顾Struts2中#,$,%符号的使用(重要)
3.1、#
a、取contextMap中key时使用,例如<s:property value="#name" />
b、OGNL中创建Map对象时使用,例如:<s:radio list="#{'male':'男','female':'女'}" />
3.2、$
a、在JSP中使用EL表达式时使用,例如${name}
b、在xml配置文件中,编写OGNL表达式时使用,例如文件下载时,文件名编码。
struts.xml——>${@java.net.URLEncoder.encode(filename)}
3.3、%
在struts2中,有些标签的value属性取值就是一个OGNL表达式,例如<s:property value="OGNL Expression" />
还有一部分标签,value属性的取值就是普通字 符串,例如<s:textfield value="username"/>,如果想把一个普通的字符串强制看成时OGNL,就需要使用%{}把字符串套起来。
例如<s:textfield value="%{username}"/>。
当然在<s:property value="%{OGNL Expression}" />也可以使用,但不会这么用。
4、Struts的其它标签
s:set标签
² value:存入map中的值,是一个OGNL表达式
² var:存在map中的key
² scope:存储的范围application session request page和action
² 不写scope,默认是action,它是在contextMap中和request中各存一份
s:action标签
s:if标签,s:elseif标签 s:else标签
² 相当于jstl中的c:choose c:wher c:otherwise
s:url和s:a标签
表单小案例
目标:
² 掌握checkboxlist的使用
² 掌握模型驱动的原理
² 掌握struts主题的设置
模型驱动原理
n struts的ModelDrivenInterceptor 这个拦截器来完成的了模型驱动的工作
n 这个可以从struts-defualt.xml找到这个拦截器
n ModelDrivenInterceptor.java源码分析
内部娄模型数据压栈了
struts2中默认主题
² 默认主题的名称是XHTML,都是在struts的默认属性文件中定义着:default.properties
² 更改默认的主题方式
² 第一:在标签内加theme属性
² 第二:配置全局的theme
- 上一篇:Struts2[三]
- 下一篇:OGNL
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.