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

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>

你可能感兴趣的:(tomcat,jsp,Web,sturts,工作原来)