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

看完就会玩struts---struts1的工作原理

2012-08-04 01:43 246 查看
Struts1的工作流程:

1、请求--*.do(找到ActionServlet)->web.xml(找到就执行第2步,否则直接报错)
2、ActionServlet会去读取struts-config.xml文件,并且会根据*.do中的*去匹配对应的 ActionForm(也就是javaBean主要用于接受请求中的信息(找到就执行第3步,否则直 接报错)

3、ActionForm会调用他的validate方法,如果返回null则执行Action否则返回inout

4、Action会调用他的execute方法,

5、最后转向forward

public abstract class ActionForm extends Object implements Serializable

1、他是所有form(javaBean)的父类;

2、他可以随意的被联系到一个或者多个ActionMappings(他可以根据key找到真实类的存在)

3、他的所有properties会被初始化,在调用Action.execute()方法之前

4、在调用Action.execute()方法之前,他的validate方法会被先调用,用于判断参数的是正确的和有效的

总结:

首先一个ActionForm就是一个javaBean,当服务器(tomcat开始工作<一旦有请求时>)服务器就会加载struts-config.xml中的<form-bean> (此处需要注意,服务器不会去加载struts-config.xml中其他的东西向Action都不会)并且开始初始化对应的<form-bean>,具体的初始化过程如下:
先调用setServlet方法,再调用reset方法,最后调用属性的get方法;当控制权交到ActionServlet手中时,ActionServlet会再次读取struts-config.xml中的信息,首先是根据客户的action找到<form-bean>中的name属性,并且利用ActionMappings获取真实的ActionForm并且执行这个类,此时ActionForm首先还是初始化不过只调用setServlet和reset方法,然后调用属性的set方法开始接收请求中的参数,最后调用validate方法测试这些参数的正确性和有效性,如果无效就会返回错误信息的对象,有效就会返回空。ActionServlet会根据ActionForm返回的值再次去读取struts-config.xml中的信息,只不过这次读取的部分是<action-mappings>,如果ActionForm的validate返回的不是null那么

ActionServlet就会找到<action>中的input属性,并且获取此属性指向的文件响应给用户,如果ActionForm的validate返回的是null那么ActionServlet就会type属性,并且开始执行此属性指向的Action,并且执行Action的execute方法,此时才开始了真正对用户请求参数的处理对参数处理玩之后,此方法产生一个ActionMapping对象,同过此对象会向ActionServlet返回一个ActionForward对象,然后ActionServlet会再次读取struts-config.xml中的信息,此时读取的是<action-mappings>下面<action>中的<forward>,ActionServlte会根据ActionForward对象中的path属性去匹配<forward>中的name属性,然后获<forward>中path指向的文件,返回给用户。
很明显在strut1中最主要的就是以下6个类:

ActionServlet:处理客户请求的servlet,完成全部流程的的控制;

ActionFrom:是一个简单的javaBean,接受客户请求的参数并且执行简单的验证;

Action:对客户请求参数的具体操作,由ActionServlet指定;

ActionMapping:是一个映射类,通过他的findForward方法可以找到struts-config中的路径跳转<forward>

ActionForward: 是一个真实执行跳转的类,通过ActionMapping法findForward方法进行实例化。

ActionErrors、ActionMessages、ActionMessage:保存所有的错误信息,可以通过<html:errors>标签进行输出。

strut配置信息说明:

基本配置

web.xml:他是服务器启动时就要加载的文件,在struts中主要的配置就是对用户请求的servlet进行配置如下:

<servlte>

<servlet-name></servlet-name>

<servlet-class></servlet-class>

</servlte>

<servlet-mapping>

<servlet-name></servlet-name>

<url-pattern>*.do</url-pattern>:此处注意一般是servlet此处配置时使用的是"/xx"这里用*.do表示接受所以的servlet请求。

</servlet-mapping>

核心配置

struts-config.xml

<struts-config>

<form-beans>

<form-bean name="" type=""/>

</form-beans>

<action-mappings>

<action attribute=""----用于和对应的form-bean配套

path=""---------此Action的对应路径

type=""---------此Action的真实包名和类名

name=""---------用于和对应的form-bean配套

parameter="methode"

scope="request"---说明Action的作用范围(request和session)

validate="false">

<forward name="success" path="" />--指出Action的跳转路径

<forward name="failure" path="" />

</action>

</action-mappings>

<message-resources parameter="" />----输出内容的保存位置

</struts-config>
本文出自 “testmore” 博客,请务必保留此出处http://testmore.blog.51cto.com/4928920/953425
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: