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>
  • 相关阅读:
    互联网网站元素周期表
    键盘上每个键作用!!!
    推荐20个关于网站可用性及界面设计的网站
    教你用键盘打出各种符号以 “♡“ (完整版..还有其他符号)
    精选30个免费高品质PSD源文件(系列一)
    精选31个网站界面设计实践教程
    推荐20个让你学习并精通CSS的网站
    12种Javascript解决常见浏览器兼容问题的方法
    推荐3个网页设计在线配色网站
    转:推荐一个无缝背景花纹资源站AVA7 PATTERNS
  • 原文地址:https://www.cnblogs.com/yif0118/p/12688905.html
Copyright © 2011-2022 走看看