当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > JAVA > STRUTS > 正文

浅析Struts 体系结构与工作原理(2)

http://www.zk168.com.cn  招考学习网 2006-4-11 3:51:57
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
浅析Struts 体系结构与工作原理(2)

Struts体系结构中的组件


图3 (图片较大 请放大查看)


   上图3显示了 ActionServlet (Controller)、ActionForm (Form State) 和 Action (Model Wrapper) 之间的最简关系。

   体系结构中所使用的组件如下表:

ActionServlet 控制器
ActionClass 包含事务逻辑
ActionForm 显示模块数据
ActionMapping 帮助控制器将请求映射到操作
ActionForward 用来指示操作转移的对象
ActionError 用来存储和回收错误
Struts标记库 可以减轻开发显示层次的工作

Struts配置文件:struts-config.xml

   Struts配置文件struts-config.xml,我们默认可以在目录\WEB-INF\struts-config.xml找到这个文件。文件的配置包括全局转发、ActionMapping类、ActionForm bean 和JDBC数据源四个部分。

   1)配置全局转发

   全局转发用来在JSP页之间创建逻辑名称映射。转发都可以通过对调用操作映射的实例来获得,例如:
actionMappingInstace.findForward("logicalName");

   全局转发的例子:

<global-forwards>
  <forward name="bookCreated" path="/BookView.jsp"/>
</global-forwards>

属性 描述
Name 全局转发的名字
Path 与目标URL的相对路径

   2)配置ActionMapping

   ActionMapping对象帮助进行框架内部的流程控制,它们可将请求URI映射到Action类,并且将Action类与ActionForm bean相关联。ActionServlet在内部使用这些映射,并将控制转移到特定Action类的实例。所有Action类使用perform()方法实现特定应用程序代码,返回一个ActionForward对象,其中包括响应转发的目标资源名称。例如:

<action-mappings>
  <action path="/createBook" type="BookAction" name="bookForm" scope="request" input="/CreateBook.jsp">
  </action>
  <forward name="failure" path="/CreateBook.jsp"/>
  <forward name="cancel" path="/index.jsp"/>
</action-mappings>

属性 描述
Path Action类的相对路径
Name 与本操作关联的Action bean的名称
Type 连接到本映射的Action类的全称(可有包名)
Scope ActionForm bean的作用域(请求或会话)
Prefix 用来匹配请求参数与bean属性的前缀
Suffix 用来匹配请求参数与bean属性的后缀
attribute 作用域名称。
className ActionMapping对象的类的完全限定名默认的类是org.apache.struts.action.ActionMapping
input 输入表单的路径,指向bean发生输入错误必须返回的控制
unknown 设为true,操作将被作为所有没有定义的ActionMapping的URI的默认操作
validate 设置为true,则在调用Action对象上的perform()方法前,ActionServlet将调用ActionForm bean的validate()方法来进行输入检查

   通过<forward>元素,可以定义资源的逻辑名称,该资源是Action类的响应要转发的目标。

属性 描述
Id ID
ClassName ActionForward类的完全限定名,默认是org.apache.struts.action.ActionForward
Name 操作类访问ActionForward时所用的逻辑名
Path 响应转发的目标资源的路径
redirect 若设置为true,则ActionServlet使用sendRedirect()方法来转发资源

   3)配置ActionForm Bean

   ActionServlet使用ActionForm来保存请求的参数,这些bean的属性名称与HTTP请求参数中的名称相对应,控制器将请求参数传递到ActionForm bean的实例,然后将这个实例传送到Action类。例子:

<form-beans>
  <form-bean name="bookForm" type="BookForm"/>
</form-beans>

属性 描述
Id ID
className ActionForm bean的完全限定名,默认值是org.apache.struts.action.ActionFormBean
Name 表单bean在相关作用域的名称,这个属性用来将bean与ActionMapping进行关联
Type 类的完全限定名

   4)配置JDBC数据源

   用<data-sources>元素可以定义多个数据源:

属性 描述
Id ID
Key Action类使用这个名称来寻找连接
Type 实现JDBC接口的类的名称

   下面属性需要<set-property>元素定义,在Struts 1.1版本中已不在使用,但你可用<data-source>元素。例如:

<data-sources>
  <data-source id="DS1" key="conPool" type="org.apache.struts.util.GenericDataSource"
   <set-property id="SP1" autoCommit="true" description="Example Data Source Configuration"
drivermaxCount="4"
minCount="2" url="jdbc:mysql://localhost/test" user="struts" password="ghq123" />
  <data-source/>
</data-sources>

属性 描述
desciption 数据源的描述
autoCommit 数据源创建的连接所使用的默认自动更新数据库模式
driverClass 数据源所使用的类,用来显示JDBC驱动程序接口
loginTimeout 数据库登陆时间的限制,以秒为单位
maxCount 最多能建立的连接数目
minCount 要创建的最少连接数目
password 数据库访问的密码
readOnly 创建只读的连接
User 访问数据库的用户名
url JDBC的URL

   通过指定关键字名称,Action类可以访问数据源,例如:

javax.sql.DataSource ds = servlet.findDataSource("conPool");
javax.sql.Connection con = ds.getConnection();
(未完待续)
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
·浅谈谨慎原则在会计工作中的应用
·注册会计师形成审计工作底稿中的常见误区及纠正
·对我国道路照明节电反节能工作的看法和建议
·海市水利工程招标投标工作的现状及展望
·电子网络与科学工作的社会结构
·在新的形势下如何开展广电技术的科技情报工作
·论税收工作必须坚持两手抓
·秘书工作艺术谈 3
·秘书如何写单位工作报告
·秘书如何做好办公室工作(1)
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>