首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2学习札记1

2012-08-21 
struts2学习笔记1一、struts2的基本流程:struts2框架由3个部分组成,核心控制器FilterDispatcher,业务控制器

struts2学习笔记1
一、struts2的基本流程:
struts2框架由3个部分组成,核心控制器FilterDispatcher,业务控制器和用户实现的业务逻辑组件,
struts2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,
struts2用于处理用户请求的action实例,并不是用户实现的业务控制器,而是action代理--因为用户实现的
业务控制器并没有与servlet API耦合,显然无法处理用户请求,而Struts2框架提供了系列拦截器,该系列拦截器
负责将HttpServletRequest请求中的请求参数解析出来,传入到action中,并回调action的execute方法来处理用户
请求,显然,上面的处理过程是典型的AOP(面向切面编程)处理方式:
----------------------------------------
被转入的请求-->系统的action代理-->拦截器1-->拦截器n-->action类
----------------------------------------
用户实现的Action类仅仅是Struts 2的Action代理的代理目标,用户实现的业务控制器(action)则包含了对
用户请求的处理,用户的请求数据包含在HttpServletRequest对象里,而用户的action类无需访问HttpServletRequest
对象,拦截器负责将HttpServletRequest里的请求数据解析出来,并传给业务逻辑组件Action实例

二、#$%的作用
"#"的主要用途:
1.访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:
名称 作用 例子
parameters     包含当前HTTP请求参数的Map    #parameters.id[0]作用相当于request.getParameter("id")
request        包含当前HttpServletRequest的属性    (attribute)的Map #request.userName相当于request.getAttribute("userName")
session        包含当前HttpSession的属性(attribute)的Map        #session.userName相当于session.getAttribute("userName")
application    包含当前应用的ServletContext的属性(attribute)的Map    #application.userName相当于application.getAttribute("userName")
attr          用于按request > session > application顺序访问其属性(attribute)    #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止
2.用于过滤和投影(projecting)集合,如books.{?#this.price<100};
3.Map,如#{'foo1':'bar1', 'foo2':'bar2'}。

"%"的主要用途:
在标志的属性为字符串类型时,计算OGNL表达式的值

"$"的主要用途:
1.用于在国际化资源文件中,引用OGNL表达式
2.在struts2配置文件中,引用OGNL表达式

热点排行