EL 提供.和[]两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用[]来做,而.无法做到动态取值。
.Struts2架构图一、请求首先通过Filterchain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation,然后ActionInvocation调用Interceptors,执行Action本身,创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。
Struts2 的体系与 Struts1 体系的差别非常大,因为 Struts2 以 webwork 优秀的设计思 想为核心,而不是使用 Struts1 的设计核心。Struts2 大量使用拦截器来处理用户请求, 从而允许用户的业务逻辑控制器与 Servlet API 分离。
虽然Struts 2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Strut2没有继承Struts 1的血统,而是继承了WebWork的血统。或者说,WebWork衍生出了Struts 2,而不是Struts 1衍生了Struts 2。因为Struts 2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证;而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。
经过六年多的发展,Struts1已经成为了一个高度成熟的框架,不管是稳定性还是可靠性都得到了广泛的证明。拥有丰富的开发人群,几乎已经成为了事实上的工业标准。但是随着时间的流逝,技术的进步,Struts1的局限性也越来越多地暴露出来,并且制约了Struts1的继续发展。虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2 与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts 1的血统,而是继承WebWork的血统。或者说,WebWork衍生出了Struts2,而不是Struts 1衍生了Struts2.因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证。
如何将参数从界面传递到Action? 你可以把Struts2中的Action看做是Struts1的Action+ActionForm,即只需在Action中定义相关的属性(要有getters/setters方法),然后界面传参的名称跟这些属性保持一致即可。普通的数据类型,将可自动转换。(空字符串转换为int类型时将报错)
Struts2拦截器的意义和优势? 拦截器和AOP的关系 配置拦截器 开发拦截器 拦截结果的监听器 拦截器的执行过程 struts2内建拦截器
Struts2扩展自WebWork,为简化界面编程Struts2沿用WebWork标签的风格,以OGNL为标签属性值进行动态存取,大大增强Struts2标签的功能及易用性。
Struts2是在WebWork2基础发展而来的。和struts1一样,Struts2也属于MVC框架。不过有一点大家需要注意的是:尽管Struts2和struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的。那么既然有了struts1,为何还要推出struts2。主要是因为struts2有以下优点:1>在软件设计上Struts2没有像struts1那样跟Servlet API和struts API有着紧密的耦合,Struts2的应用可以不依赖于Servlet API和struts API。Struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计。
一、url标签简介(url标签用于生成一个URL地址,可以通过url标签指定param子元素,从而向指定URL发送请求参数。
Struts2+FreeMarker应用配置1、配置说明普通的struts2配置文件一般是这么配置的。
OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts 2框架使用OGNL作为默认的表达式语言。 相对EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHello(); 支持类静态方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')
1) 在软件设计上struts2没有struts1那样跟ServletApi和StrutsApi有着紧密的耦合,Struts2的应用可以不因爱ServletApi和StrutsApi.struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计<br> public class OrderListAction ectends Action//struts依赖于java 2) Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能
如何使用struts2拦截器,或者自定义拦截器。特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,如下(这里我是引用了struts2自带的checkbox拦截器)
struts2的标签共分为五大类:一、逻辑控制标签用于进行逻辑控制输出。主要分以下几类:1)条件标签:用于执行基本的条件流转s:if:拥有一个test属性,其表达式的值用来决定标签里内容是否显示。
Struts2的动态方法调用(DynamicmethodInvoc)概括起来有三种方式,下面介绍:第一种方式:设置method属性在Action类中定义一个签名与execute方法相同、只是名字不同的方法,如定义为:然后在struts.xml文件中加一个<action>元素,并设置它的method属性。
Struts 2 框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。除此之外,Struts 2框架还包含一个struts.properties文件,该文件定义了Struts 2框架的大量属性,开发者可以通过改变这些属性来满足应用的需求。
本部分主要介绍struts.xml的常用配置。Struts2框架中核心组件就是Action、拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合。 在struts.xml文件中package元素用于定义包配置,每个package元素定义了一个包配置。
struts.xml配置文件
struts2的struts.properties配置文件详解