Struts的MVC和简单流程

来源:互联网 发布:linux的makefile文件 编辑:程序博客网 时间:2024/05/01 20:19
今天起的很晚,下午又停了一会电,真是◎#¥%……※×,只好看看书了。总结了一下对Struts关于MVC的一些理解。把Struts标签和Form提交处理流程整理了一下。
  1. Struts实现了Controler部分,就是那个ActionServlet类,一般使用Struts都把所有的.do的请求交给这个类处理,这个类根据struts-config.xml这个配置文件来处理请求由那个Action对象来处理。要让Struts的ActionServlet类正常工作要在Web.xml中声明,初始化Struts-config.xml
    映射.do的请求
    <servlet-mapping>  <servlet-name>action</servlet-name>  <url-pattern>*.do</url-pattern></servlet-mapping><servlet>  <servlet-name>action</servlet-name>
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
      </init-param> ……</servlet>
  2. 视图是一堆Jsp文件,可以使用Struts提供的标签库。
  3. 模型,要继承ActionForm,和网页中的Form对应,简单的模型就是set/get和验证validate。然后交给Action处理。不知道Action到底属于那个部分,好像都不算。这块还是不太明白。发布LoginAction需要struts-config.xml配置一下:一个示例
    <action path="/login" type="mypack.LoginAction"
    name="loginForm" scope="session"
    input="/login.jsp"
    validate="true">
    <forward name="success" path="/hello.jsp" />
    <forward name="failure" path="/loginerror.jsp" />
    </action>
Tomcat装载流程。
使用了标签的表单:
  1. 从application.properties文件中读取文本,替换相应的标签代码
  2. 有<html:form>的标签则在session范围中查找对应的Form Bean,如果存在这样的实例,就吧From Bean中的属性映射到Form表单的输入文本框中。没有则忽略。

提交表单:

    1. Servlet/Jsp容器在web.xml文件中找到*.do的servlet-mapping:action。
    2. 根据servlet-name在servlet元素中找到对应的ActionServlet类
    3. 根据struts-config.xml中的设置,ActionServlet创建对应的Form对象,把客户提交的表单数据传给Form对象,这个对象保存在session范围内
    4. 如果该Form有validate方法则调用
      1. 如果验证失败(这里是指格式长度等不合要求)validate方法返回一个ActionErrors对象,包含一个ActionError对象
      2. ActionServlet从struts-config.xml中查找path属性符合的<action>元素,根据其中的input属性,返回该表单,如果该表单使用了<html:error>标签,则从application.properties中读出相应的错误信息。(参考上面的Action元素示例)
    5. 验证成功,validate方法返回的ActionError对象不包含任何ActionError对象。
    6. ActionServlet从struts-config.xml中查找path属性符合的<action>元素,查找<action>中type属性中的Action实例,没有则创建一个,包含以上<action>元素配置信息的ActionMapping对象,然后调用LoginAction的execute方法。
    7. execute中执行操作,再根据结果查找<action>中相应的<forward>子元素,获得ActionForward对象,返回给ActionServlet。这一步要通过自己来编码实现。
    8. ActionServlet把客户请求转发到ActionForward对象指的页面中。

     

    原创粉丝点击