Struts 2 的学习笔记(二) struts的配置流程和strut是2的工作原理

 配置及流程

1.       Web.xml中配置

<!-- struts2的核心过滤器  前端控制器

      作用:接管请求。将请求交给struts2来处理。

      配置时保证请求被struts2接管

      不同版本的核心过滤器不一样。2.1以前是org.apache.struts2.dispatcher.FilterDispatcher

      2.1以后org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

   -->

  <filter>

  <filter-name>struts2</filter-name>

  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

  </filter>

  <filter-mapping>

  <filter-name>struts2</filter-name>

  <url-pattern>/*</url-pattern>

  </filter-mapping>

2.       struts.xml配置文件,该配置文件位于src下,文件名不能被更改。

<struts>

<!--

      constant 常量配置

      struts.devMode 设置是否是开发模式

    -->

   <constant name="struts.devMode" value="true" />

   <!-- 设置编码 -->

   <constant name="struts.i18n.encoding" value="utf-8"/>

   <!-- 设置action的扩展名 -->

   <constant name="struts.action.extension" value="action,,do"/>

   <!--

      package表示一个包每个包下可以配置多个action  包的作用主要用来区分不同模块的配置

      不同模块配置在不同的包下

      name 是包名  在项目下唯一 通常使用模块名做为包名

      extends 表示继承 必须直接或者间接继承struts-default

      namespace 表示命名空间  命名空间和请求名直接相关 

      请求名=项目发布路径名+namespace名+action名

      namespace名称通常也和模块名相关

    -->

   <package name="default" extends="struts-default" namespace="/user">

      <!-- action 配置请求名 一个action表示对一个请求的处理

         name在同一个包下唯一 会作为请求名称 该名称会自动将请求的扩展名去掉,所以不用配置扩展名

         class 配置处理请求的类的完全限定名=包名+类名。如果不配置class默认由

         com.opensymphony.xwork2.ActionSupport来处理。

         method 配置处理方法的名称  默认由execute方法处理

         在struts2中处理方法  必须是 public的,返回值必须是String。

       -->

      <action name="hello" class="cn.sxt.action.HelloAction" method="hello">

         <!-- result配置的结果集处理  每个action中可以及配置多个result

            name表示结果集名称 和处理方法的返回值进行匹配 默认是success;

            type表示结果集类型

                dispatcher 转发-默认

                redirect 重定向

                redirectAction 重定向到另外一个action

                stream 流

                chain  表示action链

            result中填写要跳转的页面的路径

         -->

         <result name="success" type="dispatcher">/index.jsp</result>

      </action>

   </package>

   <!--

      include用于添加其他配置文件,在团队开发中使用

      不同模块一般使用不同的配置文件,在总的配置文件中加入即可

    -->

   <include file="user.xml"></include>

</struts>

3.       struts2的执行流程:

浏览器发起请求-------->服务器接收并处理请求-------->项目的web.xml中匹配过滤器-------->匹配是否有对应的action-------->生成对应的action的对象-------->调用action对象的处理方法-------->返回结果

4.       执行流程图:

Struts 2 的学习笔记(二) struts的配置流程和strut是2的工作原理

5.       详细的流程图:

Struts 2 的学习笔记(二) struts的配置流程和strut是2的工作原理