做练习的时候碰到了一个奇怪的问题 在网上查资也没解决 所以发帖求助一下
这是web.xml中struts跟urlrewrite的配置
<filter>
   <filter-name>UrlRewriteFilter</filter-name>
   <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
   <init-param>
      <param-name>logLevel</param-name>
      <param-value>WARN</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>UrlRewriteFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
   <filter-name>struts2</filter-name>
   <filter-class>
   org.apache.struts2.dispatcher.FilterDispatcher
   </filter-class>
   </filter>
  
   <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern> 
        <dispatcher>REQUEST</dispatcher> 
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>这是urlrewrite.xml的一个url重写规则
<rule>
        <note>测试</note>
        <from>/register</from>
        <to>/registerAction</to>
    </rule>这是struts.xml的action
<action name="registerAction" class="com.ssh.register.action.RegisterAction">
         <result name="success">success.jsp</result>
         <result name="faild">faild.jsp</result>
         <result name="init">register.jsp</result>
        </action>
当我在jsp中访问/register时报这个错
HTTP Status 404 - There is no Action mapped for action name registerAction/.
说找不到名字叫“registerAction/”的action 于是把action改成“registerAction/”可以了.. 查了半天资料也不知道为什么做url重写的时候会在路径后面加一个/
今天被这个问题愁死了..大家帮帮忙吧

解决方案 »

  1.   

      <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern> 
    问题就出现在这
       <filter-mapping>
           <filter-name>UrlRewriteFilter</filter-name>
           <url-pattern>/*</url-pattern>
        </filter-mapping>
      

  2.   

    <action name="registerAction" class="com.ssh.register.action.RegisterAction">
    把name="/registerAction" 加个/
      

  3.   

    这位大哥意思是我的filter-mapping顺序放错了?
      

  4.   

    就是这么解决的..但是总感觉有点怪啊 我在网上查资料 都没有贴出struts的action配置代码 所以就很奇怪 不知道其他人是怎么解决的.. 是不是我哪配置有问题?
      

  5.   

    不好意思 没仔细看 我是这么改的
    <action name="registerAction/" class="com.ssh.register.action.RegisterAction">
    这样才可以..<action name="/registerAction" class="com.ssh.register.action.RegisterAction">
    改成这样不行..还是报
    HTTP Status 404 - There is no Action mapped for action name registerAction/.
      

  6.   

    这样可以不过还有其他方法<to type="redirect">/struts/registerAction.do</to>
      

  7.   

    试过了 改成了这样
    <to type="redirect">/SSH/registerAction</to>
    也不行 改成这样之后直接报Internet Explorer 无法显示该网页..没有经过action ..
      

  8.   

    <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>*.action</url-pattern>
      </filter-mapping>
      <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.jsp</url-pattern>
      </filter-mapping>
      <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.do</url-pattern>
      </filter-mapping>
      
    <filter>
      <filter-name>UrlRewriteFilter</filter-name>
      <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
     </filter>
     <filter-mapping>
      <filter-name>UrlRewriteFilter</filter-name>
      <url-pattern>/*</url-pattern>
     </filter-mapping><struts>
    <constant name="struts.devMode" value="true"/>
    <constant name="struts.i18n.encoding" value="GBK" />
    <constant name="struts.action.extension" value="do,action"/>
    <package name="t" extends="struts-default" namespace="/">

    <action name="registerAction" class="com.action.RegisterAction">
    <result>/index.jsp</result>
    </action>
    </package>
    </struts>    
      

  9.   

    1、配置web.xml的时候,rewrite一定要在strtus2的上面。2、strtus2的filter-mapping一定要添加:<dispatcher>FORWARD</dispatcher>  
      

  10.   

    ..我就是这么配置的 这是整个的web.xml 你看一下有问题没?<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <listener>
    <listener-class>com.ssh.hibernate.HibernateUtil</listener-class>
    </listener>


        <filter>
       <filter-name>UrlRewriteFilter</filter-name>
       <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
       <init-param>
          <param-name>logLevel</param-name>
          <param-value>WARN</param-value>
       </init-param>
    </filter>

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

       <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern> 
            <dispatcher>REQUEST</dispatcher> 
            <dispatcher>FORWARD</dispatcher>
            <dispatcher>INCLUDE</dispatcher>
        </filter-mapping>
        
      
    <servlet>
         <servlet-name>dwr-invoker</servlet-name>
         <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
       <init-param>
       <param-name>debug</param-name>
       <param-value>true</param-value>
       </init-param>
       </servlet>
       <servlet>
            <servlet-name>JspSupportServlet</servlet-name>  
            <servlet-class>  
                org.apache.struts2.views.JspSupportServlet  
            </servlet-class>  
            <load-on-startup>1</load-on-startup>  
        </servlet>
      
       <servlet-mapping>
           <servlet-name>dwr-invoker</servlet-name>
           <url-pattern>/dwr/*</url-pattern>
       </servlet-mapping>
      
       <welcome-file-list>
         <welcome-file>login.jsp</welcome-file>
       </welcome-file-list>

    </web-app><to type="redirect">/struts/registerAction.do</to>这种写法会直接访问http://localhost:8080/struts/registerAction 不可能访问到...
      

  11.   

    搞不定...不用urlrewrite了 改用apache...