zoukankan      html  css  js  c++  java
  • 【java框架】Struts2(2) -- Struts2配置

    1.   Struts2配置项细节

    1.1.导入外部xml文件

    在struts.xml文件中使用<include>标签,file属性上引入外部的.xml文件。

    example.xml配置中又分隔了另外一个action,package一般不同。具体如下:

    这样做的目的是为了拆分struts.xml中过多的action及杂乱的package包。

    1.2.package包的配置

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
        <!--package:包,包的作用是进行模块化管理;
            name:代表包名(必需写,且唯一),在整个配置中(包含其它的xml)名字是唯一的;
            namespace:代表包层级的路径,
            外部访问路径:http://ip地址<:端口>/<上下文路径>/namespace/action的名称
            extends(继承):它继承自一个父包,这个父包的名字叫做struts-default
            abstract:代表当前包是抽象的包(就是用来让别人继承的,在struts-default.xml中就有这种包-->
      <package name="default" namespace="/extra" extends="struts-default">
            <action name="index" class="cn.yif.action.UserAction" method="execute">
                <result name="success" type="dispatcher">
                   /success.jsp
                </result>
            </action>
      </package>
    </struts>

    具体访问请求如下:

    注意:

    ①    同一个包下面的action名称是不能重复的,不同包下的action可以重复;

    ②    包的名称不能够重复;

    ③    包的命名空间不能够重复。

    1.3.package包的查找过程

    对应到struts.xml配置中,访问路径主要是在packageNameSpace和actionName上,如下以:http://localhost/system/abc/hello的访问为例,这里会把url分为两部分,

    packageNameSpace:/system/abc,actionName:/hello。

    这里首先会通过packageNameSpace在配置文件中查找对应的<package>标签,如果没有找到那么就让路径退一级,即/system进行查找,如果找到,那么就在该包中查找对应的<action>,不管有没有找到对应的<action>都不会再次进行查找。

    最后找到”/”,这里也是一个包,表示根包,会在根包中继续进行查找。

    注意:以上流程,如果所有的包中都没有找到对应<action>,那么都会在默认的包中<package namespace="">查找;

    查询过程分析,举例说明如下:

    现在我在浏览器上的路径是:/path1/path2/path3/hello

    我们需要把这个看做两个部分:

    Package路径部分: /path1/path2/path3

    Action部分:hello                                                            

    查询的时候先找路径:

     /path1/path2/path3 没找到会找 /path1/path2

     /path1/path2 没找到会找 /path1

     /path1 没找到会找到根包 /

    注意:路径部分找不到时才会到上层路径中找,如果找到了就不会再向上查找了;找到路径后找Action;Action找到直接使用,找不到会尝试找默认default包中的默认Action(在default.xml文件中)

    namespace="/":代表一个根包;

    namespace="":代表一个默认包;

    1.4.Struts2配置文件优先级

    Struts2框架按照如下顺序加载struts2配置
    default.properties 该文件保存在 struts2-core-2.3.7.jar 中 org.apache.struts2包里面
    我们配置中很多常量都在这里面
    struts-default.xml 该文件保存在 struts2-core-2.3.7.jar
     我们学习的阶段,可以来这里查看很多配置的方式
    struts-plugin.xml 该文件保存在struts-Xxx-2.3.7.jar 这里面是一些插件
    上面三个配置文件,是Struts2默认的配置文件,我们不能够对修改它
    struts.xml 该文件是web应用默认的struts配置文件
    struts.properties 该文件是Struts的默认配置文件(一般不写在这里面)
    web.xml 该文件是Web应用的配置文件(一般不用)
    如果多个文件配置了同一个struts2 常量,则后一个文件中配置的常量值会覆盖前面文件配置的常量值

    上述内容前面三种jar包,不允许修改,后面三种可以自己进行修改。

    配置文件的优先级:都是从上往下优先级依次递增,越往下优先级越高

    1.5.Struts2常量配置

    在default.properties中可以找到我们的常量配置。

    Struts2.xml文件中常用的常量配置:

    <!--开发模式;修改配置文件不需要重启服务器-->
    <!--指的struts.xml,其它的配置文件修改依然还是需要重启-->
    <!--自动重新加载配置文件,不一定会绝对成功。-->
    <!--struts.devMode = true;-->
    <constant name="struts.devMode" value="true" />
    <!--系统使用编码-->
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <!--上传文件大小(byte)-->
    <constant name="struts.multipart.maxSize" value="2097152" />
    <!--默认的后缀名-->
    <constant name="struts.action.extension" value="action,do,," />

    1.6.Struts2默认配置

    ①    <action>中的class默认class是继承于struts-default包中的<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />,实际中不写默认使用该配置;

    ②    <action>中的method默认配置是execute

    ③    <result>标签中的name默认配置是success

    ④    <result>标签中的type默认配置是dispather

    <package name="default" namespace="/" extends="struts-default">
    <!-- action中哪些配置是默认配置,可以不写?
       method是可以不写的,默认是execute 
       class是可以不写的,默认的是找的是(这个我们自己是可以改的)
       <default-class-ref class="com.opensymphony.xwork2.ActionSupport"/>在struts-default 中可以找到
        name可以不写嘛?这个是必需的
        result中哪些配置是默认配置,可以不写?
        name:可以不写,默认的是success
        type:可以不写,默认的类型是dispatcher(我们也可以改的)-->
    <action name="const">
        <result>/success.jsp</result>
    </action>
    </package>
  • 相关阅读:
    疫情环境下的网络学习笔记 python 5.8 数据库入门终章
    疫情环境下的网络学习笔记 python 5.7 navicat数据库,例题,sql注入
    疫情环境下的网络学习笔记 python 5.6 暂时看看
    疫情环境下的网络学习笔记 python 5.5 MYSql 表关系,外键
    疫情环境下的网络学习笔记 python 5.4 数据库基础
    疫情环境下的网络学习笔记 python 4.30 初识数据库
    疫情环境下的网络学习笔记 python 4.29 网络小项目
    XJOI 夏令营501-511测试11 游戏
    XJOI 夏令营501-511测试11 统计方案
    CF1197D Yet Another Subarray Problem
  • 原文地址:https://www.cnblogs.com/yif0118/p/12688905.html
Copyright © 2011-2022 走看看