他调用了
<action path="/initial"
      type="hero.struts.actions.InitialAction"
      scope="request"
      validate="false">
        <forward name="initial" path="indexDef"/>
</action>
-------------------------
中的hero.struts.actions.InitialAction类,你去看这个类吧,该类的execute或perform是处理结果
很可能该方法返回的是indexDef的路径,你又要去找了。

解决方案 »

  1.   

    调用过程: 服务器接受到initial.action,符合*.action,根据
    <servlet-name>hero</servlet-name>
    <url-pattern>*.action</url-pattern>
    </servlet-mapping>
    转发给hero去处理。hero一般是创建一个RequestProcessor对象,该对象根据initial查找配置文件得到和initial匹配的配置
    <action path="/initial"
          type="hero.struts.actions.InitialAction"
          scope="request"
          validate="false">
            <forward name="initial" path="indexDef"/>
    </action>
    该类会创建一个hero.struts.actions.InitialAction对象,一个ActionMapping对象,然后把后者传递给前者的excute或perfom,接受到返回后继续走上面的路径
      

  2.   

    1、我用http://localhost:8080/打开一个现有程序的网页,它自动跳到http://localhost:8080/initial.action。这里initial.action是不是对应一个jsp文件?
    一个Servlet!是在哪里配置的呢?
    一般在web.xml我找了半天没找着2、我在web.xml文件中找到这么一段话:
    -------------------------
    <servlet-mapping>
    <servlet-name>hero</servlet-name>
    <url-pattern>*.action</url-pattern>
    </servlet-mapping> <servlet-mapping>
             <servlet-name>hero</servlet-name>
            <url-pattern>*.do</url-pattern>
    </servlet-mapping><welcome-file-list>
        <welcome-file>/IndexAction.jsp</welcome-file>
      </welcome-file-list>-------------------------
    这里是不是说以.action和.do为后缀的是同一个意思?
    都映射为一个名字叫hero的Servlet,你可以找一下这个Servlet。
    是这样的<servlet-name></servlet-name>
            <servlet-class></servlet-class>  这个就是servlet!!!
    都是指映射到一个jsp文件吗?
    Servlet3、另外我在struts-config.xml中找到这段话(不知道是不是相关的^_^):
    -------------------------
    <action path="/initial"
          type="hero.struts.actions.InitialAction"
          scope="request"
          validate="false">
            <forward name="initial" path="indexDef"/>
    </action>
    -------------------------
    谁能给偶说说这段话!
    这个是Struts里面的配置,配置一个Action。
    ------总之我的目的只有一个:就是怎么找到initial.action映射的那个文件?!谢谢!
      

  3.   

    你访问的时候,因为没有写具体页,会根据
    <welcome-file-list>
        <welcome-file>/IndexAction.jsp</welcome-file>
      </welcome-file-list>
    访问IndexAction.jsp文件,该文件内部可能是一个<html:forwor/〉之类的东西,发起二次访问。
    你说的不一定对应文件,这是一种逻辑名而已。
      

  4.   

    不知道你的英文能力如何,看一下
    Mastering Jakarta Struts
    //James Goodwill
    //Wiley Publishing, Inc.
    对struts就了解的底朝天。
      

  5.   

    这个是整个一个struts的流程问题。
      

  6.   

    楼上,进入这个版右上角不是有个“提问”嘛!点它就出来了
    -----------------------------------------------------------------------------------------
    谢谢“serf() ”、“treeroot(根根) ”,我总结一下,是不是这样的一个过程?:
    1、我输入http://localhost:8080,程序自动从web.xml配置文件搜索,找到
    <welcome-file-list>
        <welcome-file>/IndexAction.jsp</welcome-file>
      </welcome-file-list>
    于是就跳执行去IndexAction.jsp?!(问一下,假如是的话为什么是跳去执行这里?^_^)2、我打开IndexAction.jsp看了一下,就只有下面几行:
    ----------------------------
    <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
    <%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %><c:redirect url="/initial.action"/>
    ----------------------------
    这里是不是说又跳转到initial.action?!3、然后再在struts-config.xml文件中查找,找到
    <action path="/initial"
          type="hero.struts.actions.InitialAction"
          scope="request"
          validate="false">
            <forward name="initial" path="indexDef"/>
    </action>
    然后跳去执行InitialAction文件(这是个Servlet?^_^)4、我又打开InitialAction文件,主要就下面的代码:
    public class InitialAction extends AbstStrutsActionBase 
    {
      public ActionForward perform(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
        {
           ActionForward actionForward = mapping.findForward(INITIAL);
            // Create the container for any errors that occur
            ActionErrors errors = new ActionErrors(); try 
    {
        hero.interfaces.AdminSessionLocalHome projecth = (AdminSessionLocalHome)hero.interfaces.AdminSessionUtil.getLocalHome();
        
        hero.interfaces.AdminSessionLocal projectl = projecth.create();
        
        Vector projects = new Vector((Collection)projectl.getProjects());
        request.getSession(true).setAttribute("allprojects",projects);
    request.getSession(true).setAttribute("nbProjects",Long.toString(projects.size()));
        request.getSession(true).setAttribute("wsname",null);
        
    }catch(Exception e){e.printStackTrace();throw new ServletException();};

    if (!errors.empty()) {
        saveErrors(request, errors);
            }

    // Forward control to the appropriate URI as determined by the action.
    return (actionForward);
        }
        
    }----------接下来是说跳到actionForward去吧,但到底是哪里呢??
      

  7.   

    1、第一问,这是java war的配置规范,如果直接访问应用的根路径,则会找<welcome-file-list>,可以1为0个或多个文件,没有规定具体顺序,但一般是先访问第一个,如果不存在,访问下一个
    2、<c:redirect url="/initial.action"/>使用了标签库,直接跳转。
    3、这是一个配置而已,供别的类使用.这里面的使用你要读一下参考资料了,是一个复杂的过程,不过看了我说的那本书会非常清楚。
    4.正确,
      

  8.   

    最后又去找indexDef对应的action配置去了。
      

  9.   

    我现在的问题就是在
    <action path="/initial"
          type="hero.struts.actions.InitialAction"
          scope="request"
          validate="false">
            <forward name="initial" path="indexDef"/>
    </action>
    里的indexDef指什么?没找着。
    ----------
    ----------
    我在struts-config.xml里找了一下,出现indexDef的地方还有一处:
         <global-forwards>
    <forward name="initial" path="indexDef"/>
         </global-forwards>
    其它web.xml没出现过,我搜索程序所在文件夹也没有indexDef这个文件,这个indexDef到底指哪里呢???
      

  10.   

    奇怪,我怎么按struts-config.xml里提到的配置去找相应文件怎么很多没找着?比如:
    <action path="/initial"
          type="hero.struts.actions.InitialAction"
          scope="request"
          validate="false">
            <forward name="initial" path="indexDef"/>////////////////这里我没找到indexDef文件
    </action>
    <action path="/protected/role"
          type="hero.struts.actions.RoleAction"
          name="roleForm"
          scope="request"
          input="/protected/Role.jsp">////////////////这里我没找到Role.jsp文件
    </action><action path="/protected/worklist"
          type="hero.struts.actions.WorklistAction"
          scope="request"
          validate="false">
    <forward name="worklist" path="worklistDef"/>////////这里没找到worklistDef
    </action>----------怎么回事?程序本身有问题?我按照http://localhost:8080,程序转换后页面
    也打得开的呀!!怎么回事????(另外,上面的path默认根目录在哪里?哪里设置的?)