Struts 框架培训
一、 什么是架构、框架
二、Struts的起源
二、 Struts的工作原理
三、 Struts的优缺点
(一) 什么是架构、框架
架构(Architecture)是抽象的
框架(Framework)是具体的 
架构是宏观上的。定义构成一个系统的各个组成部分。比如基于J2EE的三层架构:WEB层,应用中间层及数据层,从宏观上定义系统的各个组成部分。
框架是具体化的架构。用于细化整个架构或某一组成部分。如STRUTS是定义WEB层的框架

具体到一个应用开发我们首先定义架构:基于.NET or J2EE,三层架构还是Client/Server. 然后基于选定的架构,确立系统框架。
  J2EE体系包括JSP、Servlet、EJB、WEB SERVICE等多项技术。怎样把这些技术组合起来,形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。
    一个成功的软件需要有一个成功的架构,但软件架构的建立是一个复杂而又持续改进的过程,软件开发者们不可能对每个不同的项目做不同的架构,而总是尽量重用以前的架构,或开发出尽量通用的架构方案,Struts就是其中之一,Struts是流行的基于J2EE的架构方案,其他常用的基于J2EE的架构方案还有Turbine、Spring等。
二、Struts的起源
Struts最早是作为Apache Jakarta项目的组成部分问世运做。项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages (JSPs)Servlet、标签库以及面向对象的技术水准。当前最高发行版本为Struts1.2.4
  Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了帮助你减少在运用MVC设计模型来开发Web应用的时间,帮助你完成其中一些繁重的工作
  如果想混合使用ServletsJSP的优点来建立可扩展的应用,Struts是一个不错的选择。
三、Struts的工作原理
MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。
Struts 是MVC的一种实现,它将 Servlet和 JSP 标记用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展.
Struts的核心是ActionSevlet
ActionSevlet的核心是l
l集中了所有页面的导航定义。对于大型的WEB项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或升级都是大有裨益的。掌握l是掌握Struts的关键所在。
流程:在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevletActionSevlet根据l中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。每一个*.do均有对应的FormBean名称和ActionBean名称,这些在l中配置。
<struts-config>
  <form-beans>
    <form-bean name=“inputActionForm“ type=“sys.inputActionForm" />
  </form-beans>
<action-mappings>
    <action name="inputActionForm" type=“sys.inputAction" path="/inputAction" />
  </action-mappings>
<global-forwards>
    <forward name="success" path="/success.jsp" />
  </global-forwards>
</struts-config>
Login.jsp
<body bgcolor="white">
<html:form action="/regUserAction" >
<html:text property="logname" size="20" maxlength="20"/>
<html:password property="password" size="20" maxlength="20"/>
<html:submit property="submit" value="Submit"/>
LoginForm.java
Public LoginForm(){
  logname = null;
  password = null;
}
public String getLogName() {
  return this.logname;
}
public void setLogName(String logname) {
  this.logname = logname;
}
public void setPassWord(String password) {
  this.password = password;
}
public String getPassWord() {
  return this.password;
}
RegUserAction.java
public final class RegUserAction extends Action
{
public ActionForward perform(ActionMapping mapping,
ActionForm form, HttpServletRequest req,
HttpServletResponse res)
{
String LogName = req. getLogName() ;
String password = req. getPassword() ;
/*
取得用户请求,做相应数据库操作
*/
return (actionMapping.findForward("success"));}
}
Struts的优缺点
优点:开源、标签库、页面导航、易扩展
Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。
除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活用,能大大提高开发效率。
关于页面导航,那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通
过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着非常大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
缺点:标签库、结构复杂
Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很
Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。
Struts是一种优秀的J2EE MVC架构方式。它利用taglib获得可重用代码和抽象 Java 代码,利用ActionServlet配合l实现对整个系统导航。增强了开发人员对系统的整体把握,提高了系统的可维护性和可扩充性。
Struts标记库
Struts提供了用来封装逻辑的各种定制JSP标记,因此页面设计者可以将主要精力花在页面的可视特征上,而不必主要考虑Java语法或其它JSP语法,在下列标识库描述符中引用了Str
uts标记:
Struts-bean.tld
    使访问bean以及新bean的定义更容易,,为了实现国际化,应使用不同的属性文件
struts-html.tld
    提供显示HTML对象(例如,表单、按钮和复选框)的简便方法
struts-logic.tld
    支持逻辑构造,以便可以有条件地显示文本或者作为处理循环的结果来显示文本struts-template.tld
    支持使用在运行时可以修改的JSP模板
要在JSP文件顶部的<taglib>伪指令如下所示:
<%@ taglib uri=“struts-html. tld” prefix=“html”%>
<%@ taglib uri=“struts-bean.tld”prefix=“bean”%>
<%@ taglib uri=“struts-logic.tld”prefix=“logic”%>
JSP视窗组件所使用的 struts标记库由四类标记组成:
Bean标记:用来在JSP页中管理bean
逻辑标记:用来在JSP页中控制流程
HTML标记:用来生成HTML标记,在表单中显示数据,使用会话IDURL进行编程
模板标记:使用动态模板构造普通格式的页
一、 Bean标记
(1)标记库中定义了<bean:size>标记,用于获得MapCollection或数组的长度。
例如:
<%
    HashMap lines=new hashMap();
    Lines.put(1,Lines1);
    Lines.put(2,Lines2);
    Lines.put(3,Lines3);
    Request.setAttribute(lines,lines);
%>
<bean:size id=length name=lines>
Line Count<bean:write name=length>
(2)标记库中定义了<bean:write>标记,用来将bean的属性输送到封装的JSP页写入器。
属性mvc的三层架构
描述
Name
要进行属性显示的bean的名称
property
要显示的属性的名称。如果这个属性类有java.beans.PropertyEditor,getAsText()toString 方法会被调用
Filter
如果设置true,属性中的所有特殊HTML字符都将被转化为相应的实体引用
Scope
Bean的作用域,若没有设置,搜索范围是从页到应用程序作用域
例如:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。