Struts.xml文件详解

本文深入解析Struts2框架的配置文件struts.xml结构,包括默认配置struts-default.xml的作用,以及如何通过子标签如bean、constant、include、package进行模块化配置。详细介绍了常量定义的位置与优先级,命名空间的设定及其对请求路径的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Struts.xml文件

  •    Struts.xml文件构成

如图,《Struts》标签内共有5个子标签。

1.1  struts-default.xml

  •  查看Struts的内容可知,Struts的默认包“default”是继承于"Struts-dafault"包的,struts-default包是在struts-default.xml中定义,struts-default.xml也是Struts2默认配置文件,所以Struts2每次都会自动加载 struts-default.xml文件。
  •   struts-default.xml 里定义了一大堆的常量和bean,要使用这些只需要继承这个包就行了。

  • struts-default.xml路径:struts2-core-2.3.32.jar/struts-default.xml

 

  1.2 子标签之bean 

  

  1.3 子标签之constant

  A、 Struts所有常量定义在:

 

  B、 常用常量:

struts.i18n.encoding=UTF-8                //设置请求的编码
    struts.enable.DynamicMethodInvocation = true        //是否支持动态方法的调用
    struts.configuration.xml.reload = true            //是否支持XML的自动加载
    struts.devMode = false                    //开发模式
    struts.ui.theme=xhtml                    //UI模板的设置
    struts.ognl.allowStaticMethodAccess=false        //是否允许在ONGL表达式中调用静态方法
    struts.action.extension=action,,            //STruts请求的扩展名。

  C、常量定义位置

  • 常量可以定义在4个位置:

    A、第一个就是defalut.properties里,但是我们一般都不会在这个文件里定义常量。

    B、第二个就是struts.xml中,

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

    <package name="default" namespace="/" extends="struts-default">
     <action name="xx" class="com.ActionFirst">
     <result name="index">/index.jsp</result>
     </action>
       </package>

</struts>

    C、第三个就是

  • 这个文件需手工建立,也是放在src目录下,一般用于WebWork工程

    D、第四个就是在web.xml中

 

 <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
   <init-param>
       <param-name>struts.devMode</param-name>
       <param-value>true</param-value>
   </init-param>
   
    </filter>

 

  • struts读取常量的顺序:后面的会覆盖前面的配置。就是说web.xml中配置的struts.devMode的值会覆盖掉前面ABC配置的值。

 

  1.4  子标签之include

  •   包含其他配置文件,一般用于团队合作。

  struts中多模块的设置,模块化文件。
        <include file="xxxx.xml"/>
        公用的Action放在struts.xml中,模板的配置放到模板的配置文件中。

 

 1.5  子标签之package   

  1.5.1 属性

 

  属性A、   name="default"                包名,随便取,不能重复。

 

  属性B、   namespace="/"                命名空间。

    命名空间:
    struts请求的访问路径:
    http://IP地址:端口号/工程名/命名空间/Action的名称。    
    
    struts会根据命名空间逐层进行匹配。
    <a href="<%=path%>/aa/bb/cc/dd/nameSpaceAction">命名空间示例</a>

    •         示例:

      A. 编写index.html

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <%
 6 String path = request.getContextPath();
 7 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 8 %>
 9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
11 <title>Insert title here</title>
12 </head>
13 <body>
14     <a href="<%=path%>/aa/bb/exam"> 命名空间示例</a>
15 </body>
16 </html>

 

  •  a标签跳转到“工程名/aa/bb/exam”URL,

    B、编写action类

 

 1 package com;
 2 
 3 public class ActionFirst {
 4     /**
 5      * 必须要有String的execute方法
 6      * @return
 7      */
 8     public String execute(){        
 9     
10         return "index";    
11     }
12 }

 

    C、配置struts.xml文件

 

 1 <struts>
 2     <constant name="struts.enable.DynamicMethodInvocation" value="false" />
 3     <constant name="struts.devMode" value="true" />
 4     
 5     <package name="default" namespace="/" extends="struts-default">
 6        <action name="xx" class="com.ActionFirst">
 7        <result name="index">/index.jsp</result>
 8        </action>
 9        </package>
10        
11        <package name="aa" namespace="/aa" extends="struts-default">
12            <action name="exam" class="com.ActionFirst">
13                <result name="index">/index_2.jsp</result>
14            </action>
15        </package>
16        
17 
18 </struts>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值