Struts2的xml配置文件怎么写 Struts.xml核心配置文件详解

来源:站长联盟作者:乙爱丽丝头衔:网络博主
导读:本期聚焦于小伙伴创作的《Struts2的xml配置文件怎么写 Struts.xml核心配置文件详解》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Struts2的xml配置文件怎么写 Struts.xml核心配置文件详解》有用,将其分享出去将是对创作者最好的鼓励。

Struts.xml是Struts2框架的核心配置文件,框架运行时会自动加载该文件读取相关配置,决定请求的处理流程、结果跳转规则等内容,掌握它的编写方法是使用Struts2开发的基础。

Struts2的xml配置文件怎么写 Struts.xml核心配置文件详解

Struts.xml基础结构

一个标准的Struts.xml文件首先需要声明XML文档的版本和编码,然后引入Struts2框架的DTD约束,保证配置文件的语法符合框架要求。基础结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <!-- 配置内容写在这里 -->
</struts>

核心配置标签说明

constant标签

constant标签用于配置Struts2框架的全局常量,比如开发模式、编码格式、后缀名等。常用配置示例如下:

<struts>
    <!-- 开启开发模式,修改配置后无需重启服务器 -->
    <constant name="struts.devMode" value="true" />
    <!-- 设置默认编码为UTF-8 -->
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <!-- 设置action请求的后缀为.action -->
    <constant name="struts.action.extension" value="action" />
</struts>

package标签

package标签用于管理一组相关的action配置,类似Java中的包概念,可以避免action名称冲突。它的常用属性如下:

  • name:包的名称,必须唯一,其他包可以通过该名称继承当前包
  • extends:指定当前包继承的父包,一般继承struts-default包,获得Struts2默认的功能支持
  • namespace:命名空间,用于区分不同包下的同名action,访问路径会拼接该命名空间

package配置示例:

<struts>
    <package name="userPackage" extends="struts-default" namespace="/user">
        <!-- 该包下的action配置 -->
    </package>
</struts>

action标签

action标签用于配置请求对应的处理类和方法,是Struts.xml中最核心的配置项。常用属性如下:

属性名作用
nameaction的名称,访问路径为namespace+"/"+name
class处理请求的动作类的全限定名,如果不配置则使用默认的动作类
method动作类中处理请求的方法名,默认为execute方法

action配置示例,假设有一个处理用户登录的请求:

<package name="userPackage" extends="struts-default" namespace="/user">
    <!-- 配置登录action,对应UserAction类的login方法 -->
    <action name="login" class="com.example.action.UserAction" method="login">
        <!-- 结果配置 -->
    </action>
</package>

对应的UserAction类代码结构如下:

package com.example.action;

public class UserAction {
    private String username;
    private String password;

    // 登录处理方法
    public String login() {
        if ("admin".equals(username) && "123456".equals(password)) {
            return "success";
        }
        return "error";
    }

    // getter和setter方法
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

result标签

result标签用于配置action处理请求后的结果跳转,放在action标签内部。常用属性如下:

  • name:结果名称,对应action方法返回的字符串,默认为success
  • type:结果类型,默认为dispatcher,即请求转发到JSP页面,还可以配置redirect(重定向)、redirectAction(重定向到action)等

result配置示例,完善上面的登录action配置:

<action name="login" class="com.example.action.UserAction" method="login">
    <!-- 登录成功,转发到success.jsp页面 -->
    <result name="success" type="dispatcher">/success.jsp</result>
    <!-- 登录失败,重定向到login.jsp页面 -->
    <result name="error" type="redirect">/login.jsp</result>
</action>

拦截器配置

Struts2的拦截器可以在action执行前后做一些通用处理,比如权限校验、日志记录等。首先需要在package中定义拦截器和拦截器栈,然后引用到action中。

拦截器配置示例:

<package name="userPackage" extends="struts-default" namespace="/user">
    <!-- 定义拦截器 -->
    <interceptors>
        <interceptor name="loginCheck" class="com.example.interceptor.LoginCheckInterceptor" />
        <!-- 定义拦截器栈,包含默认拦截器和自定义拦截器 -->
        <interceptor-stack name="myStack">
            <interceptor-ref name="defaultStack" />
            <interceptor-ref name="loginCheck" />
        </interceptor-stack>
    </interceptors>

    <action name="login" class="com.example.action.UserAction" method="login">
        <result name="success">/success.jsp</result>
        <result name="error">/login.jsp</result>
        <!-- 引用自定义拦截器栈 -->
        <interceptor-ref name="myStack" />
    </action>
</package>

配置注意事项

编写Struts.xml时需要注意几个常见问题:一是DTD版本要和使用的Struts2版本匹配,避免语法校验错误;二是action的class路径要写全限定名,否则框架找不到对应的处理类;三是result的路径要写对,相对路径是相对于web应用的根目录。如果配置后请求无法访问,可以开启struts.devMode常量,查看框架输出的错误信息快速定位问题。

Struts2Struts_xmlxml_configaction配置修改时间:2026-06-17 02:42:41

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。