我的登录系统struts2+spring+hibernate的框架,登录窗口用了验证码。页面代码如下: <a href="#" onClick="refresh()"><img id="authImg" src="authImg" name="d" border="0" align="middle" title="看不清?点击更换验证码!"/></a>
web.xml配置下:
    <servlet>
        <servlet-name>img</servlet-name>
        <servlet-class>com.wscm.common.AuthImg</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>img</servlet-name>
    <url-pattern>/authImg</url-pattern>
    </servlet-mapping>
com.wscm.common.AuthImg这个类是肯定没问题我的,我在另一个系统中用过。
tomcat6现在启动的时候正常,我一访问那个首页,就出现如下错误
03-18 08:24:30.546 : WARN [http-8080-1] Could not find property [org.apache.catalina.jsp_file]
03-18 08:24:31.218 : WARN [http-8080-1] Could not find property [struts.valueStack]
03-18 08:24:31.234 : ERROR [http-8080-1] Could not find action or result
There is no Action mapped for namespace / and action name authImg. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:177)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:458)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.wscm.common.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:121)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
请问这是什么原因

解决方案 »

  1.   

    Could not find action or result struts2配置文件中没有给action的配置相应的返回值
    There is no Action mapped for namespace / and action name authImg. - [unknown location] namespace写的有问题,应该是路径不对吧
      

  2.   

    web.xml文件配置错误,/authImg路径没有匹配,可能是你所提供的servlet类的包不对吧
      

  3.   


    我在没有采用s2sh框架的时候是对的
      

  4.   

    struts2的过滤器和你自定义的路径冲突了..你可以把你的映射的名字加个后缀什么的就行了.比如这样
    <url-pattern>/authImg.jpg</url-pattern> 
      

  5.   

    ----页面jsp---
    <img id="authImg" src="authImg" name="d" ...../>
    ---配置xml---
    <url-pattern>/authImg </url-pattern>1.页面jsp的img的src和配置xml的url不对应.
    2.配置xml里的servlet定义的值后有空格,最好不要有,不知道有没影响,但也不怎么好吧,值后有空格.
      

  6.   

    为什么我把
       <!--  随机验证码 
        <servlet>
            <servlet-name>img</servlet-name>
            <servlet-class>com.wscm.common.AuthImg</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>img</servlet-name>
        <url-pattern>/authImg.jpg</url-pattern>
        </servlet-mapping>
     -->   
    <!-- 首页面设置 -->
     注销掉还是出同样的错误?
      

  7.   

    我也考虑过是被struts2拦截了,但又找不到原因,也不敢肯定
      

  8.   

    《struts2权威指南》里的配置就是这样的,应该没错
      

  9.   

    将mapping配置成如下形式就可以了<servlet-mapping>
         <servlet-name>img</servlet-name>
         <url-pattern>/authImg.servlet</url-pattern>
    </servlet-mapping>访问形式如下:
    http://localhost:8080/firstssh/authImg.servlet这样一定是可以了的,我已经验证过了
      

  10.   


    16楼的方法可以,我已经解决了。  我也是看的《Struts2权威指南》上的,李刚的实例没有问题,但是我自己写的验证码就出不来。按照16楼的方法我已经解决了。