java之SSH框架的Struts2框架的分析

这个是根据之前写的 Java之SSH框架的Struts 来分析的

一、Struts的执行顺序

在这里插入图片描述
在这里插入图片描述
注意:后面的会覆盖前面的,如配置web.xml会覆盖struts.properties

二、package元素

package元素: 是定义一个struts的包,它是把配置文件按照面向对象的思想来管理,分模块开发。
name属性: 指向包的名称。注意:包的名称在配置文件中唯一。
extends属性: 指定当前包的父包,它是按照面向对象的思想管理的体现。
abstract属性: 把包声明为一个抽象包,抽象包就是用来被继承的,只有没有action元素的包,才能被定义为抽象包
namespace属性: 名称空间,当指定了名称空间之后,访问路径就变成了: 访问路径=名称空间+动作名称当不指定名称空间时,该属性有默认值,默认值时“”,注意,不是“/”。

  <struts>
      <!-- 设置开发模式 ,struts.devMode特点改了配置文件,不需要重启。0输出更多的错误,建议开发文件的常量值为true
         修改struts中的properties定义的常量值-->
    <constant name="struts.devMode" value="true"/> 
      <!-- 修改struts中默认的后缀名 -->
      <constant name="struts.action.extension" value="do"></constant>
      <!-- 这个包名这个随便取-->
          <package name="show" extends="struts-default">
    <action name="hello" class="test.HelloWorldAction" method="sayHello">
          <result name="success">/showhelloworld.jsp</result>
      </action>
      </package>
      </struts>

namespace属性:命名空间 如:namespace="/user"

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

改了后缀名为.abc
在这里插入图片描述
发现就会报错:
在这里插入图片描述
此时需要改为:
在这里插入图片描述
而这样也是对的:
在这里插入图片描述
下面是分析图:
在这里插入图片描述
在这里插入图片描述

名称空间的搜索顺序:
第一步:先去找对应的名称空间
在指定的名称空间下找到了,就执行第二步
在指定的名称空间下没找到,按照名称空间追溯,一直到根名称空间,只要在任何一级找到了,执行第二步
第二步:找动作名称
先在指定的名称空间下,搜索对应的动作名称,找到了就执行动作类的动作方法
在指定的名称空间下没找到对应的动作名称,前往默认的名称空间下找动作名称,注意:它只找动作名称

三、action属性

**action 元素:**用来定义动作名称,动作类和动作方法的映射,以及当出现不同情况时前往指定的结果视图
name元素: 动作的名称,和jsp页面上的请求url中的名称对于起来,注意不能写.action
class元素: 指定动作类
method元素: 指定方法类

1)创建动作类的第一种方式

/**
 * 创建动作类的第一种方式:
 * 创建一个普通的java类。
 * 它就是一个POJO,原始的老的java对象
 * Plain Old Java Object
 * @author xinbai
 */

2)创建动作类的第二种方式

/**
 * 创建动作类的第二种方式:
 * 创建一个普通类,实现Action接口,实现接口中的方法
 * @author xinbai
 *
 */

在这里插入图片描述
在这里插入图片描述

/**
 * Action接口中的常量:
 * SUCCESS    "success"     当执行成功后,前往指定位置
 * NONE        "none"        不返回任何结果视图,和return null是一样的
 * ERROR       "error"      当执行动作方法时,出现异常后,前往指定的位置
 * INPUT       "input"       数据回显
 * LOGIN       "login"       一般用于返回登录页面
 */

3)创建动作类的第三种方式

import com.opensymphony.xwork2.ActionSupport;
/**
 * 第三种方式:
 * 创建一个类,继承ActionSupport
 * 我们在开发中采取这种方式来创建我们的动作类
 * @author xinbai
 * 2020年4月8日,上午10:56:26
 */
public class Demo3Action extends ActionSupport{
//当我们在类中什么都不写,一个动作方法都不提供时,有一个默认的动作方法:execute()
}
 <!-- 访问默认的动作类 和动作方法的配置
            默认的动作类是ActionSupport的类,它是在struts-default.xml的配置文件中定义的
            修改默认动作类,我们一般不改
            <default-class-ref class="你自己的动作类"></default-class-ref>-->
                   <action  name="defaultAction">
            <result name="success">/showhelloworld.jsp</result></action>

在这里插入图片描述

参考视频:Struts框架

猜你喜欢

转载自blog.csdn.net/qq_44830627/article/details/105349656
今日推荐