struts-config.xml
是服务器初始化的时候已经进行配置了
并不是当应用服务器收到请求时才配置的web.xml和struts没什么关系你只能在struts-config.xml及其相关的文件中进行struts的配置

解决方案 »

  1.   

    ------------------------------
    情况1:
    当应用服务器收到请求时,比如说
    http://localhost/app/login.do(当然,你的jsp页面里面可能是 html:form ..path="/login",struts会自动转换成login.do的)
    那么,服务器就会根据web.xml的设置判定
    这个login.do就是action类型的.它会去执行你编写的login.java(只是打个比方,实际上是执行.class文件)
    在这个情况下,用不著config文件
    --------------------------------------
    情况 2:
    在login.jsp
    当你点击submit时,会根据你的html:form中的path
    查找struts-config.xml文件,然后保存form中的内容,执行验证...
    最后执行login.do
    http://localhost/app/login.do
    服务器就会根据web.xml的设置判定
    这个login.do就是action类型的.它会去执行你编写的login.java(只是打个比方,实际上是执行.class文件)服务器会找然后,保存form中的内容,同时
    附:struts-config中的内容:
     <action path="/login"
             name="loginForm"         input="login.jsp"
    ><servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>application</param-name>
          .....
    </servlet>
    你的web.xml文件中一定有这么一断吧!(: good luck
      

  2.   

    以tomcat为例:启动的时候自动load struts的ActionServlet ActionServlet根据struts-config.xml得到actionMapping等信息应用服务器收到 *.do (也可以改为别的)请求时 交给ActionServlet 由它调用对应的action
      

  3.   

    web.xml配置内容:1. servlet的配置,指定了struts的配置文件struts-config.xml,及其他的一些属性
    2. 指定struts应用的前缀或后缀
    3. 标签库的配置struts-config.xml配置内容:1.数据源配置
    2.Form Bean 定义
    3.Global Forward 定义
    4.Action Mapping 定义
    5.消息源配置
    6.其它插件配置服务器启动时,Web.xml文件即被使用,ActionServlet 从Struts-config.xml读出其配置,设置struts程序运行设置。
      

  4.   

    上面几位都没明白我的意思,web.xml中一般是struts的servlet配置,如下:<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
      <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>debug</param-name>
          <param-value>3</param-value>
        </init-param>
      </servlet>  <servlet>
        <servlet-name>menushow</servlet-name>
        <servlet-class>com.foundercy.system.action.MenuShow</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>menushow</servlet-name>
        <url-pattern>/menushow</url-pattern>
      </servlet-mapping>
    </web-app>我也可以在其中添加自己的servlet声明(如上的menushow),那么当请求到来时,服务器怎么区别是请求我自己的servlet,还是struts中的(Struts-config.xml中声明的)呢?????????????????
      

  5.   

    看了楼上几位的观点,我有几个疑问:
    1:如果利用struts开发程序,然后我写了个FilterServlet,想对访问应用程序的全部Filter,请问客户端对*.do的访问是先过web.xml还上先strust-config.xml;
    2:如果在服务器端在一个a.do跳到b.do时,是否过web.xml,也就是过Filter
      

  6.   

    你可以自己定义一个servlet类型  放在web.xmlzhong!!----------------------------------
    <servlet-mapping>
        <servlet-name>Filer</servlet-name>
        <url-pattern>*.filter</url-pattern>
      </servlet-mapping>----------------------------------
    当然,别忘了定义你自己的servlet  <servlet>
        <servlet-name>filter</servlet-name>
        <servlet-class>FilerServlet</servlet-class>
        <init-param>
          <param-name>debug</param-name>
          <param-value>3</param-value>
                .....
        </init-param>
      </servlet>
    不细写了     (:
      

  7.   

    struts的ActionServlet只对能匹配 *.do url响应<servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class><servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>其它url由tomcat的jasper来处理那就是你要在web.xml中注册ActionServlet并映射的原因