actionservlet调用在actionmapping中声明的action类,创建并生成相应的actionform bean实例。然后把actionform bean传到action类;
actionservlet对action类实例调用适当的perform方法,给它传递actionform bean,actionmapping,request和response对象;
action在其perform方法里将产生处理好的业务逻辑的结果;
actionservlet接受从perform方法返回的actionforward,转发response到由actionforward指定的源(可以是一个jsp或另一个action或另一个servlet)我想问一下,actionservlet可以看到吗,像action一样能看到,或者它只是struts的原理,摸不到也看不到,还有actionform如果没有这一步的话,actionservlet会不会直接找到action类然后调用它的perform方法呢??

解决方案 »

  1.   

        你好,最近我倒是在看STRUTS 1.X,希望我的回答能使你明白一些,当然有错误理论的话,也请高手指点。
        首先ActionServlet是一个标准的HttpServlet子类,在web服务器截获指定的url 例<url-pattern>*.do</url-pattern>时,请求就被被指向ActionServlet,那么ActionServlet自然会执行其对应的doGet() 或 doPost()方法。ActionServlet在doGet() 或 doPost()方法中调用process(HttpServletRequest request,HttpServletResponse response)。在process中调用processActionPerform(request, response, action, form, mapping),当然在这之前process方法中,它会从mapping中获取你指定的action,并进行一系列操作,例如,从mapping中找对应action的form并将其填充画面带过来的值,如果没有指定form将跳过,以及一系列的初始化操作。而processActionPerform()方法就是调用你自己继承action那个类的action.execute(mapping, form, request, response)方法,这时struts就与开发者正是的关联起来。当然我只是说了大概的流程,还有许多细节都忽略了。那就得LZ自己研究了。希望所说的能对你有一些帮助。
      

  2.   

    actionservlet只是一般的servlet负责转发消息,
    可以写自己的actionservlet完成自己特定的业务。
    不会。
      

  3.   

    楼上说的很清楚了,那个servlet也可以在web.xml中找到的
      

  4.   

    你还是把struts的源代码下载下来看看吧.看配置文件,你可以发现入口是ActionServlet、
    处理的核心类你可以看RequestProcessor类,想往深抓,就看其他的相关类,看源码首先做个demo跑起来,debug看运行过程.
      

  5.   

    能不能帮我找找 我怎么找不到 ,或者告诉我哪个是??? 谢谢了,  是那个 formbean吗
      

  6.   

    大体上是这个流程,Struts有三个核心类:ActionServlet类、RequestProcessor类和ModuleConfig类。
    ActionServlet就是控制器,负责拦截所有的请求,并决定分发每一个请求,
    ModuleConfig封装着Struts应用程序的配置信息,
    RequestProcessor负责处理每一个HTTP请求。
      

  7.   

    ActionServlet是在Web.xml中定义的一个Servlet啊。