如何处理dwr 和 struts2整合时的访问路径错误?

发布于 2021-12-02 02:13:45 字数 417 浏览 986 评论 1

错误描述:

若果你想在struts2中使用dwr,在所有的配置文件都写好了的情况下。

你想先进入dwr的调试界面去做调试,那么struts会在页面上抛出一个错

HTTP Status 404 - There is no Action mapped for namespace / and action name dwr.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执手闯天涯 2021-12-02 23:39:10

原因分析

如果你在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>

struts就会在页面上抛出这个错,只能说明struts的配置文件struts.xml中没有配置这个action或action配置错误。

因为struts会把所有的请求都交给struts来处理。所以你在url地址栏输入“http://localhost:8080/demo_dwr/dwr”时,

"dwr"会在struts中默认为是一个action,会按照action的方式来处理,但struts.xml文件中又没有配置这个action,

就会抛出这样的错。

  

(3)解决方案

第一种:在struts.xml中配置如下标签

<struts>

<constant name="struts.action.excludePattern" value="/dwr/*,/dwr/test/demo1"></constant>

</struts> 

 

表示让struts在处理value中的路径时将其忽略。

 

第二种:在web.xml中配置struts的url_pattern时

 <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>/struts/*</url-pattern>

 </filter-mapping>

 

 <servlet>

  <servlet-name>dwr</servlet-name>

  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>

  <init-param>

   <param-name>debug</param-name>

   <param-value>true</param-value>

  </init-param>

 </servlet>

 <servlet-mapping>

  <servlet-name>dwr</servlet-name>

  <url-pattern>/dwr/*</url-pattern>

 </servlet-mapping>

 

这样配置就不是让所有的请求都交给struts来处理,让struts处理它该处理的请求

dwr处理dwr该处理的请求,让请求发送接收明确。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文