文章翻译自Struts 2官方文档。
Apache Struts 2体系结构简介
|
|
Struts标签简介
Struts标签帮助你用最少的代码创建有丰富(rich)内容的web应用。通常,在web应用中大多数编码时间都花在了页面上。Struts标签通过减少代码的方式减少了开发时间。
<% User user = ... %> <form action="Profile_update.action" method="post"> <table> <tr> <td align="right"><label>First name:</label></td> <td><input type="text" name="user.firstname" value="<%=user.getFirstname() %> /></td> </tr> <tr> <td><input type="radio" name="user.gender" value="0" id="user.gender0" <% if (user.getGender()==0) { %> checked="checked" %> } %> /> <label for="user.gender0">Female</label> </tr> </table> </form> ...
查看上面的标记,很容易发现没有现代框架辅助的Java web开发为什么是困难的!到目前为止,我们仅仅开发了两个输入框(controls),并且还有更多的输入框需要编写!让我们使用Struts标签重写并完善这个表单。
|
<s:actionerror/> <s:form action="Profile_update" validate="true"> <s:textfield label="Username" name="username"/> <s:password label="Password" name="password"/> <s:password label="(Repeat) Password" name="password2"/> <s:textfield label="Full Name" name="fullName"/> <s:textfield label="From Address" name="fromAddress"/> <s:textfield label="Reply To Address" name="replyToAddress"/> <s:submit value="Save" name="Save"/> <s:submit action="Register_cancel" value="Cancel" name="Cancel" onclick="form.onsubmit=null"/> </s:form> 作为头等特征Struts标签页支持验证和本地化。因此使用Struts标签不仅可以写更少的代码,而且还有更多的工具可以使用。 使用和两个常规输入框相同的代码行数,Struts标签能够创建包含八个输入框的数据录入表单。代码不仅更少,而且更容易阅读和维护。 |
Struts配置文件简介
一个web应用使用部署描述符来初始化如同过滤器和监听器的资源。web部署描述符是一个格式化的XML文档并且名字为web.xml。Struts通过扫描声明在web.xml中的Java包中的类初始化它的资源,或者你也可以通过名为struts.xml的配置文件完全控制Struts的配置。这些资源包括指示输入到服务端Action类的action映射,和选择输出页面的result类型。
下面是一个登陆流程的典型配置(struts.xml):
<struts> <package name="default" extends="struts-default"> <action name="Logon" class="mailreader2.Logon"> <result name="input">/pages/Logon.jsp</result> <result name="cancel" type="redirectAction">Welcome</result> <result type="redirectAction">MainMenu</result> <result name="expired" type="chain">ChangePassword</result> </action> <action name="Logoff" class="mailreader2.Logoff"> <result type="redirectAction">Welcome</result> </action> </package> </struts>
提示:框架提供了通用的默认值,因此我们可以立即开始使用Struts,“非常有创意”。在一个应用中任意的默认值都可以根据需要进行覆盖。
Struts MVC简介
Struts是一个模型视图控制器框架。Struts提供了控制器和视图组件,结合其他技术来提供模型。框架的控制器在应用的模型和web视图之间担任桥梁的角色。
为了使呈现动态数据更容易,框架包含了一个标记标签库。标签与框架的验证和国际化特性相互作用,保证输入是正确的和输出已经本地化。标签库可以和JSP,FreeMarker,或者Velocity一起使用。当然,其他标签库,JSTL和AJAX也可以和Struts标签一起使用或者单独使用。也支持JavaServer Faces。
当收到一个请求时,控制器调用一个Action类。Action类同过和模型(或者,更好的,一个代表模型的接口)交互来检查或更新应用的状态。为了在模型和视图之间转移数据,属性可以放在Action类中或者一个普通的JavaBean。
通常,模型描绘JavaBean对象的一个图像。模型应该做”困难的工作“,Action将扮演“交通警察“或者适配器的角色。框架提供了复杂的,自动的类型转换来简化富领域对象(rich domain objects)到文本类型的HTTP请求之间的数据转换。
Struts是可扩展的。非常扩展。框架部署的每个类都是基于接口的。我们提供了一个应用可能一直需要使用的所有类,你自己可以很容易加上我们遗漏的类。我们提供了这个通用的框架,但是你任然可以用你自己的方式来写应用。
Struts是不是每一个项目的最佳选择?
Apache Struts 2帮助你基于工业标准和已证明的设计模式为企业级应用创建一个可扩展的开发环境。如果你需要写一个只有少数页面的非常简单的应用,这时你可能需要考虑只使用服务端页面的”Model 1“方案。
如果你想编写一个包含许多页面并且随着时间的推移需要维护的更复杂的页面,那么Struts是有用的。更多关于是Model 1适合你还是MVC/Model 2适合你,参考理解JavaServer Page Model 2体系结构。
平台必备条件
Struts 2的要求:
- Servlet API 2.4
- JSP API 2.0
- Java 5
包括可选插件的依赖的完整必备条件列表,参考项目依赖。
提示:也可以获得Java 4的替代JAR集合。参考”J4"分发版。