struts2从浅至深(二)详细配置 1.加载时机 2.加载顺序 3、Struts2框架提供的常量 4、xml配置文件的主要元素 5、结果类型视图(逻辑结果视图) 7、在动作类中访问Servlet的API 8、分文件编写框架配置文件

struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

      当应用被服务器加载时,Struts的配置文件就已经加载了

2.加载顺序

      default.properties------->struts-default.xml--------->struts-plugin.xml------------>struts.properties-------------->web.xml

顺序

配置文件名

所在位置

说明

1

default.properties

struts2-core-2.3.15.3.jarorgapachestruts2

不能修改

2

struts-default.xml

struts2-core-2.3.15.3.jar

不能修改

3

strtuts-plugin.xml

在struts2提供的插件jar包中

不能修改

4

struts.xml

我们的应用中

我们修改的:推荐

5

struts.properties

我们的应用中

我们修改的

6

web.xml

我们的应用中

我们修改的,可以给过滤器配置参数

        注意:

                  1、Struts2提供了两种配置的方式。一种是key=value的方式,即使用.properties文件。另一种是xml文件配置。我们推荐使用xml文件(它能描述层级关系)。

                  2、当多个配置文件中,有相同的参数,后面的会把前面的值给覆盖了。

                       struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

3、Struts2框架提供的常量

       

      a、常用的常量

                            常量定义在了default.properties配置文件中,体现形式都是key=value。所有的struts2应用都会用到这些常量。

                     常用的:

常量名

常量值

说明

struts.i18n.encoding

UTF-8

应用中使用的编码

struts.objectFactory.spring.autoWire

name

和spring框架整合有关

struts.multipart.parser

jakarta

指定文件上传用的组件

struts.multipart.maxSize

2097152

文件上传总文件大小限制:2M

struts.action.extension

action,,

能进入Struts2框架内部的url地址后缀名。多个值用逗号分隔

struts.enable.DynamicMethodInvocation

false

是否允许动态方法调用

struts.devMode

false

是否是开发模式。开发模式:改了配置文件,不需要重启。输出更多的错误信息。开发阶段建议为true。

struts.ui.theme

xhtml

页面展示用的主题

              

     b、在struts.xml中覆盖常量                                                                                                       

                   使用<constant name="" value=""></constant>元素进行覆盖

              例如:

                    struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

4、xml配置文件的主要元素

      

a、package元素

           a.1、作用:

                       在struts2的配置文件中引入了面向对象思想,使用了分包管理。易于管理动作类。便于模块化开发动作类。

           a.2、属性:

                       name:包的名称。必须写。且必须唯一。

                       extends:一般情况下需要继承struts-default包,但不是必须的。不过如果不继承的话,将无法使用struts2提供的核心功能。

                                  struts-default.xml中定义着struts-default这个包。而struts-default.xml是在我们的struts.xml加载之前加载。

                       abstract:把包声明为抽象包,抽象包就是用来被继承的。只要是没有<action>元素的包,就可以声明为抽象包。

                        namespace:名称空间。

                                      名称空间  +     动作名称  =     访问路径

namespace的默认值:

                                                 a.不写该属性

                                                 b.写了该属性,取值是一个"".

                                                 注意:默认值不是/

                                      

                        动作类的搜索顺序:

                  struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

b、action元素

 b.1、作用:

                 配置动作用的。

 b.2、属性:

                            name:动作名称

                            class:动作类全名。默认的动作类是:com.opensymphony.xwork2.ActionSupport

                                          是在struts-default.xml中定义的

                                         struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

                                          要想替换默认动作类:

                                          在应用的struts.xml中,package中加入:

                                                struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

                            method:动作类中的方法名称。默认是public String execute(){}

                                          要求:

                                                 1.public的

                                                 2.返回值必须是String

                                                 3.没有参数

                  b.3、动作类

                                    a.方式一:动作类就是一个POJO(Plain Old Java Object 原始的java对象),非常简单的javabean。

                                   b.方式二:动作类实现com.opensymphony.xwork2.Action接口。

                                          常量:给动作方法返回值用的。用常量可以使你的应用规范和统一。

常量变量名

对应的值

说明

SUCCESS

success

动作方法执行一切OK

ERROR

error

动作方法执行时遇到了异常

INPUT

input

回显

LOGIN

login

一般转向登陆页面

NONE

none

不转向任何的视图

                                    c.方式三:动作类继承com.opensymphony.xwork2.ActionSupport       推荐使用

                                                struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

             b.4、动作的访问

                优先级:绝对匹配优先。使用通配符的按照在配置文件中的先后顺序进行匹配的。

           通配符 

                    struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

5、结果类型视图(逻辑结果视图)

         前奏:该部分内容指的就是struts配置文件中的result元素的使用

      c.1、result元素

                   作用:

                     为动作指定结果视图

              属性:

                     name:逻辑视图的名称,对应着动作方法的返回值。默认值是success。

                     type:结果类型,指的就是用什么方式转到定义的页面。默认是dispatcher。

                                    struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

                 

                         dispatcher:(默认值)    使用请求转发,转向一个页面。

                         redirect:       使用重定向,转向一个页面。

                         redirectAction:注意:使用的是重定向。

                                      a.重定向到另一个相同名称空间的动作。

                                      b.重定向到不同名称空间的动作

                          chain:注意: 使用的是请求转发。

                             a.转发到另一个相同名称空间的动作。     

                                     b.请求转发到不同名称空间的动作

                 c.2: result元素中param子元素

                       在转发或者重定向到不同包下的动作时,都用到了result元素的子元素param。

                         param元素的作用:依赖注入(Dependence Injection)思想

                                   我们通过struts-default.xml中的resultTypes元素中配置可以看出, 每个结果类型视图其实都是靠一个类来实现的。

                                     而param元素就是将配置的参数,注入到该类中。

                                   调用的是对应类的setter方法进行注入的。

                                   例如:redirectAction结果视图

                          struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

                                   该类中肯定会有对actionName和namespace属性的注入方法(setter方法)。

                                                                                                                                                                                                                                                                                                                                       struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

                                    默认结果视图dispatcher

                                         struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

4、自定义结果类型

                    通过前面的内容,我们看出,其实结果类型就是一个类,这些类都实现了com.opensymphony.xwork2.Result接口。

               或者继承自该接口的实现类org.apache.struts2.dispatcher.StrutsResultSupport。

               这些类都有一个doExecute方法,用于执行结果视图。

               综上:我们也可以自己写一个结果视图。

               例子:

                            输出CAPTCHA图像的结果类型。

                            CAPTCHA(Completely Automated Public Turing Test to Tell Computers and Humans Apart 全自动区分计算机和人类的图灵测试)————>简称:验证码。

                            第一步:写一个类,实现接口或者继承接口的实现类

                        struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

                     第二步:在struts.xml文件中配置结果类型

                     struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

                         第三步:在action配置时引用

                    struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

6、全局视图和局部视图

      

            6.1、局部视图

                               struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

     

          6.2、全局视图(配置在global中)

                struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件

7、在动作类中访问Servlet的API

                第一种方式:使用ServletActionContext类

                ServletActionContext.getrequest.----------------

               第二种方式:使用实现接口的方式

         1.ServletRequestAware(request)

         2. ServletResponseAware(response)

                  implements ServletRequestAware,ServletResponseAware

8、分文件编写框架配置文件

     2、分文件编写Struts2的配置文件

struts2从浅至深(二)详细配置
1.加载时机
2.加载顺序
3、Struts2框架提供的常量
4、xml配置文件的主要元素
5、结果类型视图(逻辑结果视图)
7、在动作类中访问Servlet的API
8、分文件编写框架配置文件