导读:本期聚焦于小伙伴创作的《struts.xml配置文件详解?Struts2框架核心控制器配置指南》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《struts.xml配置文件详解?Struts2框架核心控制器配置指南》有用,将其分享出去将是对创作者最好的鼓励。

Struts2框架的运行依赖struts.xml配置文件来定义请求处理逻辑、页面跳转规则以及框架的基础行为,同时核心控制器的正确配置是框架能够正常拦截请求的前提。理解这两部分的配置逻辑是上手Struts2开发的基础。

struts.xml配置文件详解?Struts2框架核心控制器配置指南

struts.xml基础结构

struts.xml的根标签是<struts>,所有配置内容都需要放在这个标签内部。基础的struts.xml文件结构如下:

<?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>

struts.xml常用配置项

常量配置

通过<constant>标签可以修改Struts2框架的默认行为,常见的常量配置如下:

  • struts.i18n.encoding:设置请求和响应的编码,通常设置为UTF-8避免中文乱码
  • struts.devMode:开发模式开关,开启后修改配置文件会自动重载,方便调试
  • struts.action.extension:指定Struts2处理的请求后缀,默认是action,可修改为其他值

常量配置示例:

<struts>
    <!-- 设置编码为UTF-8 -->
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <!-- 开启开发模式 -->
    <constant name="struts.devMode" value="true"/>
    <!-- 处理后缀为action和do的请求 -->
    <constant name="struts.action.extension" value="action,do"/>
</struts>

包配置

Struts2通过<package>标签对配置进行分组管理,包可以继承其他包复用配置。<package>标签的核心属性如下:

属性名作用
name包的唯一标识,必填
extends继承的父包,通常继承struts-default获取默认拦截器栈
namespace包的命名空间,用于区分不同包下的同名action

包配置示例:

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

Action配置

<action>标签用于映射请求路径和处理类,核心属性如下:

  • name:请求路径的名称,和namespace组合成完整请求路径
  • class:处理请求的动作类全路径
  • method:动作类中处理请求的方法名,默认是execute

Action配置示例:

<struts>
    <package name="default" extends="struts-default" namespace="/">
        <!-- 请求/user/login.action会调用com.example.UserAction的login方法 -->
        <action name="login" class="com.example.UserAction" method="login">
            <!-- 结果配置 -->
        </action>
    </package>
</struts>

结果配置

通过<result>标签定义Action执行后的页面跳转规则,核心属性如下:

  • name:结果标识,和Action方法的返回值对应,默认是success
  • type:结果类型,默认是dispatcher转发到JSP页面,还有redirect重定向、chain转发到另一个Action等类型

结果配置示例:

<struts>
    <package name="default" extends="struts-default" namespace="/">
        <action name="login" class="com.example.UserAction" method="login">
            <!-- 返回success时转发到success.jsp -->
            <result name="success">/success.jsp</result>
            <!-- 返回error时重定向到login.jsp -->
            <result name="error" type="redirect">/login.jsp</result>
        </action>
    </package>
</struts>

Struts2核心控制器配置

Struts2的核心控制器是StrutsPrepareAndExecuteFilter,需要在web.xml中进行配置,让框架能够拦截符合规则的请求。配置步骤如下:

web.xml中配置过滤器

核心控制器本质是一个过滤器,配置示例:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!-- 配置Struts2核心控制器 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <!-- 拦截所有请求 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

配置注意事项

  • 过滤器类名需要和Struts2版本对应,2.5版本之前的核心过滤器类名不同,需要注意版本差异
  • <url-pattern>通常配置为/*,保证所有符合struts.action.extension后缀的请求都能被拦截
  • 如果项目中有其他过滤器,需要注意过滤器的执行顺序,Struts2核心过滤器一般放在最后

常见配置问题排查

配置过程中如果遇到问题,可以从以下几个方面排查:

检查struts.xml的DTD声明是否和Struts2版本匹配,版本不匹配会导致配置文件解析失败。
检查action的class路径是否正确,包名和类名拼写错误会导致找不到处理类。
检查核心过滤器的配置是否正确,特别是<url-pattern>是否覆盖了需要处理的请求。

下面是一个完整的struts.xml配置示例,包含上述所有常用配置项:

<?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>
    <!-- 常量配置 -->
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <constant name="struts.devMode" value="true"/>
    <constant name="struts.action.extension" value="action"/>

    <!-- 包配置 -->
    <package name="user" extends="struts-default" namespace="/user">
        <!-- Action配置 -->
        <action name="login" class="com.example.UserAction" method="login">
            <!-- 结果配置 -->
            <result name="success">/user/success.jsp</result>
            <result name="error">/user/login.jsp</result>
        </action>
        <action name="register" class="com.example.UserAction" method="register">
            <result name="success">/user/register_success.jsp</result>
        </action>
    </package>
</struts>

Struts2struts.xml核心控制器配置指南修改时间:2026-07-12 16:51:36

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