Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的应用。MVC 2模型的使用 功能齐全的标志库(Tag Library) 开放源代码
struts2异常处理
在我已往的Struts 1.x项目经验中,有个问题不时的出现——在创建FormBean时,对于某个属性到底应该用String还是其它类型? 开发Web应用程序与开发传统桌面应用程序不同,Web应用程序实际上是分布个不同的主机(当然也可以同一个主机,不过比较少见)上的两个进程之间互交。这种互交建立在HTTP之上,它们互相传递是都是字符串。换句话说, 服务器可以的接收到的来自用户的数据只能是字符串或字符数组,而在服务器上的对象中,这些数据往往有多种不同的类型,如日期(Date),整数(int),浮点数(float)或自定义类型(UDT)等,如图1所示。因此,我们需要服务器端将字符串转换为适合的类型。
简化获取response,request及输出操作 import java.io.IOException; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpS
数据来源在helloworld示例里面,在运行Action的execute方法的时候,你会神奇般的发现,Action的属性是有值的,而这正是Action进行请求处理所需要的数据。那么,这些数据从何而来呢? 很明显,这些数据就是你在登录页面填写的数据,换句话说,这些数据来源于用户请求对象,也就是request对象。 可是,Struts2怎么知道,页面上的值如何和Action的属性进行对应呢?
Struts提供了一个过滤器调度器ActionServlet作为控制器,程序员不必自行用servlet编写一个。<br> Struts使用了一个基于XML的配置文件来匹配URI和动作。因为XML文档是文本文件,所以对应用程序的许多改动都用不着重新编译有关代码即可生效。 对动作类进行实例化和提取用户输入去填充有关动作属性的工作都由Struts负责。而不用servlet一个个去取前台参数。<br> Struts可以在后台对用户输入做一些基本的合法性验证,并在遇到不合法的输入时自动地把用户重定向到相关的输入表单。
有了前面的基础,接下来可以来把Struts2与JFreeChart结合使用了。 先来构建结合开发的环境,很简单,只有一步工作,把struts2-jfreechart-plugin-2.1.8.1.jar拷入到web工程的lib下就可以了。
是Struts2的配置文件,默认叫default.properties文件。它配置struts的默认配置,例如:struts2的默认配置 为action就是在该文件中定义。
Struts 2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。
从实例看struts2运行原理1.1简单例子先做一个最简单的struts2的例子:在浏览器中请求一个action,然后返回一个字符串到jsp页面上显示出来。第一步:把struts2最低配置的jar包加入的项目中。
Webwork提供了一套不依赖于显示层技术的标签库。这一章我们将概括性的描述每一个标签, 比如此标签支持的属性,标签的行为等等。大多数的标签都可以用于所有的模板语言(参考 JSP Tags, Velocity Tags,和FreeMarker Tags),但是有一些只能用于特定的模板语言。 无论什么时候一个标签不能完全的支持每一个模板, 该标签会在参考文档中注明。webwork中的标签分为两种类型: 通用标签和HTML标签。 除了功能和职责外这两种类型标签最大的区别是HTML标签支持模板(templates)和主题 (themes)。除了基本的参考外,我们将提供个个标签在所支持模板语言中的例子。
我们知道Xwork与Web无关性,我们的Action不用去依赖于任何Web容器,不用和那些JavaServlet复杂的请求(Request)、响应(Response)关联在一起。对请求(Request)的参数(Param),可以使用拦截器框架自动调用一些get()和set()方法设置到对应的Action的字段中。但是,仅仅取得请求参数的值就能完全满足我们的功能要求吗?不,在Web应用程序开发中,除
Struts2的类型转换是基于XWork的,实际上是基于OGNL的,它是一种强大的表达式语言 Struts2主要是通过实现OGNL类中的TypeConverter接口的方式,来完成类型转换 而该接口比较复杂,它只是描述了最通用的一种情况,所以通常都不会直接实现该接口 OGNL本身又提供了一个实现了TypeConverter接口的类,即DefaultTypeConverter类
struts2配置:1. 深入Struts2的配置文件 本部分主要介绍struts.xml的常用配置。 1.1. 包配置: Struts2框...
Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点: • MVC 2模型的使用 • 功能齐全的标志库(Tag Library) • 开放源代码 但是,所谓“金无赤金,人无完人”,Struts自身也有不少的缺点: • 需要编写的代码过多,容易引起“类爆炸” • 单元测试困难 这些缺点随着Web的发展越来越明显。这就促生了Struts 2.0,它的诞生能很好的解决上述问题。 好啦,废话就不多说了,现在就让我们感受一下的Struts 2.0的魅力吧。
嵌套循环 list中的list <s:iterator id="list" value="infoList" status="sta"> <s:iterator id="info" value=“infoList[#sta.index]"> <p> <a href="/expert/a/${info.infoId }.shtml" title="${info.subject }"> <s:if t
Struts2 Taglib抽象了不同表示技术,现在Struts2主要支持三种表示技术:JSP,FreeMarker和Velocity。但部分的Tag在三种表示技术下都可以使用,但是也有部分只能在某一种情况下使用。 Tab可以分为两类:通用标签和UI标签。
1) 当servlet容器接收到一个请求后,将请求交给你在web.xml里配置的过滤器FilterDispatcher,调用它的doFilter()方法。 2) FilterDispatcher询问ActionMapper,以便确定这个请求有对应的action调用。 3) ActionMapper返回一个描述action调用的ActionMapping对象。 4
Struts2内建的类型转换器 boolean和Boolean: 完成字符串和布尔值之间的转换。 char和Character: 完成字符串和字符之间的转换。 int和Integer: 完成字符串和整型值之间的转换。 long和Long: 完成字符串和长整型之间的转换。 float和Float: 完成字符串和单精度浮点值之间的转换。
在上面单元测试动作类Action中,基本上是把Struts2的Action类当作一个普通的Java类来进行测试,就没有涉及到Struts2的其他部分,也没有涉及到完整的Struts2的运行流程,比如:拦截器、验证框架、Result等等。 回忆一下Struts2的运行流程图,如果想运行对应的拦截器的话,就不能直接运行Action对象,而是要在ActionProxy对象上下手,这样才能根据struts.xml中的内容,装配上对应的拦截器,并模拟Strus2的真实运行过程。