Struts2 JSP的标准动作<jsp:forward>无法访问Action

本文介绍了一个常见的Struts2应用中404错误的问题及其解决方案。该错误通常发生在使用转发方式跳转到Action时。文章详细解释了如何通过修改web.xml中的过滤器配置来解决这一问题。

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

 发生错误: 将找不到这个资源,页面出现404的错误.

在默认情况下,过滤器只处理来自于客户端发起的请求,也就意味着当你的Struts2中核心过滤器映射的url为/*,且用转发的方式跳转到该匹配的Action时,将找不到这个资源,页面出现404的错误.

web.xml文件:

 <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

index.jsp页面

 <jsp:forward page="findPage.action"/>

解决方法:

在web.xml的核心过滤器的配置中增加其他访问渠道的过滤:

 <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  	<!-- 默认只处理客户端请求 -->
        <dispatcher>REQUEST</dispatcher>
       <!-- 增加对服务器内部转发的过滤 -->
       <dispatcher>FORWARD</dispatcher>
  </filter-mapping>


REQUEST:处理Web客户发起的请求


FORWARD:使用RequestDispatcher对象的forward()方法 或 使用 jsp:forward 动作标签转到一个Web组件/Action。
  
INCLUDE:使用RequestDispatcher对象的include()方法转到一个Web组件/Action。 
  
ERROR:使用RequestDispatcher对象跳转到“错误信息页”机制方法转到一个Web组件时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值