在web.xml里配置了struts2如下<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>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.shtml</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
但是为什么访问却总之能用.h结尾,比如:访问一个action,按照配置应该为http://127.0.0.1/login.shtml 或者 http://127.0.0.1/login.do但是在我的项目里这样访问却会报404错误,而用http://127.0.0.1/login.h访问就完全没问题了。请高手指点

解决方案 »

  1.   

    这个是struts2的。
    org.apache.struts2.dispatcher.FilterDispatcher
    不是struts1.x 的 ActionServlet
      

  2.   

    加个 
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>
    然后在
    <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
    <param-name>debug</param-name>
    <param-value>2</param-value>
    </init-param>
    <init-param>
    <param-name>application</param-name>
    <param-value>ApplicationResources</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>
      

  3.   

    servlet-mapping>
            <servlet-name>action</servlet-name>
            <url-pattern>/*.do</url-pattern>
        </servlet-mapping>url-pattern给为上面的试试
      

  4.   

    <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>
    </filter-mapping>
      

  5.   

    默认访问是*.action,楼主有没有设置过*.h的?
    或者没有把这个文件内容更新到运行容器中去。
      

  6.   

    应该是你设置了action访问后缀常量为.h,你仔细看看代码吧,看有没有
    <constant name="struts.action.extension" value=".h"/>
      

  7.   

    8楼正解!在struts.properties文件中设置struts.action.extension=shtml,do即可。