Struts2笔记二

本文摘要:Struts2 ->JSP页面收参、VS(ValueStack)、OGNL表达式、Struts2<s/>标签


一:Struts2 ->JSP页面收参

1. 收集零散数据与对象

后台代码:

 

 

Jsp页面

 

 

实体类:

 

 

2. List、Set、Map集合

 

 

 

二:值栈(ValueStack)

1.概念:Struts2中逻辑上的存储区域,统筹管理一次请求中所涉及到的所有数据。

 

2.作用:ValueStack提供了常用的独立栈结构(Root),并将对作用域的操作进行了封装(Context),简化用户的的数据访问方式(OGNL)。

3.好处:与视图层解耦(JSP运行效率低,只有JSP有内置对象),实战中会选择模板技术(freemarker、Velocity [vəˈlɒsəti]  没有内置对象)

4.注意:每次请求Action都会产生独立的ValueStack对象。

 

5. root区(List):常用//栈结构,访问时从栈顶向下查找。如使用"[0].属性名"则访问0开始的所有子集。如果使用"[1].属性名"则访问1开始的所有子集。

 

I. 概念:Struts提供的一个栈结构存储区域,主操作区域,访问便利,主要用来操作Action相关数据。//存储Action对象本身、请求参数。

 

II. 访问root区:

 

 

 

 

6. context区(Map):偶然用到(用户可手动将数据存入session、application中)

I. 概念:Struts提供的一个Map结构存储区域,主要用来操作JavaEE作用域。

 

 

 

 

7.经验:ValueStack的两种使用方式

I.通过Action的root区存储 请求数据、临时数据。

II.通过ValueStack手动存入数据(vs.setValue(expr,obj)),将保存在context区中。

III.使用Struts2对于操作数据时,都需要使用ValueStack进行,会由ValueStack对接JavaEE标准中的几个作用域对象。//不再直接操作内置对象

 

注意:同一个浏览器发送多次请求,每个请求对应一个ValueStack(一次请求有效),但共享同一个session、application。(URL没有重写的话,Cookie不能禁)

8.总结Struts2中的OGNL(对象图导航语言):操作ValueStack的必要途径!

I.使用OGNL时必须找到一个根对象(可以成为根对象的有5个[ root、request、session、application、parameters]默认是root),访问时可通过"根"查找到与之关联的所有对象。需要使用其他"根"时,则需要应用"#根对象名称"的语法访问,但同时也会增加访问常用对象的繁琐程度。

 

II.context存在的主要原因就是,在OGNL中不支持多个root对象,如果需要访问其他作用域对象时,则需要使用OGNL定位到Context中的不同对象,再进行访问。

 

三:ognl表达式(Object-Graph Navigation Language):对象导航图语言

1. 概念:

I. 语法与EL相似、功能强大、简单的表达式语言。

II. 可直接访问对象的getters方法、还可直接访问对象的普通方法。

III. OGNL是一套独立的、完整的技术组件、不属于Struts本身。

 

2. 在已有的List中取值:

 


3. 在已有的Map中取值:

 

4. 总结:

I. List:直接书写属性名称,即可完成List中的逐个对象查找,以及目标属性的获取。

II. Map:#为前缀+key查找Map中的目标对象,再导航查找各个属性。

 


四:Struts2标签 +ognl表达式完成在JSP页面的取值  ->替代EL+JSTL

1. 作用:逻辑处理,用以替代EL表达式。

2. 使用方式:

I. 引入标签库:<%@taglib uri="/struts-tags" prefix="s" %>

II. 选择标签:

1). 单条数据展示:

2). 条件判断:

 

3). 遍历:

 

 

3. Struts2高级标签:

I. 获取日期类型、并格式化:

 

II. URL重写:

1). JSP到JSP:

 

2). JSP到Action:

 

猜你喜欢

转载自blog.csdn.net/sugar_map/article/details/80212844