刚刚学struts,就开始学着做小例子。
我用eclipse创建了一个WEB工程,按书上说的把struts的包都放入相应的文件下(如jar文件入到WEB-INF/lib下),classpath也设好了。web.xml设置如下:<servlet>
     <servlet-name>actionSevlet</servlet-name>
     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
     </init-param>    
     <load-on-startup>2</load-on-startup>
   </servlet>
<servlet-mapping>
    <servlet-name>actionServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>问题是我用eclipse里面运行login.jsp,怎么都说我找不到这个资源,其它页面也都运行不了。如果注释掉servlet-mapping,login.jsp和其它页面就正常运行。好像之前有几次login.jsp可以运行,提交是login.do,可是ActionServlet不拦截请求,说找不到login.do资源。这个ActionServlet不是通过之前加截web.xml来启动,然后自动拦截请求的么。说长了点,我的问题是运行不了login.jsp,如果运行成功,要么说login.do找不到。本着学习的态度,手动加入struts,希望不要有人说我怎么不用自动加入的。

解决方案 »

  1.   

    在 struts-config.xml中配啊,一般在web.xml里面不需要配的,Eclipse自动生成的有
    例子:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><struts-config>
      <data-sources />
      <form-beans ><!-- form-beans中配formbean,type指定到具体的类 -->
      <form-bean name="loginTable" type="com.ht.struts.form.LoginTableForm"></form-bean>
      </form-beans>
      <global-exceptions />
      <global-forwards />
      <action-mappings >
      <action path="/createLogin"
         name="loginTable"  <!-- 这里的name要和上面的formbean中的name保持一致  -->
         type="com.ht.struts.action.CreateLoginAction">
                                            <!-- CreateLoginAction 是继承Action的 -->
         <forward name="error" path="/error.jsp"></forward>
     <!--通过CreateLoginAction中的execute方法的返回值mapping.findForward("success")来判断跳转的那个页面 -->
         <forward name="success" path="/success.jsp"></forward>
         </action>
      </action-mappings>
      <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
    </struts-config>
      

  2.   

    谢谢了,不过我的struts-config.xml里面有配置啊,如下:<struts-config>
      <form-beans>
          <form-bean name="LoginForm" type="src.strutsText.LoginForm"/>
      </form-beans>
      <global-forwards>
          <forward name="error" path="/WEB-INF/error.jsp"/>
      </global-forwards>
      <action-mappings>
        <action path="/login" type="src.strutsText.LoginAction" name="LoginForm">
        <forward name="welcome" path="/WEB-INF/welcome.jsp"/>
        <forward name="error" path="/WEB-INF/error.jsp"/>
        <forward name="input" path="/WEB-INF/login.jsp"/>
      </action>
    </action-mappings>
    </struts-config>问题是我注释web.xml里面的
    <servlet-mapping> 
            <servlet-name> actionServlet </servlet-name> 
            <url-pattern> *.do </url-pattern> 
        </servlet-mapping>
    运行login.jsp就没问题,加入就有说没这个页面。这是什么问题呢? 
      

  3.   

    与web.xml没有关系,不要动它里面的东西了。
    与struts-config.xml、和action和jsp有关系
      

  4.   

    非常感谢。
    web.xml是我手写的,不是自动生成的。
    那你看我struts-config.xml有问题么?
      

  5.   

      <servlet> 
              <servlet-name> actionSevlet </servlet-name> 
              <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> 
            <init-param> 
                <param-name> config </param-name> 
                <param-value> /WEB-INF/struts-config.xml </param-value> 
              </init-param>         
              <load-on-startup> 2 </load-on-startup> 
          </servlet> 
    <servlet-mapping> 
    <!--你看你这里的 servlet-name和上门的servlet-name相同么,你把这段复制过去就可以用了,你的是影射名称写错了-->
            <servlet-name> actionSevlet </servlet-name> 
            <url-pattern> *.do </url-pattern> 
        </servlet-mapping> 
    </web-app>