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

季_苗 发布于 2016/09/26 13:59
阅读 136
收藏 0
DWR

错误描述:

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

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

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

加载中
0
季_苗
季_苗

原因分析

如果你在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该处理的请求,让请求发送接收明确。

返回顶部
顶部