浅析Struts 体系结构与工作原理(2) ― IT技术

本文详细介绍了Struts框架的核心配置文件struts-config.xml的内容及作用,涵盖了全局转发、ActionMapping、ActionFormBean和JDBC数据源等关键配置项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源:http://www.verydemo.com/demo_c140_i45189.html

浅析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>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

   3)配置ActionForm Bean

 

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

 

....................................................................

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

   4)配置JDBC数据源

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

属性描述
IdID
KeyAction类使用这个名称来寻找连接
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"

driverClass="org.test.mm.MySQL.Driver" maxCount="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访问数据库的用户名
urlJDBC的URL

 

 

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

 

 

 

 

 

 

 

 

Javax.sql.DataSource ds = servlet.findDataSource("conPool");

javax.sql.Connection con = ds.getConnection();

 

(未完待续)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值