虽然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两者的优势,因此,是一个非常值得期待的框架。
学习目标:Struts2标签库概述;Struts2数据标签;Struts2控制标签;Struts2表单标签;Struts2非表单标签;
本章目标:OGNL表达式。-什么是OGNL表达式。OGNL表达式,其实是一串特殊的字符串,通过这一串字符串可以快速的操作Java代码,甚至是不允许操作Java代码的地方,如JSP页面。ValueStack中的Context和root。Struts2是如何通过ValueStack来操作OGNL的。
在struts2的返回结果配置中,我们大部分情况使用默认的或者chain或者redirect,其实struts2还有很多其他类型的,今天我们就来看一下都有哪些类型。
使用package可以将逻辑上相关的一组Action,Result,Interceptor等组件分为一组,Package有些像对象,可以继承其他的Package,也可以被其他package继承,甚至可以定义抽象的Package。
OGNL表达式的用法OGNL的用法OGNL是通常要结合Struts2的标志一起使用,如<s:propertyvalue="xx"/>等。大家经常遇到的问题是#、%和$这三个符号的使用。下面我想通过例子讲述这个问题:首先新建名为Struts2_OGNL的Web工程,配置开发环境。
struts2:前台页面的数据处理,(mvc表单提交处理)。核心模块:强大的MVC、控制器、验证框架、内置标签Hibernate:完成与数据库之间的交互(数据持久化的ORM框架)spring:用于优化程序中的结构,整合struts2和Hibernate所有的框架使用的核心技术:反射反射:通过对象,找到所对应的类的信息(可以调用类里的属性和方法。
Struts2为提供了一个为用户快速构建应用程序的平台。Struts2是基于OpenSymphony的网络工程框架。Struts2实现模型视图控制器(MVC)设计模式。在Struts2的模型、视图和控制器中分别实现了Action,result和FilterDispatcher。该控制器的工作是将用户的请求(request)映射到适当的action。Struts2的FilterDispatcher进行着控制器的工作。
众所周知,现代电子计算机由5大部件组成:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器合称CPU,是计算机中最为核心的部分。如果我们把整个Struts2框架比作是一个计算机,那么XWork则是Struts2框架中的CPU,是Struts2运行机制的核心。
核心分发器(Dispatcher)的核心驱动作用Dispatcher之所以被称之为Struts2的核心分发器,主要是基于它在整个Struts2框架中的特殊地位。我们经常会使用“起-承-转-合”这4个不同的阶段来描述一个事件的整个过程,对于Struts2而言,Dispatcher实际上就是囊括这4个阶段的核心分发器。
在对Struts2初始化主线的宏观分析中,我们曾经谈到为了帮助更好地管理Struts2中的内置对象,Struts2引入了一个“容器”的概念,将所有需要被管理的对象全部置于容器之中。因而,整个Struts2初始化过程,也始终围绕着这个“容器”展开。
在我已往的Struts 1.x项目经验中,有个问题不时的出现——在创建FormBean时,对于某个属性到底应该用String还是其它类型? 开发Web应用程序与开发传统桌面应用程序不同,Web应用程序实际上是分布个不同的主机(当然也可以同一个主机,不过比较少见)上的两个进程之间互交。这种互交建立在HTTP之上,它们互相传递是都是字符串。换句话说, 服务器可以的接收到的来自用户的数据只能是字符串或字符数组,而在服务器上的对象中,这些数据往往有多种不同的类型,如日期(Date),整数(int),浮点数(float)或自定义类型(UDT)等,如图1所示。因此,我们需要服务器端将字符串转换为适合的类型。
配置Result一个result代表了一个可能的输出。当一个Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出。Results配置由两部分组成:一部分是result映射,另一部分是result类型。
Struts 2.x仍然是一个MVC框架。一般来说,某种软件的第二个版本都是起源第一个版本,但实际上,Struts 2.x是个特例,它并非起源于Struts 1.x,而是起源于WebWork框架 - 另一MVC的框架。因此Struts 2.x与Struts 1.X是没有直接关系的。
使用一个页面控制类,它记录页面信息,如上页,下页,当前页等。在查询的Action中,将这个控制类和查询条件一起传递给数据库访问bean,然后将这两个参数保存在用户session中。在分页控制Action中,利用接收到的分页参数调用数据库访问的bean.
FreeMarker是一个非常优秀的模板引擎,这个模板引擎可用于任何场景,FreeMarker负责将数据模型中的数据合并到模板中,从而生成标准输出.界面开发人员只需要关于界面(也就是模板文件)的开发,而业务逻辑开发者只需要负责将需要显示的数据填入数据模型-----FreeMarker负责合并数据模型和模板,从而生成标准输出. FreeMarker特别适应于MVC模式的Web应用,虽然FreeMarker具有一些编程能力,但这种编程能力非常有限,无法实现业务逻辑,只能提供一些数据格式的转换功能.因此,通常由Java程序准备要显示的数据,由FreeMarker模板引擎来生成页面,而FreeMarker模板则提供页面布局支持.