您的位置:首页 > 编程语言 > Java开发

Struts总结

2008-07-28 19:27 183 查看
Struts

Struts=Struts核心类+Struts配置文件+Struts标签库

Struts核心类:

ActionServlet 中央控制器

ActionForm 显示模块数据

ActionMapping 帮助控制器将请求映射到操作

ActionForward 用来指示操作转移的对象

ActionError 用来存储和回收错误

Structs配置文件:

ApplicationResources.properties 存放本地化信息和标签

Struts-config.xml 存放控制器所需的配置文件

Structs标签库:

Struts-html.tld 扩展HTML Form的jsp标签

Struts-bean.tld 扩展处理JavaBean的jsp标签

Struts-logic.tld 扩展测试属性值的jsp标签

//在struts-config.xml中,每一个Action的映射信息都通过一个<Action>元素来配置,这些配置信息在系统启动时被读入内存,

//在内存中,每一个<Action>元素都对应一个org.acache.struts.action.ActionMapping类的实例

//一个用户的请求是通过ActionServlet来处理的转发的。

Struts工作流程:

对于采用Struts框架的Web应用,在WEB应用启动时就会加载并初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放在各种配置对象中,例如:Action的映射信息存放在ActionMapping对象中。

(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。

(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。

(3)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。

(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。如果ActionForward的validate()方法返回一个包含一个或多个ActionMessage的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含用户提交表单的JSP组件。在这种情况下,不会在创建Action对象并调用Action的execute()方法。

(5)ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action.如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。

(6)Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件

(7)AcitonForward对象指向的JSP组件生成动态网页,返回给客户。

-------------------------------web.xml配置文件-----------------------------------

配置一个servlet,名字为action,类为org.apache.struts.action.ActionServlet

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>

org.apache.struts.action.ActionServlet

</servlet-class>

定义servlet的初始参数config,用来设置struts配置文件的路径

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

</servlet>

设置该servlet在web应用启动时被加载次序,数值越小越先加载,如果为负或没有设置,就在首次访问该servlet时被加载

<load-on-startup>0</load-on-startup>

配置一个servlet映射, *do表示ActionServlet只负责处理.do结尾的URL

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

----------------------------Struts-config.xml配置文件------------------------------

<struts-config>

<data-sources>

<data-source type="org.apache.commons.dbcp.BasicDataSource">

<set-property property="driverClassName" value="com.mysql.jdbc.Driver" />

<set-property property="url" value="jdbc:mysql://localhost:3306/member?characterEncoding=gb2312" />

<set-property property="username" value="root" />

<set-property property="password" value="root" />

<set-property property="minActive" value="2" />

<set-property property="maxActive" value="20" />

<set-property property="defaultAutoCommit" value="true" />

</data-source>

</data-sources>

配置数据源,<data-sources>内可设置多个<data-source>。每个<data-source>用来配置一个数据源,type属性指定该数据源的实现类,在该标签体内通过<set-property>来配置数据源的各种属性。

<form-beans>

<form-bean name="addMemberForm" type="org.apache.struts.validator.DynaValidatorForm">

<form-property name="name" type="java.lang.String" />

<form-property name="password" type="java.lang.String" />

</form-bean>

<form-bean name="loginForm" type="com.struts.form.LoginForm"/>

</form-beans>

配置ActionForm Bean,在<form-beans>中可以有多个<form-bean>。<form-bean>用来设置ActionForm Bean。<form-bean>共有两个属性:name(为当前的ActionForm Bean指定一个供访问的名字),type(指出当前的ActionForm Bean的完整类)。如果要配置动态ActionForm 的话,可以使用<form-property>来设置表单的属性,<form-property>共有3个属性:name(表单属性的名称),type(表单属性的值的类型),initial(该属性的初始值)

<global-exceptions>

<exception key="global.error" path="/err.jsp" scope="request" type="java.sql.SQLException"/>

</global-exceptions>

配置全局异常处理,key(消息资源文件中定义的消息key),path(异常发生时的转发路径),scope(指定ActionMessage实例存放的范围),type(所需处理的异常类名)

<global-forwards>

<forward name="index" path="/index.jsp" />

<forward name="add" path="/addMember.jsp" />

</global-forwards>

配置全局转发,name(转发路径的逻辑名),path(转发或重定向的URI,以"/"开头),redirect(请求转发:true,重定向:false)

<action-mappings>

<action attribute="loginForm" input="/login.jsp" name="loginForm" path="/login" scope="request" type="com.struts.action.LoginAction">

<forward name="success" path="/index.jsp"/>

</action>

</action-mappings>

<action>用于配置一个Action,在<action>中可使用<forward>来为该Action设置一个请求转发。<action>的属性包括:

attribute(设置与当前Action相关联的ActionForm Bean的名称),input(指定包含输入表单的URL路径,表单验证失败时,请求会被转发到该URL中),name(指定一个在<form-bean>中定义过的该Action关联的名字),path(指定访问Action的路径,以"/"开头),scope(指定ActionForm Bean的存在范围),type(指定Action类的完整类名),vaildate(指定是否要先调用ActionForm Bean的vaildate()方法,默认为true)

<message-resources parameter="com.struts.ApplicationResources" />

为struts框架设置一个消息资源绑定

</struts-config>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: